Andrew Kelley
c8fcd2ff2c
MachO: update to new std.io APIs
2025-07-07 22:43:52 -07:00
Jacob Young
ba53b14028
x86_64: remove linker references from codegen
2025-06-12 13:55:41 +01:00
mlugg
0fe3fd01dd
std: update std.builtin.Type fields to follow naming conventions
...
The compiler actually doesn't need any functional changes for this: Sema
does reification based on the tag indices of `std.builtin.Type` already!
So, no zig1.wasm update is necessary.
This change is necessary to disallow name clashes between fields and
decls on a type, which is a prerequisite of #9938 .
2024-08-28 08:39:59 +01:00
Jakub Konka
96441bd829
macho: update codegen and linker to distributed jump table approach
2024-08-17 08:14:38 +02:00
Jakub Konka
8541119e9b
macho: handle empty string in ZigObject.getString
2024-07-22 13:35:55 +02:00
Jakub Konka
06a0da3e8a
macho: cache string len
2024-07-22 12:06:02 +02:00
Jakub Konka
2b84592858
macho: run more things in parallel
2024-07-22 12:06:02 +02:00
Jakub Konka
90c54f1eb6
macho: fix symbol visibility merging logic
2024-07-18 09:13:08 +02:00
Jakub Konka
174de37cef
macho: fix compile errors
2024-07-18 09:13:08 +02:00
Jakub Konka
b9bac32a25
macho: migrate Atom and Symbol
2024-07-18 09:13:08 +02:00
Jakub Konka
434e69482e
link/macho: dedup literals in objects and internal object file
2024-05-23 12:04:17 +02:00
Jakub Konka
9fc1685c1c
macho: make atom address relative wrt defining section
2024-02-03 09:28:30 +01:00
Jakub Konka
6337ce16ae
macho: do not allocate input files in full
2024-01-28 00:40:50 +01:00
Jakub Konka
508ff1dd14
macho: add misc fixes targeting macos 11
2024-01-24 12:34:42 +01:00
Jakub Konka
8f74d2519f
macho: resolve relocs pointing at __got_zig
2024-01-24 12:34:41 +01:00
Jakub Konka
8c578ba02c
macho: add __zig_got section implementation
2024-01-24 12:34:41 +01:00
Jakub Konka
bd9d8bd462
macho: create Atom for Decl in ZigObject
2024-01-24 12:34:41 +01:00
Jakub Konka
9509fadbe3
macho: split symbol.flags.got into needs_got and has_got
2024-01-24 12:34:41 +01:00
Jakub Konka
6d0ba6dd10
macho: introduce ZigObject
2024-01-24 12:34:40 +01:00
Jakub Konka
3968aea8ec
macho: write to file
2024-01-24 12:34:39 +01:00
Jakub Konka
0c171afab0
macho: parse an input object file!
2024-01-24 12:34:38 +01:00
Jakub Konka
2f94dc939e
macho: copy over new implementation sources from zld
2024-01-24 12:34:38 +01:00
Jakub Konka
54a403d4ff
zld: replace parsed reloc with a simple wrapper around macho.relocation_info
2021-07-16 17:18:53 +02:00
Jakub Konka
f8678c48ff
zld: reuse string table for symbol names
...
rather than manage allocs separately per symbol.
2021-07-15 18:49:47 +02:00
Jakub Konka
ec874a9b2b
zld: move tracking binding for proxies into TextBlock
...
which is the source of binding rather than its target. That is,
we now track by source.
2021-07-15 18:49:47 +02:00
Jakub Konka
0135b46659
zld: remove StringTable abstraction
2021-07-15 18:49:47 +02:00
Jakub Konka
de30a704b1
zld: map [section addr, first symbol) to a tracked TextBlock
...
which applies exclusively to x86_64-macos.
2021-07-15 18:49:47 +02:00
Jakub Konka
0cc4938419
zld: re-enable all of linker after complete rewrite
2021-07-15 18:49:47 +02:00
Jakub Konka
7aeedc0912
zld: allocate TextBlocks
...
temporarily by iterating over all defined TextBlocks. However,
once we merge this with MachO incremental, updates will be done
at the point of creation and/or update.
Also, fix mining TLV knowledge for working out TLV pointers.
2021-07-15 18:49:47 +02:00
Jakub Konka
e524f43a6f
zld: save rebase and TLV offset as part of TextBlock
...
instead of as part of the Symbol. This seems to be more
optimal way of handling dyld ops in presence of no splittable
input sections in object files.
2021-07-15 18:49:47 +02:00
Jakub Konka
555b66c255
zld: move should_rebase logic into Symbol
2021-07-15 18:49:47 +02:00
Jakub Konka
54888c6f46
zld: create TextBlocks for tentative definitions
...
and fix the links in the `TextBlock`s linked list!
2021-07-15 18:49:47 +02:00
Jakub Konka
7b4063d558
zld: convert section in linked list of TextBlocks
2021-07-15 18:49:47 +02:00
Jakub Konka
669ac92af0
zld: fix ast errors
2021-07-15 18:49:47 +02:00
Jakub Konka
3bd9f38017
zld: reenable entire linker in the new scheme
...
without the stabs... They are tricky and need a bit more work.
2021-07-15 18:49:47 +02:00
Jakub Konka
989639efba
zld: coalesce symbols on creation
2021-07-15 18:49:47 +02:00
Jakub Konka
ee6e25bc13
zld: add Symbol.Stab and move nlist creation logic there
2021-07-15 18:49:46 +02:00
Jakub Konka
2b3bda43e3
zld: abstract Symbol creation logic
2021-07-15 18:49:46 +02:00
Jakub Konka
eca12b74b8
zld: recurse dylibs reexports when defined and desired
2021-06-28 15:14:50 +02:00
Jakub Konka
264f5f4544
Apply AST fixes
2021-06-24 23:08:24 +02:00
Jakub Konka
3cb6b6bd90
zld: merge Stub with Dylib struct
...
After giving it more thought, it doesn't make sense to separate
the two structurally. Instead, there should be two constructors
for a Dylib struct: one from binary file, and the other from a stub
file. This cleans up a lot of code and opens the way for recursive
parsing of re-exports from a dylib which are a hard requirement for
native feel when linking frameworks.
2021-06-24 18:57:04 +02:00
Jakub Konka
52a9d3f037
zld: clean up memory management and refactor
2021-06-24 18:56:48 +02:00
Jakub Konka
1ff3ebffa3
zld: handle dynamic binding of proxies for objc correctly
2021-06-24 18:56:41 +02:00
Jakub Konka
bc78b02c04
zld: introduce Stub.zig which represents parsed stub file
...
Instead of trying to fit a stub file into the frame of a Dylib struct,
I think it makes more sense to keep them as separate entities with
possibly shared interface (which would be added in the future).
This cleaned up a lot of logic in Dylib as well as Stub. Also, while
here I've made creating actual *Symbols lazy in the sense Dylib and
Stub only store hash maps of symbol names that they expose but we
defer create and referencing given dylib/stub until link time when
a symbol is actually referenced. This should reduce memory usage
and speed things up a bit.
2021-06-24 14:45:45 +02:00
Jakub Konka
4854c96bc5
zld: create a synthetic ___dso_handle symbol self-referenced
2021-06-24 14:45:45 +02:00
Jakub Konka
089577a71d
zld: parse libSystem tbd stub when linking
2021-06-24 14:45:45 +02:00
Jakub Konka
e1f1f16183
zld: clean up
2021-06-10 21:05:20 +02:00
Jakub Konka
0e08cd63e2
zld: fix debug info for regulars synthed from tentative
2021-06-10 19:28:11 +02:00
Jakub Konka
66ff56c58f
zld: add Symbol.Tentative to denote common symbol
2021-06-10 10:29:57 +02:00
Jakub Konka
138cecc028
zld: add prelim way of linking dylibs
...
The support is minimalistic in the sense that we only support actual
dylib files and not stubs/tbds yet, and we also don't support re-exports
just yet.
2021-05-18 09:28:00 +02:00