aboutsummaryrefslogtreecommitdiff
path: root/src/link/Coff.zig
diff options
context:
space:
mode:
authorJakub Konka <kubkon@jakubkonka.com>2022-09-09 23:30:31 +0200
committerJakub Konka <kubkon@jakubkonka.com>2022-09-09 23:30:31 +0200
commitd8f210354577eda1b438d692b28bb3a582913b5a (patch)
tree5855f0bc25efb2ba6617b8a6cad46f19d0958f82 /src/link/Coff.zig
parentbac065c7cfb6f3aa0fe1cdf1334adb5a46d9a2af (diff)
downloadzig-d8f210354577eda1b438d692b28bb3a582913b5a.tar.gz
zig-d8f210354577eda1b438d692b28bb3a582913b5a.zip
macho+coff: return index into global table from getGlobalSymbol
Diffstat (limited to 'src/link/Coff.zig')
-rw-r--r--src/link/Coff.zig13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/link/Coff.zig b/src/link/Coff.zig
index 4f57154b90..ea36c8bc91 100644
--- a/src/link/Coff.zig
+++ b/src/link/Coff.zig
@@ -1544,9 +1544,10 @@ pub fn getDeclVAddr(
pub fn getGlobalSymbol(self: *Coff, name: []const u8) !u32 {
const gop = try self.getOrPutGlobalPtr(name);
+ const global_index = self.getGlobalIndex(name).?;
if (gop.found_existing) {
- return gop.value_ptr.sym_index;
+ return global_index;
}
const sym_index = try self.allocateSymbol();
@@ -1559,9 +1560,9 @@ pub fn getGlobalSymbol(self: *Coff, name: []const u8) !u32 {
try self.setSymbolName(sym, sym_name);
sym.storage_class = .EXTERNAL;
- try self.unresolved.putNoClobber(gpa, self.getGlobalIndex(name).?, true);
+ try self.unresolved.putNoClobber(gpa, global_index, true);
- return sym_index;
+ return global_index;
}
pub fn updateDeclLineNumber(self: *Coff, module: *Module, decl: *Module.Decl) !void {
@@ -2077,6 +2078,12 @@ pub fn getGlobalIndex(self: *const Coff, name: []const u8) ?u32 {
return self.resolver.get(name);
}
+/// Returns global entry at `index`.
+pub fn getGlobalByIndex(self: *const Coff, index: u32) SymbolWithLoc {
+ assert(index < self.globals.items.len);
+ return self.globals.items[index];
+}
+
const GetOrPutGlobalPtrResult = struct {
found_existing: bool,
value_ptr: *SymbolWithLoc,