From 3f10217a47ff259ca3671dd8bb89a04417bccdc2 Mon Sep 17 00:00:00 2001 From: Jakub Konka Date: Tue, 30 Jul 2024 12:54:30 +0200 Subject: [PATCH] elf: fix a typo in setting atom name before it's been allocated --- src/link/Elf/ZigObject.zig | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/link/Elf/ZigObject.zig b/src/link/Elf/ZigObject.zig index 66276761e0..454646bfeb 100644 --- a/src/link/Elf/ZigObject.zig +++ b/src/link/Elf/ZigObject.zig @@ -912,12 +912,13 @@ fn updateDeclCode( const sym = elf_file.symbol(sym_index); const esym = &self.local_esyms.items(.elf_sym)[sym.esym_index]; const atom_ptr = sym.atom(elf_file).?; + const name_offset = try self.strtab.insert(gpa, decl.fqn.toSlice(ip)); atom_ptr.alive = true; - atom_ptr.name_offset = sym.name_offset; + atom_ptr.name_offset = name_offset; atom_ptr.output_section_index = shdr_index; - sym.name_offset = try self.strtab.insert(gpa, decl.fqn.toSlice(ip)); - esym.st_name = sym.name_offset; + sym.name_offset = name_offset; + esym.st_name = name_offset; esym.st_info |= stt_bits; esym.st_size = code.len; @@ -1009,15 +1010,17 @@ fn updateTlv( const sym = elf_file.symbol(sym_index); const esym = &self.local_esyms.items(.elf_sym)[sym.esym_index]; const atom_ptr = sym.atom(elf_file).?; + const name_offset = try self.strtab.insert(gpa, decl.fqn.toSlice(ip)); sym.value = 0; - atom_ptr.output_section_index = shndx; + sym.name_offset = name_offset; - sym.name_offset = try self.strtab.insert(gpa, decl.fqn.toSlice(ip)); + atom_ptr.output_section_index = shndx; atom_ptr.alive = true; - atom_ptr.name_offset = sym.name_offset; + atom_ptr.name_offset = name_offset; + esym.st_value = 0; - esym.st_name = sym.name_offset; + esym.st_name = name_offset; esym.st_info = elf.STT_TLS; esym.st_size = code.len;