summaryrefslogtreecommitdiff
path: root/lib/MC/ELFObjectWriter.cpp
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2010-12-22 16:03:00 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2010-12-22 16:03:00 +0000
commitf01212489be07e261a0302744f878a54a39f05a5 (patch)
tree3d88d356839182fddbbc47e33609273adfb12108 /lib/MC/ELFObjectWriter.cpp
parent4d74305a1f55f458d401a79db4deeed726567195 (diff)
downloadllvm-f01212489be07e261a0302744f878a54a39f05a5.tar.gz
llvm-f01212489be07e261a0302744f878a54a39f05a5.tar.bz2
llvm-f01212489be07e261a0302744f878a54a39f05a5.tar.xz
Simplify the handling of .size expressions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122404 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/MC/ELFObjectWriter.cpp')
-rw-r--r--lib/MC/ELFObjectWriter.cpp23
1 files changed, 6 insertions, 17 deletions
diff --git a/lib/MC/ELFObjectWriter.cpp b/lib/MC/ELFObjectWriter.cpp
index bb523cefed..b6e1223bc4 100644
--- a/lib/MC/ELFObjectWriter.cpp
+++ b/lib/MC/ELFObjectWriter.cpp
@@ -594,26 +594,15 @@ void ELFObjectWriter::WriteSymbol(MCDataFragment *SymtabF,
uint64_t Value = SymbolValue(Data, Layout);
uint64_t Size = 0;
- const MCExpr *ESize;
assert(!(Data.isCommon() && !Data.isExternal()));
- ESize = Data.getSize();
- if (Data.getSize()) {
- MCValue Res;
- if (ESize->getKind() == MCExpr::Binary) {
- const MCBinaryExpr *BE = static_cast<const MCBinaryExpr *>(ESize);
-
- if (BE->EvaluateAsRelocatable(Res, &Layout)) {
- assert(!Res.getSymA() || !Res.getSymA()->getSymbol().isDefined());
- assert(!Res.getSymB() || !Res.getSymB()->getSymbol().isDefined());
- Size = Res.getConstant();
- }
- } else if (ESize->getKind() == MCExpr::Constant) {
- Size = static_cast<const MCConstantExpr *>(ESize)->getValue();
- } else {
- assert(0 && "Unsupported size expression");
- }
+ const MCExpr *ESize = Data.getSize();
+ if (ESize) {
+ int64_t Res;
+ if (!ESize->EvaluateAsAbsolute(Res, Layout))
+ report_fatal_error("Size expression must be absolute.");
+ Size = Res;
}
// Write out the symbol table entry