diff options
Diffstat (limited to 'llvm/lib/MC/WasmObjectWriter.cpp')
-rw-r--r-- | llvm/lib/MC/WasmObjectWriter.cpp | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/llvm/lib/MC/WasmObjectWriter.cpp b/llvm/lib/MC/WasmObjectWriter.cpp index 6b775e1..d16be49 100644 --- a/llvm/lib/MC/WasmObjectWriter.cpp +++ b/llvm/lib/MC/WasmObjectWriter.cpp @@ -610,16 +610,13 @@ WasmObjectWriter::getProvisionalValue(const WasmRelocationEntry &RelEntry, case wasm::R_WASM_MEMORY_ADDR_I64: case wasm::R_WASM_MEMORY_ADDR_TLS_SLEB: { // Provisional value is address of the global plus the offset - const MCSymbolWasm *Base = - cast<MCSymbolWasm>(Layout.getBaseSymbol(*RelEntry.Symbol)); // For undefined symbols, use zero - if (!Base->isDefined()) + if (!RelEntry.Symbol->isDefined()) return 0; - const wasm::WasmDataReference &BaseRef = DataLocations[Base], - &SymRef = DataLocations[RelEntry.Symbol]; - const WasmDataSegment &Segment = DataSegments[BaseRef.Segment]; + const wasm::WasmDataReference &SymRef = DataLocations[RelEntry.Symbol]; + const WasmDataSegment &Segment = DataSegments[SymRef.Segment]; // Ignore overflow. LLVM allows address arithmetic to silently wrap. - return Segment.Offset + BaseRef.Offset + SymRef.Offset + RelEntry.Addend; + return Segment.Offset + SymRef.Offset + RelEntry.Addend; } default: llvm_unreachable("invalid relocation type"); |