aboutsummaryrefslogtreecommitdiff
path: root/src/link/Elf.zig
diff options
context:
space:
mode:
authorJakub Konka <kubkon@jakubkonka.com>2023-01-31 20:27:17 +0100
committerJakub Konka <kubkon@jakubkonka.com>2023-01-31 20:27:17 +0100
commitc430e9afa7b050400b9703360a0af4ab824335ce (patch)
tree1a91f7abd8ca2c92100a713e5978c16cfe845a9c /src/link/Elf.zig
parent4404c4d20094bb5021aac4a047cd33b6c24b9a9b (diff)
downloadzig-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.zig10
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];