aboutsummaryrefslogtreecommitdiff
path: root/lib/std
diff options
context:
space:
mode:
authorJakub Konka <kubkon@jakubkonka.com>2021-03-17 19:44:32 +0100
committerGitHub <noreply@github.com>2021-03-17 19:44:32 +0100
commit0f7b036eb75f52c69e8458bd12563a7ecf4c9237 (patch)
tree1cf9707303ddbbe728551cfc16ad9678887bd47f /lib/std
parent119fc318a753f57b55809e9256e823accba6b56a (diff)
parente5234c0e9ee1d60b7a87df8de0350fee2d4e6c55 (diff)
downloadzig-0f7b036eb75f52c69e8458bd12563a7ecf4c9237.tar.gz
zig-0f7b036eb75f52c69e8458bd12563a7ecf4c9237.zip
Merge pull request #8281 from kubkon/macho-got-refactor
stage2+macho: refactor global offset table for incremental linker
Diffstat (limited to 'lib/std')
-rw-r--r--lib/std/macho.zig8
1 files changed, 8 insertions, 0 deletions
diff --git a/lib/std/macho.zig b/lib/std/macho.zig
index 6785abffca..bca222b5b7 100644
--- a/lib/std/macho.zig
+++ b/lib/std/macho.zig
@@ -1422,6 +1422,14 @@ pub const EXPORT_SYMBOL_FLAGS_KIND_WEAK_DEFINITION: u8 = 0x04;
pub const EXPORT_SYMBOL_FLAGS_REEXPORT: u8 = 0x08;
pub const EXPORT_SYMBOL_FLAGS_STUB_AND_RESOLVER: u8 = 0x10;
+// An indirect symbol table entry is simply a 32bit index into the symbol table
+// to the symbol that the pointer or stub is refering to. Unless it is for a
+// non-lazy symbol pointer section for a defined symbol which strip(1) as
+// removed. In which case it has the value INDIRECT_SYMBOL_LOCAL. If the
+// symbol was also absolute INDIRECT_SYMBOL_ABS is or'ed with that.
+pub const INDIRECT_SYMBOL_LOCAL: u32 = 0x80000000;
+pub const INDIRECT_SYMBOL_ABS: u32 = 0x40000000;
+
// Codesign consts and structs taken from:
// https://opensource.apple.com/source/xnu/xnu-6153.81.5/osfmk/kern/cs_blobs.h.auto.html