Expand variables when evaluating absolute expressions.

This allows for variables to be used in .size.
This matches gnu AS functionality.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@231295 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Rafael Espindola 2015-03-04 22:03:21 +00:00
parent af9251f66b
commit 236aa85873
2 changed files with 16 additions and 1 deletions

View File

@ -436,7 +436,7 @@ bool MCExpr::evaluateAsAbsolute(int64_t &Res, const MCAssembler *Asm,
}
bool IsRelocatable = EvaluateAsRelocatableImpl(
Value, Asm, Layout, nullptr, Addrs, InSet, /*ForceVarExpansion*/ false);
Value, Asm, Layout, nullptr, Addrs, InSet, /*ForceVarExpansion*/ true);
// Record the current value.
Res = Value.getConstant();

15
test/MC/ELF/size.s Normal file
View File

@ -0,0 +1,15 @@
// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux < %s | llvm-readobj -t | FileCheck %s
foo:
bar = .
.size foo, . - bar + 42
// CHECK: Symbol {
// CHECK: Name: foo
// CHECK-NEXT: Value: 0x0
// CHECK-NEXT: Size: 42
// CHECK-NEXT: Binding: Local
// CHECK-NEXT: Type: None
// CHECK-NEXT: Other: 0
// CHECK-NEXT: Section: .text
// CHECK-NEXT: }