Jakub Konka
c8753aceef
macho: fix typos in consts defs
2021-04-21 06:49:34 +02:00
Jakub Konka
1ec620be62
zld: fix GOT loads and indirection on x86_64
2021-03-17 19:59:57 +01:00
Jakub Konka
a1b0ec5277
zld: start bringing x64 up to speed
2021-03-17 19:59:13 +01:00
Jakub Konka
b0ee480177
zld: merge and sort sections
2021-03-17 19:59:13 +01:00
Jakub Konka
e5234c0e9e
macho: offset table part of GOT
2021-03-17 12:16:36 +01:00
Jakub Konka
79730e6f5c
macho: add arm64 relocation type enum
2021-01-26 08:11:31 +01:00
Jakub Konka
7e0e27e738
libstd: add missing MachO rebase opcodes in macho.zig
2021-01-08 23:41:51 +01:00
Frank Denis
6c2e0c2046
Year++
2020-12-31 15:45:24 -08:00
Jakub Konka
2e7883c597
lld+macho: lld xcomp to x86_64 macos now works
2020-12-17 10:04:53 +01:00
Jakub Konka
4c3e6c5bff
macho: cleanup export trie generation and parsing
...
Now, ExportTrie is becoming usable for larger linking contexts such
as linking in multiple object files, or relinking dylibs, etc.
2020-12-09 20:36:58 +01:00
Vexu
7e30e83900
small fixes and zig fmt
2020-12-09 13:54:26 +02: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
79381dc4fb
stage2 macho: add empty CodeDirectory blob
2020-11-26 11:50:09 +01:00
Jakub Konka
e8dd62accd
stage2 macho: fix incorrect rebase
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
Jakub Konka
cd4b54fd38
libstd: add more MachO consts and structs
2020-11-16 13:37:07 -08:00
Jakub Konka
ccf9bba61f
Write out LC_DYSYMTAB together with dyld_stub_binder undef symbol
2020-10-04 15:31:47 +02:00
Jakub Konka
a927f24201
Generate more MachO exe boilerplate
...
* Convert draft to generate all relevant segments and sections in right places
* Do not prealloc space in text blocks until we can NOP
* Write out LC_LOAD_DYLINKER command
* Add LC_LOAD_DYLIB command in order to specify to load libSystem
* Redo update decl exports (similar to Elf globals, globals need to be contiguous in
memory)
2020-10-04 15:31:47 +02:00
Jakub Konka
9306dbd619
Fix bug where __text section would get overwritten
...
Fixes a bug where the last written load command would accidentally
override the beginning of the __text section. Also defines missing
MachO constants and relocation structs/enums.
Signed-off-by: Jakub Konka <kubkon@jakubkonka.com>
2020-09-08 20:55:06 +02:00
Jakub Konka
04361dd461
Add more missing MachO constants and structs
...
Signed-off-by: Jakub Konka <kubkon@jakubkonka.com>
2020-08-30 09:47:36 +02:00
Jakub Konka
43b6d0e4b1
Add (empty) __TEXT segment load command
...
Also, link against `libSystem` by default when targeting macOS.
Signed-off-by: Jakub Konka <kubkon@jakubkonka.com>
2020-08-24 21:18:27 +02:00
Jakub Konka
9745e7b512
Clean up draft for merging into upstream
...
Signed-off-by: Jakub Konka <kubkon@jakubkonka.com>
2020-08-24 17:59:44 +02:00
Jakub Konka
1698e6d7a7
Link against libSystem when generating Mach-O exe
...
This is required when generating an exe on macOS.
Signed-off-by: Jakub Konka <kubkon@jakubkonka.com>
2020-08-24 17:59:44 +02:00
Jakub Konka
2516db9645
Specify path to dyld in Mach-O
...
This is required since an exec on macOS always has to link against
libSystem.dylib.
Signed-off-by: Jakub Konka <kubkon@jakubkonka.com>
2020-08-24 17:59:44 +02:00
Jakub Konka
69de1a51cd
Add entry_point_command struct to Mach-O definitions
...
The `entry_point_command` is a replacement for `thread_command`, and
is used for main executables to specify the location of `main()`
entry point.
Signed-off-by: Jakub Konka <kubkon@jakubkonka.com>
2020-08-22 04:14:27 -04:00
Andrew Kelley
4a69b11e74
add license header to all std lib files
...
add SPDX license identifier
copyright ownership is zig contributors
2020-08-20 16:07:04 -04:00
Jakub Konka
e4b3da2720
Write out Mach-O header
...
This commit write out Mach-O header in the linker's `flush`
method. The header currently only populates the magic number,
filetype, and cpu info.
Signed-off-by: Jakub Konka <kubkon@jakubkonka.com>
2020-08-18 23:35:31 +02:00
LemonBoy
495e894225
delete extra code, more forgiveness
2020-02-22 12:44:21 +01:00
Andrew Kelley
ed36dbbd9c
mv std/ lib/
...
that's all this commit does. further commits will fix cli flags and
such.
see #2221
2019-09-25 23:35:41 -04:00