aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJakub Konka <kubkon@jakubkonka.com>2024-08-10 17:19:37 +0200
committerJakub Konka <kubkon@jakubkonka.com>2024-08-10 17:19:37 +0200
commit421b105d85507e6e3a98cfcf932ca6a8d14e2791 (patch)
tree61fd792f9198778593fac9c5785f5f23fac25c00 /src
parent3f2a0c3de47c8d359f3c7316badc281237d6c494 (diff)
downloadzig-421b105d85507e6e3a98cfcf932ca6a8d14e2791.tar.gz
zig-421b105d85507e6e3a98cfcf932ca6a8d14e2791.zip
macho: ensure we only ever put named symbols in the symtab
Diffstat (limited to 'src')
-rw-r--r--src/link/MachO/ZigObject.zig4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/link/MachO/ZigObject.zig b/src/link/MachO/ZigObject.zig
index eb240017ea..98c18643fd 100644
--- a/src/link/MachO/ZigObject.zig
+++ b/src/link/MachO/ZigObject.zig
@@ -550,6 +550,8 @@ pub fn calcSymtabSize(self: *ZigObject, macho_file: *MachO) void {
const file = ref.getFile(macho_file) orelse continue;
if (file.getIndex() != self.index) continue;
if (sym.getAtom(macho_file)) |atom| if (!atom.isAlive()) continue;
+ const name = sym.getName(macho_file);
+ assert(name.len > 0);
sym.flags.output_symtab = true;
if (sym.isLocal()) {
sym.addExtra(.{ .symtab = self.output_symtab_ctx.nlocals }, macho_file);
@@ -562,7 +564,7 @@ pub fn calcSymtabSize(self: *ZigObject, macho_file: *MachO) void {
sym.addExtra(.{ .symtab = self.output_symtab_ctx.nimports }, macho_file);
self.output_symtab_ctx.nimports += 1;
}
- self.output_symtab_ctx.strsize += @as(u32, @intCast(sym.getName(macho_file).len + 1));
+ self.output_symtab_ctx.strsize += @as(u32, @intCast(name.len + 1));
}
}