aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJakub Konka <kubkon@jakubkonka.com>2022-07-22 21:19:33 +0200
committerJakub Konka <kubkon@jakubkonka.com>2022-07-22 21:19:33 +0200
commit600348283fa5ea9646f91997e0a32f4632ca30b8 (patch)
tree82f062eb4fed41456afe76145e0936514aae41ce /src
parentf8458a549ba7fbd29b3d045019313704f1305e89 (diff)
downloadzig-600348283fa5ea9646f91997e0a32f4632ca30b8.tar.gz
zig-600348283fa5ea9646f91997e0a32f4632ca30b8.zip
macho: include __StaticInit input sections as GC roots
Diffstat (limited to 'src')
-rw-r--r--src/link/MachO/dead_strip.zig1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/link/MachO/dead_strip.zig b/src/link/MachO/dead_strip.zig
index b3454dda57..909a0450d6 100644
--- a/src/link/MachO/dead_strip.zig
+++ b/src/link/MachO/dead_strip.zig
@@ -92,6 +92,7 @@ fn collectRoots(roots: *std.AutoHashMap(*Atom, void), macho_file: *MachO) !void
const source_sect = object.getSourceSection(source_sym.n_sect - 1);
const is_gc_root = blk: {
if (source_sect.isDontDeadStrip()) break :blk true;
+ if (mem.eql(u8, "__StaticInit", source_sect.sectName())) break :blk true;
switch (source_sect.type_()) {
macho.S_MOD_INIT_FUNC_POINTERS,
macho.S_MOD_TERM_FUNC_POINTERS,