Jakub Konka
b390ced356
macho: specify -install_name as full dylib's name
...
This then allows for proper resolution of names via runpath search
path list, i.e., `-rpath @loader_path` will correctly resolve
to `@rpath/libxxx.dylib (...)` in the linked binary.
2020-12-04 12:23:49 -08:00
Jakub Konka
c4853ba7ea
Version-gate appending -syslibroot flag to lld
...
This commit version-gates appending `-syslibroot` flag to lld. This
is predicated upon the fact that for versions of macOS lower than
11, lld would fail to find and link against frameworks with this
flag specified.
Co-authored-by: Andrew Kelley <andrew@ziglang.org >
2020-12-04 11:37:55 -08:00
Jakub Konka
d3be499270
lld+macho: address review comments
2020-12-03 21:57:26 +01:00
Jakub Konka
0fba2f7175
lld: fix using incorrect path for the final artefact
2020-12-02 11:21:52 +01:00
Jakub Konka
3e2d1ccaad
lld+macho: rename final artefact in main.zig
2020-12-02 00:03:07 +01:00
Jakub Konka
b58a2a4de6
lld+macho: move parsing logic into MachO
2020-12-01 23:39:07 +01:00
Jakub Konka
ed18046518
macho: dynamically calculate code signature padding
2020-12-01 18:03:31 +01:00
Jakub Konka
abb697e751
macho: unify code signature between stage1 and stage2
2020-12-01 18:03:04 +01:00
Jakub Konka
1f7fb560ab
lld: use commands.LoadCommand in self-hosted linker
2020-12-01 10:49:31 +01:00
Jakub Konka
de66b65677
lld: start unifying load command logic
2020-12-01 10:49:31 +01:00
Jakub Konka
0ef3071db6
lld: copy+rename to please the kernel
2020-12-01 10:49:31 +01:00
Jakub Konka
c25b3593e7
lld: add code signature to lld output
2020-12-01 10:49:31 +01:00
Jakub Konka
545721ccd1
lld: add code signature padding
2020-12-01 10:49:31 +01:00
Jakub Konka
e8ffae60a2
lld: parse output lld file
2020-12-01 10:49:31 +01:00
Jakub Konka
5ed76268c9
stage2 macho: apply more review comments
2020-11-27 20:55:34 +01:00
Jakub Konka
64eae8f392
stage2 macho: move PIE fixups to link file; fix tests
2020-11-26 11:50:09 +01:00
Jakub Konka
c749b78df5
stage2 macho: add orr and orn instructions
2020-11-26 11:50:09 +01:00
Jakub Konka
10942e3f86
stage2 macho: Hello, Silicon!
2020-11-26 11:50:09 +01:00
Jakub Konka
2cd84b1b3f
stage2 macho: refactor PIE generation on x86_64
2020-11-26 11:50:09 +01:00
Jakub Konka
ef5132c508
stage2 macho: first, rough draft at trampolining
2020-11-26 11:50:09 +01:00
Jakub Konka
80b1041c21
stage2 macho: use RIP-relative for memory-set regs x86_64
2020-11-26 11:50:09 +01:00
Jakub Konka
59fe3d447d
stage2 macho: make file structure compatible with codesign tool
2020-11-26 11:50:09 +01:00
Jakub Konka
e7db372864
stage2 macho: cleanup logs
2020-11-26 11:50:09 +01:00
Jakub Konka
cd79c6dda1
stage2 macho: fix issues with codesigning
2020-11-26 11:50:09 +01:00
Jakub Konka
a6e93da717
stage2 macho: generate a code sig (not valid yet)
2020-11-26 11:50:09 +01:00
Jakub Konka
9dcf7ee9c9
stage2 macho: add info about __TEXT segment
2020-11-26 11:50:09 +01:00
Jakub Konka
d14cd59ef0
stage2 macho: move code signature logic into struct
2020-11-26 11:50:09 +01:00
Jakub Konka
3ac804628f
stage2 macho: write out constants in CS
2020-11-26 11:50:09 +01:00
Jakub Konka
2bd963ad6a
stage2 macho: don't pad out holes between sections
2020-11-26 11:50:09 +01:00
Jakub Konka
403dc50ff7
stage2 macho: preallocate empty code sig space
2020-11-26 11:50:09 +01:00
Jakub Konka
bbc4ee3f17
stage2 macho: refactor
2020-11-26 11:50:09 +01:00
Jakub Konka
a2e0e33249
stage2 macho: bring back incremental symbol commits
2020-11-26 11:50:09 +01:00
Jakub Konka
e1b65ff8d2
stage2 macho: cleanup minimum version command
2020-11-26 11:50:09 +01:00
Jakub Konka
be0d5571d2
stage2 macho: revert required alignment always at 4
2020-11-26 11:50:09 +01:00
Jakub Konka
2972f630a4
stage2 macho: start reverting some tweaks
2020-11-26 11:50:09 +01:00
Jakub Konka
4e3520a2f7
stage2 macho: make page size target cpu arch dependent
2020-11-26 11:50:09 +01:00
Jakub Konka
8450e6f156
stage2 macho: pages need to be 16kb aligned!
2020-11-26 11:50:09 +01:00
Jakub Konka
4a3d757f3e
stage2 MachO: reduce size of __TEXT segment
2020-11-26 11:50:09 +01:00
Jakub Konka
7a407246ed
stage2 MachO: remove discontinuities between segments
2020-11-26 11:50:09 +01:00
Jakub Konka
6ac7e99dad
Write local symbols when flushing
2020-11-26 11:50:09 +01:00
Jakub Konka
b3fdfe5ca0
stage2 MachO: clean up segment protection flags
2020-11-26 11:50:09 +01:00
Jakub Konka
7dd5ce2527
stage2 macOS: make exe flagged as pie
2020-11-26 11:50:09 +01:00
Jakub Konka
1bec531cf2
stage2 MachO: add source version load cmd
2020-11-26 11:50:09 +01:00
Jakub Konka
72310db1da
stage2 MachO: add min OS version load cmd
2020-11-26 11:50:09 +01:00
LemonBoy
8eaaa905f7
stage2: Make zig cc more verbose ( #7166 )
...
* stage2: Make zig cc more verbose
Make `zig cc` print more info from Clang itself and from our own linker
invocation, this is needed for CMake to properly discover all the
include directories and library search paths.
Closes #7110
* Update `update_clang_options`
* Typo fixes
Co-authored-by: Jakub Konka <kubkon@jakubkonka.com >
2020-11-19 23:30:16 +01:00
Alex Cameron
a2582df5b2
Prevent double file close in MachO linking
2020-11-16 13:59:27 -08:00
Andrew Kelley
e78e0f57be
macos: avoid --export-dynamic when using system linker
2020-11-08 23:04:38 -08:00
Jakub Konka
ab69b89d52
Address review comments
2020-11-06 11:57:53 +01:00
Jakub Konka
b7c3ebcb9e
Rely on ZIG_SYSTEM_LINKER_HACK instead of input flags
2020-11-06 11:34:51 +01:00
Jakub Konka
e0e3ceac19
Re-enable system linker hack
...
It is now possible to force linking with system linker `ld` instead
of the LLVM `lld` linker when building natively on the target. This
can be done at each stage by specifying `--system-linker-hack` flag,
and can be useful on platforms where `lld` fails to operate properly
such as macOS 11 Big Sur on ARM64 where every binary/dylib is expected
to be codesigned.
Some example invocations for each stage of compilation of Zig
toolchain:
```
cmake .. -DCMAKE_PREFIX_PATH=/path/to/llvm -DSYSTEM_LINKER_HACK=1
```
```
build/zig build test --system-linker-hack
```
```
build/zig build --prefix $(pwd)/stage2 -Denable-llvm
--system-linker-hack
```
```
build/zig build-exe hello.zig --system-linker-hack
```
2020-11-05 18:35:51 +01:00