diff options
| author | Luuk de Gram <luuk@degram.dev> | 2022-02-27 21:15:33 +0100 |
|---|---|---|
| committer | Luuk de Gram <luuk@degram.dev> | 2022-03-01 08:35:20 +0100 |
| commit | b1159ab7aecfe704adcb4cf44d6fedafd572a720 (patch) | |
| tree | 7ddafb8b9c72922f22cc6c03987b72e9006df300 /src/link/Wasm/Atom.zig | |
| parent | 49f01c0a0cd510437f6f2d13d5de3e722f48cc3d (diff) | |
| download | zig-b1159ab7aecfe704adcb4cf44d6fedafd572a720.tar.gz zig-b1159ab7aecfe704adcb4cf44d6fedafd572a720.zip | |
wasm-linker: Intern all symbol names
For all symbols read from object files as well as generated from Zig code
will now be interned and have their offset into the string table saved on the `Symbol` instead.
Besides interning, local symbols now also use a decl's fully qualified name.
When a decl/symbol is extern/to-be-imported, the name of the decl itself will be used for symbol resolving.
Similarly for symbols that will be exported, will have their 'export name' set.
Diffstat (limited to 'src/link/Wasm/Atom.zig')
| -rw-r--r-- | src/link/Wasm/Atom.zig | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/link/Wasm/Atom.zig b/src/link/Wasm/Atom.zig index d7cf43b2da..a3e1c25190 100644 --- a/src/link/Wasm/Atom.zig +++ b/src/link/Wasm/Atom.zig @@ -103,17 +103,17 @@ pub fn symbolLoc(self: Atom) Wasm.SymbolLoc { /// at the calculated offset. pub fn resolveRelocs(self: *Atom, wasm_bin: *const Wasm) !void { if (self.relocs.items.len == 0) return; - const symbol = self.symbolLoc().getSymbol(wasm_bin).*; + const symbol_name = self.symbolLoc().getName(wasm_bin); log.debug("Resolving relocs in atom '{s}' count({d})", .{ - symbol.name, + symbol_name, self.relocs.items.len, }); for (self.relocs.items) |reloc| { const value = try self.relocationValue(reloc, wasm_bin); log.debug("Relocating '{s}' referenced in '{s}' offset=0x{x:0>8} value={d}", .{ - (Wasm.SymbolLoc{ .file = self.file, .index = reloc.index }).getSymbol(wasm_bin).name, - symbol.name, + (Wasm.SymbolLoc{ .file = self.file, .index = reloc.index }).getName(wasm_bin), + symbol_name, reloc.offset, value, }); |
