aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJakub Konka <kubkon@jakubkonka.com>2023-03-03 18:53:47 +0100
committerJakub Konka <kubkon@jakubkonka.com>2023-03-03 18:53:47 +0100
commitd23472747eb288e4c2332e03f6185c69e864f67d (patch)
tree5f865c849f556a69a568b9d5842883bfd213d2f1 /src
parentf6eeb6c8ce83af392dc075e3f80846aefc791f42 (diff)
downloadzig-d23472747eb288e4c2332e03f6185c69e864f67d.tar.gz
zig-d23472747eb288e4c2332e03f6185c69e864f67d.zip
elf: fully zero out symbol when appending to freelist
Diffstat (limited to 'src')
-rw-r--r--src/link/Elf.zig11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/link/Elf.zig b/src/link/Elf.zig
index f499a9952a..a91722d072 100644
--- a/src/link/Elf.zig
+++ b/src/link/Elf.zig
@@ -2097,9 +2097,16 @@ fn freeAtom(self: *Elf, atom_index: Atom.Index) void {
// Appending to free lists is allowed to fail because the free lists are heuristics based anyway.
const local_sym_index = atom.getSymbolIndex().?;
+ log.debug("adding %{d} to local symbols free list", .{local_sym_index});
self.local_symbol_free_list.append(gpa, local_sym_index) catch {};
- self.local_symbols.items[local_sym_index].st_info = 0;
- self.local_symbols.items[local_sym_index].st_shndx = 0;
+ self.local_symbols.items[local_sym_index] = .{
+ .st_name = 0,
+ .st_info = 0,
+ .st_other = 0,
+ .st_shndx = 0,
+ .st_value = 0,
+ .st_size = 0,
+ };
_ = self.atom_by_index_table.remove(local_sym_index);
self.getAtomPtr(atom_index).local_sym_index = 0;