[llvm-commits] [llvm] r122404 - in /llvm/trunk: lib/MC/ELFObjectWriter.cpp test/MC/ELF/size.s
Rafael Espindola
rafael.espindola at gmail.com
Wed Dec 22 08:03:00 PST 2010
Author: rafael
Date: Wed Dec 22 10:03:00 2010
New Revision: 122404
URL: http://llvm.org/viewvc/llvm-project?rev=122404&view=rev
Log:
Simplify the handling of .size expressions.
Removed:
llvm/trunk/test/MC/ELF/size.s
Modified:
llvm/trunk/lib/MC/ELFObjectWriter.cpp
Modified: llvm/trunk/lib/MC/ELFObjectWriter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/ELFObjectWriter.cpp?rev=122404&r1=122403&r2=122404&view=diff
==============================================================================
--- llvm/trunk/lib/MC/ELFObjectWriter.cpp (original)
+++ llvm/trunk/lib/MC/ELFObjectWriter.cpp Wed Dec 22 10:03:00 2010
@@ -594,26 +594,15 @@
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
Removed: llvm/trunk/test/MC/ELF/size.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/ELF/size.s?rev=122403&view=auto
==============================================================================
--- llvm/trunk/test/MC/ELF/size.s (original)
+++ llvm/trunk/test/MC/ELF/size.s (removed)
@@ -1,10 +0,0 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump | FileCheck %s
-
-// Mostly a test that this doesn't crash anymore.
-
-// CHECK: # Symbol 0x00000004
-// CHECK-NEXT: (('st_name', 0x00000001) # 'foo'
-// CHECK-NEXT: ('st_bind', 0x00000001)
-
- .size foo, .Lbar-foo
- .long foo
More information about the llvm-commits
mailing list