aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJakub Konka <kubkon@jakubkonka.com>2021-11-28 20:48:54 +0100
committerJakub Konka <kubkon@jakubkonka.com>2021-11-28 20:48:54 +0100
commit58a552aaf99f518d3f347c074d20a25c5223404b (patch)
treee7de892dbf3fa76d0e7f4461b9e26ccfe5012285 /src
parent7e27ab09476870e4b37a04172043c66b4bd77c20 (diff)
downloadzig-58a552aaf99f518d3f347c074d20a25c5223404b.tar.gz
zig-58a552aaf99f518d3f347c074d20a25c5223404b.zip
macho: save all undef symbols even if null
Diffstat (limited to 'src')
-rw-r--r--src/link/MachO.zig12
1 files changed, 2 insertions, 10 deletions
diff --git a/src/link/MachO.zig b/src/link/MachO.zig
index 37f905cdd4..2508b61a38 100644
--- a/src/link/MachO.zig
+++ b/src/link/MachO.zig
@@ -4996,17 +4996,9 @@ fn writeSymbolTable(self: *MachO) !void {
}
}
- var undefs = std.ArrayList(macho.nlist_64).init(self.base.allocator);
- defer undefs.deinit();
-
- for (self.undefs.items) |sym| {
- if (sym.n_strx == 0) continue;
- try undefs.append(sym);
- }
-
const nlocals = locals.items.len;
const nexports = self.globals.items.len;
- const nundefs = undefs.items.len;
+ const nundefs = self.undefs.items.len;
const locals_off = symtab.symoff;
const locals_size = nlocals * @sizeOf(macho.nlist_64);
@@ -5021,7 +5013,7 @@ fn writeSymbolTable(self: *MachO) !void {
const undefs_off = exports_off + exports_size;
const undefs_size = nundefs * @sizeOf(macho.nlist_64);
log.debug("writing undefined symbols from 0x{x} to 0x{x}", .{ undefs_off, undefs_size + undefs_off });
- try self.base.file.?.pwriteAll(mem.sliceAsBytes(undefs.items), undefs_off);
+ try self.base.file.?.pwriteAll(mem.sliceAsBytes(self.undefs.items), undefs_off);
symtab.nsyms = @intCast(u32, nlocals + nexports + nundefs);
seg.inner.filesize += locals_size + exports_size + undefs_size;