diff options
| author | Jakub Konka <kubkon@jakubkonka.com> | 2023-03-03 18:53:47 +0100 |
|---|---|---|
| committer | Jakub Konka <kubkon@jakubkonka.com> | 2023-03-03 18:53:47 +0100 |
| commit | d23472747eb288e4c2332e03f6185c69e864f67d (patch) | |
| tree | 5f865c849f556a69a568b9d5842883bfd213d2f1 /src | |
| parent | f6eeb6c8ce83af392dc075e3f80846aefc791f42 (diff) | |
| download | zig-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.zig | 11 |
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; |
