diff options
| author | Jakub Konka <kubkon@jakubkonka.com> | 2023-01-31 20:27:17 +0100 |
|---|---|---|
| committer | Jakub Konka <kubkon@jakubkonka.com> | 2023-01-31 20:27:17 +0100 |
| commit | c430e9afa7b050400b9703360a0af4ab824335ce (patch) | |
| tree | 1a91f7abd8ca2c92100a713e5978c16cfe845a9c /src/link/Elf.zig | |
| parent | 4404c4d20094bb5021aac4a047cd33b6c24b9a9b (diff) | |
| download | zig-c430e9afa7b050400b9703360a0af4ab824335ce.tar.gz zig-c430e9afa7b050400b9703360a0af4ab824335ce.zip | |
link: make Coff atoms fully owned by the linker
Diffstat (limited to 'src/link/Elf.zig')
| -rw-r--r-- | src/link/Elf.zig | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/link/Elf.zig b/src/link/Elf.zig index 0b8128aa33..747120ac5d 100644 --- a/src/link/Elf.zig +++ b/src/link/Elf.zig @@ -71,14 +71,14 @@ const DeclMetadata = struct { fn getExport(m: DeclMetadata, elf_file: *const Elf, name: []const u8) ?u32 { for (m.exports.items) |exp| { - if (mem.eql(u8, name, elf_file.getSymbolName(exp))) return exp; + if (mem.eql(u8, name, elf_file.getGlobalName(exp))) return exp; } return null; } fn getExportPtr(m: *DeclMetadata, elf_file: *Elf, name: []const u8) ?*u32 { for (m.exports.items) |*exp| { - if (mem.eql(u8, name, elf_file.getSymbolName(exp.*))) return exp; + if (mem.eql(u8, name, elf_file.getGlobalName(exp.*))) return exp; } return null; } @@ -3276,6 +3276,12 @@ pub fn getSymbolName(self: *const Elf, sym_index: u32) []const u8 { return self.shstrtab.get(sym.st_name).?; } +/// Returns name of the global symbol at index. +pub fn getGlobalName(self: *const Elf, index: u32) []const u8 { + const sym = self.global_symbols.items[index]; + return self.shstrtab.get(sym.st_name).?; +} + pub fn getAtom(self: *const Elf, atom_index: Atom.Index) Atom { assert(atom_index < self.atoms.items.len); return self.atoms.items[atom_index]; |
