Jakub Konka
96556ce8b8
zld: port over a few more bits from ld64
...
* UTF16 gets its own section, `__TEXT,__ustring`
* TLV data and bss sections have to aligned to the same max alignment
according to Apple rdar comment in the latest ld64
2021-05-04 13:09:32 +02:00
Jakub Konka
1867c3c34c
zld: disable most logs
2021-05-04 13:09:32 +02:00
Jakub Konka
9e11f27c41
zld: build updated macho backend
2021-05-04 13:09:32 +02:00
Jakub Konka
00c3d57a51
zld: rewrite symbol allocations
2021-05-04 13:09:32 +02:00
Jakub Konka
fcd57f0857
zld: resolve GOT loads and stubs
2021-05-04 13:09:32 +02:00
Jakub Konka
68ebc7cba0
zld: rewrite symbol resolution
2021-05-04 13:09:32 +02:00
Jakub Konka
86ab6ca56c
zld: rewrite Object to include pointers to Symbols
2021-05-04 13:09:32 +02:00
Jakub Konka
4ec6d174ad
zld: new approach at handling static inits
2021-04-24 08:13:53 +02:00
Jakub Konka
b00d08b667
zld: add temp debug info fix by setting mtime=0
2021-04-24 08:13:53 +02:00
Jakub Konka
b03983b450
zld: analyze static initializers
2021-04-24 08:13:53 +02:00
Jakub Konka
4f7765de7c
zld: common section should be writable
2021-04-24 08:13:53 +02:00
Jakub Konka
d64c76e8f1
zld: fix parsing of weak symbols
2021-04-20 16:55:32 +02:00
Jakub Konka
7bc6554a58
zld: map __DATA,__common as __DATA_CONST,__common
2021-04-20 16:55:32 +02:00
Jakub Konka
e5b83056ae
zld: resolve symbols as globals before resolving locals
2021-04-20 16:55:32 +02:00
Jakub Konka
8943a0aaaa
zld: dedup initializers and finalizers
2021-04-20 16:55:32 +02:00
Jakub Konka
3e73a3c29b
zld: treat priv extern as weak symbol
2021-04-20 16:55:32 +02:00
Jakub Konka
461543a5fd
zld: fix symbol resolution from interdep archives
...
Fixes symbol resolution if an archive occurring later in the linker
line depends on a object embedded within the archive that occurred
before.
2021-04-13 13:36:08 +02:00
Jakub Konka
a5bbc66f10
zld: cleanup redundant changes
2021-04-13 10:56:03 +02:00
Jakub Konka
db30033de2
zld: rebase to new naming conv for aarch64
2021-04-13 10:56:03 +02:00
Jakub Konka
1119970d22
zld: add x86_64 relocs
2021-04-13 10:56:03 +02:00
Jakub Konka
b1f9db75f3
zld: save locals per TU
2021-04-13 10:56:03 +02:00
Jakub Konka
3b7c9dd6bd
zld: differentiate between static and global in stabs
2021-04-13 10:56:03 +02:00
Jakub Konka
717d382871
zld: streamline tags for Symbol
2021-04-13 10:56:03 +02:00
Jakub Konka
b377e0b370
zld: fix indirect symtab
2021-04-13 10:56:03 +02:00
Jakub Konka
b0a4e1fa46
zld: fix rebase vs bind for GOT entries
2021-04-13 10:56:03 +02:00
Jakub Konka
6e3f82ef28
zld: fix parsing debug info
2021-04-13 10:56:03 +02:00
Jakub Konka
65c27d51f6
zld: limit exports to just main entrypoint
2021-04-13 10:56:03 +02:00
Jakub Konka
421102ba72
zld: move parsing debug info into object
2021-04-13 10:56:03 +02:00
Jakub Konka
dc7cff8ebc
zld: add prelim support for locals
2021-04-13 10:56:03 +02:00
Jakub Konka
23bb6fa9f4
zld: flush MachO
2021-04-13 10:56:03 +02:00
Jakub Konka
db44a7803f
zld: resolve target addresses for relocs
2021-04-13 10:56:03 +02:00
Jakub Konka
b667fe2c62
zld: resolve stubs and GOT entries
2021-04-13 10:56:03 +02:00
Jakub Konka
46cc214f2d
zld: migrate parts of main to new relocs
2021-04-13 10:56:03 +02:00
Jakub Konka
6a866f1a96
zld: preprocess relocs on arm64
2021-04-13 10:56:03 +02:00
Jakub Konka
4e676ecbb5
zld: allocate addresses for global symbols
2021-04-13 10:56:03 +02:00
Jakub Konka
d5c2f8ed32
zld: store a single global symtab
2021-04-13 10:56:03 +02:00
Jakub Konka
1b5bceec91
zld: start work on reloc preprocessing
2021-04-13 10:56:03 +02:00
Jakub Konka
04659f5b82
zld: allocate segments based on worst-case and upper-limit
2021-04-13 10:56:03 +02:00
Jakub Konka
116ea1bf2c
zld: assume remaining undefs are from libSystem
2021-04-13 10:56:03 +02:00
Jakub Konka
b0105029ca
zld: refactor object and archive parsing
2021-04-13 10:56:03 +02:00
Jakub Konka
988b184d03
zld: redo symbol resolution in objects
...
Store only globals and undefs at the linker level, while all locals
stay scoped to the actual object file they were defined in. This is
fine since the relocations referencing locals will always be resolved
first using the local symbol table before checking for the reference
within the linker's global symbol table.
This also paves the way for proper symbol resolution from within static
and dynamic libraries.
2021-04-13 10:56:03 +02:00
Andrew Kelley
f75cdd1acd
Merge pull request #8470 from ziglang/stage2-start
...
stage2: blaze the trail for std lib integration
2021-04-09 10:15:46 -07:00
Luuk de Gram
eaaf75c157
Fix memory cleanup and update unplugging to avoid infinite loop
2021-04-09 09:24:52 +02:00
Andrew Kelley
61b868f9a5
stage2: simplify Decl src_node field
...
Also fix "previous definition here" error notes to be correct.
2021-04-08 20:37:19 -07:00
Luuk de Gram
ff5774d93d
Refactor link/wasm.zig to use offset table
...
This refactor inserts an offset table into wasm's data section
where each offset points to the actual data region.
This means we can keep offset indexes consistant and do not
have to perform any computer to determine where in the data section
something like a static string exists. Instead during runtime
it will load the data offset onto the stack.
2021-04-08 22:47:08 +02:00
Luuk de Gram
47f3642788
Cleanup
2021-04-08 22:47:08 +02:00
Luuk de Gram
9fd1dab582
Handle incremental compilation correctly
2021-04-08 22:47:08 +02:00
Luuk de Gram
1bd5552fc1
Calculate data length to ensure correct pointer offsets
2021-04-08 22:47:08 +02:00
Luuk de Gram
00b2e31589
Basic "Hello world" working
2021-04-08 22:47:08 +02:00
joachimschmidt557
d7a89f9876
stage2 AArch64: Add conditional branch instructions
2021-04-08 13:39:11 -07:00