diff options
Diffstat (limited to 'lib/MC/ELFObjectWriter.cpp')
-rw-r--r-- | lib/MC/ELFObjectWriter.cpp | 21 |
1 files changed, 5 insertions, 16 deletions
diff --git a/lib/MC/ELFObjectWriter.cpp b/lib/MC/ELFObjectWriter.cpp index d249c92dad..5a4f89d8d7 100644 --- a/lib/MC/ELFObjectWriter.cpp +++ b/lib/MC/ELFObjectWriter.cpp @@ -472,22 +472,11 @@ void ELFObjectWriterImpl::WriteSymbol(MCDataFragment *F, ELFSymbolData &MSD, const MCBinaryExpr *BE = static_cast<const MCBinaryExpr *>(ESize); if (BE->EvaluateAsRelocatable(Res, &Layout)) { - uint64_t AddressA = 0; - uint64_t AddressB = 0; - const MCSymbol &SymA = Res.getSymA()->getSymbol(); - const MCSymbol &SymB = Res.getSymB()->getSymbol(); - - if (SymA.isDefined()) { - MCSymbolData &A = Layout.getAssembler().getSymbolData(SymA); - AddressA = Layout.getSymbolAddress(&A); - } - - if (SymB.isDefined()) { - MCSymbolData &B = Layout.getAssembler().getSymbolData(SymB); - AddressB = Layout.getSymbolAddress(&B); - } - - Size = AddressA - AddressB; + const llvm::MCSymbolRefExpr *A = Res.getSymA(); + const llvm::MCSymbolRefExpr *B = Res.getSymA(); + assert(!A || !A->getSymbol().isDefined()); + assert(!B || !B->getSymbol().isDefined()); + Size = Res.getConstant(); } } else if (ESize->getKind() == MCExpr::Constant) { Size = static_cast<const MCConstantExpr *>(ESize)->getValue(); |