aboutsummaryrefslogtreecommitdiffstats
path: root/lib/MC/ELFObjectWriter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/MC/ELFObjectWriter.cpp')
-rw-r--r--lib/MC/ELFObjectWriter.cpp21
1 files changed, 5 insertions, 16 deletions
diff --git a/lib/MC/ELFObjectWriter.cpp b/lib/MC/ELFObjectWriter.cpp
index d249c92..5a4f89d 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();