Jakub Konka
a1b8545265
coff: remove unused function
2022-09-10 00:59:46 +02:00
Jakub Konka
0824808444
macho: refactor direct use of locals container in favour of helpers
2022-09-10 00:58:16 +02:00
Jakub Konka
485d8819b3
aarch64: update codegen to using a global index rather than local index
2022-09-10 00:57:54 +02:00
Jakub Konka
fc5a6e0e32
x86_64: combine got_load, direct_load and imports_load into linker_load MCV
2022-09-10 00:18:39 +02:00
Jakub Konka
d8f2103545
macho+coff: return index into global table from getGlobalSymbol
2022-09-09 23:30:31 +02:00
Jakub Konka
bac065c7cf
coff: use global accessor abstractions from MachO
2022-09-09 22:29:50 +02:00
Jakub Konka
8d44e03161
macho: use globals free list like in COFF linker
2022-09-09 22:10:27 +02:00
Jakub Konka
56b96cd61b
Merge pull request #12772 from ziglang/coff-basic-imports
...
coff: implement enough of the incremental linker to pass behavior and incremental tests on Windows
2022-09-09 13:08:58 +02:00
Jakub Konka
5006fb6846
macho: fix compilation for 32bit targets
2022-09-09 08:30:27 +02:00
Motiejus Jakštys
a833bdcd7e
[ld] add --print-* for diagnostics
...
This adds the following for passthrough to lld:
- `--print-gc-sections`
- `--print-icf-sections`
- `--print-map`
I am not adding these to the cache manifest, since it does not change
the produced artifacts.
Tested with an example from #11398 : it successfully prints the resulting
map and the GC'd sections.
2022-09-08 22:30:32 -04:00
Jakub Konka
8378cde743
macho: prefill any space between __DATA and __LINKEDIT with 0s if required
...
If there are zerofill sections, the loader may copy the contents of
the physical space in file directly into memory and attach that to
the zerofill section. This is a performance optimisation in the loader
but requires us, the linker, to properly zero-out any space between
__DATA and __LINKEDIT segments in file. This is of course completely
skipped if there are no zerofill sections present.
2022-09-09 00:01:22 +02:00
Luuk de Gram
ab4b26d8a6
Merge pull request #12770 from Luukdegram/wasm-dwarf
...
wasm-linker: implement linking debug-information
2022-09-08 16:57:23 +02:00
Veikka Tuominen
6a62a15ecd
Merge pull request #12773 from Vexu/stage2-fixes
...
Sema: fix UAF in zirClosureGet
2022-09-08 16:43:54 +03:00
Jakub Konka
0ae2ea671b
wasm: temporarily save curr file pointer before pwriting on Win
...
This is a temporary workaround to an unclear platform-dependence
behavior we have in libstd for `std.fs.File` abstraction. See
https://github.com/ziglang/zig/issues/12783 for more information.
2022-09-08 14:29:54 +02:00
Veikka Tuominen
c7e45aebaf
llvm: handle pointers in packed structs in more places
...
Closes #12776
2022-09-08 12:51:40 +03:00
Martin Stuurwold
a7661f115d
NativeTargetInfo.zig: fix typo
2022-09-08 01:53:32 -04:00
Veikka Tuominen
44b9a1d031
translate-c: use correct name for failDecl
...
Closes #12737
2022-09-08 01:00:19 +03:00
Veikka Tuominen
99826a2ba8
Sema: fix UAF in zirClosureGet
...
Previously if a decl failed its capture scope would be deallocated and
set to undefined which would then lead to invalid dereference in
`zirClosureGet`. To avoid this set the capture scope to a special
failed state and fail the current decl with dependency failure if
the failed state is encountered in `zirClosureGet`.
Closes #12433
Closes #12530
Closes #12593
2022-09-08 00:37:11 +03:00
Veikka Tuominen
37afab2add
Sema: preserve alignment of const decl pointers
...
Closes #12769
2022-09-08 00:37:11 +03:00
Veikka Tuominen
0fa80e66b7
Sema: correct types in @memset and @memcpy
...
Closes #12750
2022-09-08 00:37:11 +03:00
Jakub Konka
b98b3252be
revert part of 945111ae92c28f8ad642a64af4dc83acd3bef4a5
2022-09-07 23:18:57 +02:00
Jakub Konka
0e152b76ac
tests: force LLD off for stage2 backends until auto-select deems worthy
2022-09-07 23:16:42 +02:00
Jakub Konka
c4d297b1af
test-cases: add missing incremental x86_64-windows test cases
2022-09-07 22:42:59 +02:00
Jakub Konka
a226aef36c
test-cases: enable stage2 tests on Windows
2022-09-07 22:42:59 +02:00
Jakub Konka
678e07b924
macho+wasm: unify and clean up closing file handles
2022-09-07 22:42:59 +02:00
Jakub Konka
639237c7b4
macho: set file instance in linkOneShot only if not already set
2022-09-07 22:42:59 +02:00
Jakub Konka
8ef1c62f2e
macho: properly close file handles owned by the linker in deinit()
2022-09-07 22:42:59 +02:00
Jakub Konka
215fce8c51
coff: fix tracking of got and import entries; free relocs in update* fns
2022-09-07 22:42:59 +02:00
Jakub Konka
99c2cb72e8
coff: track globals in contiguous array to allow for tombstones
2022-09-07 22:42:59 +02:00
Jakub Konka
f3e4e44a2b
coff: fix memory leak in incorrectly disposing of globals table
2022-09-07 22:42:58 +02:00
Jakub Konka
945111ae92
enable testing of x86_64-windows-gnu using self-hosted backend and linker
2022-09-07 22:42:58 +02:00
Jakub Konka
7b8cc599d9
coff: use more generous initial memory sizes for sections
2022-09-07 22:42:58 +02:00
Jakub Konka
16ca47b9b8
coff: remove redundant bits and clean up
2022-09-07 22:42:58 +02:00
Jakub Konka
2b373b0579
coff: grow section in virtual address space when required
2022-09-07 22:42:58 +02:00
Jakub Konka
9116e0f746
coff: find new file space for a section (file offsets)
2022-09-07 22:42:58 +02:00
Jakub Konka
79e51c5e4b
coff: differentiate between file space and VM space for alloc
2022-09-07 22:42:58 +02:00
Jakub Konka
08f6546c84
coff: create a helper for allocating sections
2022-09-07 22:42:58 +02:00
Jakub Konka
f1bdf3f62f
coff: fix writing strtab to PE image file
2022-09-07 22:42:57 +02:00
Jakub Konka
467d69c68a
x86_64: fix SystemV calling convention
2022-09-07 22:42:57 +02:00
Jakub Konka
56a131d27a
test-cases: fix compiler error locations for hello world with updates
2022-09-07 22:42:57 +02:00
Jakub Konka
66bad3eaaf
coff: mark relocations dirty when target atoms change
2022-09-07 22:42:57 +02:00
Jakub Konka
1e2a2d6fad
coff: fix bug in lowerUnnamedConst
2022-09-07 22:42:57 +02:00
Jakub Konka
423f424c27
libstd: use windows.GetStdHandle() with stage2_x86_64 backend for now
2022-09-07 22:42:57 +02:00
Jakub Konka
e0167ae0e3
x86_64: allow for any index register in complex SIB encodings
...
This relieves register pressure, and reduce generated code size
(since now we can use the same index register for both `mov_scale_src`
and `mov_scale_dst` MIR instructions).
Fix lowering of ModRM + SIB encodings where index register is extended
- previously, we would carelessly ignore the fact generating incorrect
encodings.
2022-09-07 22:42:57 +02:00
Jakub Konka
619d82234e
x86_64: clean up return registers for unspecified cc
2022-09-07 22:42:57 +02:00
Jakub Konka
28f525baa4
x86_64: handle ptr_stack_offset for blocks
2022-09-07 22:42:56 +02:00
Jakub Konka
1d57b347e9
x86_64: clean up logging
2022-09-07 22:42:56 +02:00
Jakub Konka
b9c31a8703
x86_64: refactor cond_br with canonicaliseBranches helper
2022-09-07 22:42:56 +02:00
Jakub Konka
c0e288c782
x86_64: implement canonicalising branches in switch expression
2022-09-07 22:42:56 +02:00
Jakub Konka
3a4c69c018
x86_64: implement Windows x64 calling convention
2022-09-07 22:42:56 +02:00