zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit 3f2a0c3de47c8d359f3c7316badc281237d6c494 (tree)
parent 6d54f20c4713c564cfe65a84683b10b445a7d34c
Author: Jakub Konka <kubkon@jakubkonka.com>
Date:   Sat, 10 Aug 2024 17:18:02 +0200

elf: ensure we only ever put named symbols in the symtab

Diffstat:
Msrc/link/Elf/ZigObject.zig | 4+++-
1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/link/Elf/ZigObject.zig b/src/link/Elf/ZigObject.zig @@ -579,6 +579,8 @@ pub fn updateSymtabSize(self: *ZigObject, elf_file: *Elf) !void { for (self.local_symbols.items) |index| { const local = &self.symbols.items[index]; if (local.atom(elf_file)) |atom_ptr| if (!atom_ptr.alive) continue; + const name = local.name(elf_file); + assert(name.len > 0); const esym = local.elfSym(elf_file); switch (esym.st_type()) { elf.STT_SECTION, elf.STT_NOTYPE => continue, @@ -587,7 +589,7 @@ pub fn updateSymtabSize(self: *ZigObject, elf_file: *Elf) !void { local.flags.output_symtab = true; local.addExtra(.{ .symtab = self.output_symtab_ctx.nlocals }, elf_file); self.output_symtab_ctx.nlocals += 1; - self.output_symtab_ctx.strsize += @as(u32, @intCast(local.name(elf_file).len)) + 1; + self.output_symtab_ctx.strsize += @as(u32, @intCast(name.len)) + 1; } for (self.global_symbols.items, self.symbols_resolver.items) |index, resolv| {