authorgravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2024-08-10 17:18:02+02:00
committergravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2024-08-10 17:18:48+02:00
log3f2a0c3de47c8d359f3c7316badc281237d6c494
treeded244d0157815f55219cc4ab3fd897de8eb21c6
parent6d54f20c4713c564cfe65a84683b10b445a7d34c

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


1 files changed, 3 insertions(+), 1 deletions(-)

src/link/Elf/ZigObject.zig+3-1
...@@ -579,6 +579,8 @@ pub fn updateSymtabSize(self: *ZigObject, elf_file: *Elf) !void {...@@ -579,6 +579,8 @@ pub fn updateSymtabSize(self: *ZigObject, elf_file: *Elf) !void {
579 for (self.local_symbols.items) |index| {579 for (self.local_symbols.items) |index| {
580 const local = &self.symbols.items[index];580 const local = &self.symbols.items[index];
581 if (local.atom(elf_file)) |atom_ptr| if (!atom_ptr.alive) continue;581 if (local.atom(elf_file)) |atom_ptr| if (!atom_ptr.alive) continue;
582 const name = local.name(elf_file);
583 assert(name.len > 0);
582 const esym = local.elfSym(elf_file);584 const esym = local.elfSym(elf_file);
583 switch (esym.st_type()) {585 switch (esym.st_type()) {
584 elf.STT_SECTION, elf.STT_NOTYPE => continue,586 elf.STT_SECTION, elf.STT_NOTYPE => continue,
...@@ -587,7 +589,7 @@ pub fn updateSymtabSize(self: *ZigObject, elf_file: *Elf) !void {...@@ -587,7 +589,7 @@ pub fn updateSymtabSize(self: *ZigObject, elf_file: *Elf) !void {
587 local.flags.output_symtab = true;589 local.flags.output_symtab = true;
588 local.addExtra(.{ .symtab = self.output_symtab_ctx.nlocals }, elf_file);590 local.addExtra(.{ .symtab = self.output_symtab_ctx.nlocals }, elf_file);
589 self.output_symtab_ctx.nlocals += 1;591 self.output_symtab_ctx.nlocals += 1;
590 self.output_symtab_ctx.strsize += @as(u32, @intCast(local.name(elf_file).len)) + 1;592 self.output_symtab_ctx.strsize += @as(u32, @intCast(name.len)) + 1;
591 }593 }
592594
593 for (self.global_symbols.items, self.symbols_resolver.items) |index, resolv| {595 for (self.global_symbols.items, self.symbols_resolver.items) |index, resolv| {