Jakub Konka
ad8dfd3673
macho+coff: remove alignment from Atom as it is unused
2023-04-03 09:14:36 +02:00
Jacob Young
677427bc3a
x86_64: implement error name
2023-04-02 04:49:53 -04:00
Jakub Konka
f2587de4e9
macho: look for entry in archives/dylibs too
2023-04-01 14:22:44 +02:00
Jakub Konka
17ec2cea64
macho: remove error_union return from resolveRelocations()
2023-03-28 21:52:44 +02:00
Jakub Konka
0dc210f950
link: pass expected lib name as hint in getGlobalSymbol()
2023-03-28 12:28:48 +02:00
Jakub Konka
8bffe87e9e
macho: collect all exports into the export trie
2023-03-21 21:31:24 +01:00
Jakub Konka
6874b29308
macho: fix 32bit build
2023-03-19 17:13:38 +01:00
Jakub Konka
f026939a40
macho: enable hot update state only when on compatible host
2023-03-19 09:45:05 +01:00
Jakub Konka
0aab3bda12
macho: add wrappers for attaching/detaching from HCS process
2023-03-18 21:53:46 +01:00
Jakub Konka
37192bcdcb
macos: HCS PoC working
2023-03-18 21:53:36 +01:00
Jakub Konka
f1e25cf43e
macho: add hot-code swapping poc
2023-03-18 21:53:26 +01:00
Jakub Konka
46171bf6c8
macho+zld: clean up how to interface with link.zig and openPath()
2023-03-18 19:05:06 +01:00
Jakub Konka
76afdd0586
link: move macOS kernel inode cache invalidation to MachO linker
2023-03-16 17:30:25 +01:00
Jakub Konka
c746cbc686
codegen: move gen logic for typed values, consts and decl ref to common codegen
2023-03-03 18:06:25 +01:00
Andrew Kelley
aeaef8c0ff
update std lib and compiler sources to new for loop syntax
2023-02-18 19:17:21 -07:00
Andrew Kelley
9cb52ca6ce
move the cache system from compiler to std lib
2023-02-13 06:42:25 -07:00
Jakub Konka
1aa0f8aa2f
link: fix pointer invalidation issues in Elf, MachO and Coff
2023-02-01 17:46:57 +01:00
Jakub Konka
5de2aae63c
link: decouple DI atoms from linker atoms, and manage them in Dwarf linker
2023-02-01 15:03:55 +01:00
Jakub Konka
c430e9afa7
link: make Coff atoms fully owned by the linker
2023-01-31 20:27:17 +01:00
Jakub Konka
4404c4d200
link: make Elf atoms fully owned by the linker
2023-01-31 17:54:12 +01:00
Jakub Konka
d42a931051
link: make MachO atoms fully owned by the linker
2023-01-31 00:43:25 +01:00
Jakub Konka
cc1d7a0e31
coff: migrate to new non-allocateDeclIndexes API
2023-01-26 14:29:14 +01:00
Jakub Konka
e1b9800ffa
elf: migrate to new non-allocateDeclIndexes API
2023-01-26 14:29:14 +01:00
Jakub Konka
4d804c1b23
macho: completely remove allocateDeclIndexes in favor of linker tracking
2023-01-26 14:29:14 +01:00
Jakub Konka
a95d58caf2
self-hosted: rename codegen Result.appended to Result.ok
2023-01-25 10:28:18 +01:00
Jakub Konka
4983da40d0
self-hosted: remove unused externally_managed prong for Decls code
2023-01-25 10:10:50 +01:00
Jakub Konka
9f0cb763a4
macho: disable some log messages
2023-01-20 13:10:20 +01:00
Jakub Konka
9d2711a3d9
macho: use ArrayHashMap for tracking of dyld runtime metadata
2023-01-20 12:10:16 +01:00
Jakub Konka
e17c551a2e
macho: revert ordering tweak of lazy bind pointers and add logging
2023-01-20 11:00:08 +01:00
Jakub Konka
dcdbfba770
macho: require an exclusive lock to the Cache.Manifest
2023-01-20 10:59:48 +01:00
Jakub Konka
bcd16b2708
macho: fix ordering issue with lazy bind pointers
2023-01-19 14:06:47 +01:00
Jakub Konka
61e38d0c34
macho+zld: add improved dyld opcodes emitters
2023-01-19 00:05:45 +01:00
Jacob Young
74b14edea8
link: fix memory leaks
...
* Fix linker memory leaks found while running `zig build test-cases`.
* Add missing target to test manifest.
2022-12-28 14:24:27 -05:00
Jakub Konka
601ab9a251
Merge pull request #14086 from ziglang/issue-14082
...
macho: ensure LINKEDIT layout follows Apple strict validation rules
2022-12-27 21:39:05 +01:00
Jakub Konka
c0c5acf074
macho+zld: fix 32bit build
2022-12-27 17:04:57 +01:00
Jakub Konka
2620146834
macho+zld: align to 8 and pad out strtab
2022-12-27 16:43:35 +01:00
Jakub Konka
d83d39297c
macho+zld: align to 8 and pad out dysymtab
2022-12-27 16:43:35 +01:00
Jakub Konka
246e3e0c75
macho+zld: align to 8 and pad out dyld info sections
2022-12-27 16:43:35 +01:00
Veikka Tuominen
622311fb9a
update uses of overflow arithmetic builtins
2022-12-27 15:13:14 +02:00
Jakub Konka
22b39f034b
macho+zld: properly deinit code signature object
2022-12-23 14:35:45 +01:00
Jakub Konka
550ebcce9a
macho+zld: write code signature padding before commiting LCs
...
Otherwise, we were prematurely committing `__LINKEDIT` segment LC
with outdated size (i.e., without code signature being taken into account).
This would scaffold into strict validation failures by Apple tooling.
2022-12-23 12:50:03 +01:00
Jakub Konka
660270b7a9
macho: calculate UUID excluding stabs and part of contributing strtab
2022-12-16 18:05:58 +01:00
Jakub Konka
09dee74414
macho: store LC headers to often updated LINKEDIT sections
2022-12-16 18:05:58 +01:00
Jakub Konka
6b99aab0eb
macho: do not assume exe or dylib when flushing module
2022-12-16 00:01:04 +01:00
Jakub Konka
79457fc76a
macho: generalize parallel hasher; impl parallel MD5-like hash
...
By pulling out the parallel hashing setup from `CodeSignature.zig`,
we can now reuse it different places across MachO linker (for now;
I can totally see its usefulness beyond MachO, eg. in COFF or ELF too).
The parallel hasher is generic over actual hasher such as Sha256 or MD5.
The implementation is kept as it was.
For UUID calculation, depending on the linking mode:
* incremental - since it only supports debug mode, we don't bother with MD5
hashing of the contents, and populate it with random data but only once
per a sequence of in-place binary patches
* traditional - in debug, we use random string (for speed); in release,
we calculate the hash, however we use LLVM/LLD's trick in that we
calculate a series of MD5 hashes in parallel and then one an MD5 of MD5
final hash to generate digest.
2022-12-16 00:01:04 +01:00
Jakub Konka
db2052bc35
macho: dedup LC emitting logic
...
Fix path written to `LC_ID_DYLIB` to include the current CWD (if any).
2022-12-16 00:01:04 +01:00
Jakub Konka
4bb66b63ba
macho: add helper for getting ptr to DebugSymbols
2022-12-09 09:24:25 +01:00
Jakub Konka
f5c764d892
dwarf: track source files via *const Module.File pointers
2022-12-09 09:24:25 +01:00
Andrew Kelley
28514476ef
remove -fstage1 option
...
After this commit, the self-hosted compiler does not offer the option to
use stage1 as a backend anymore.
2022-12-06 12:15:04 -07:00
Jakub Konka
8796da0283
dwarf: reuse getDbgInfoAtom helper in all of Dwarf.zig
...
We need to access it outside of `DeclState` too so why not reuse
the helper anyway.
2022-12-05 14:19:22 +01:00