From 236aa858730918e965417f5957e304d870a22c9f Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Wed, 4 Mar 2015 22:03:21 +0000 Subject: [PATCH] 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 --- lib/MC/MCExpr.cpp | 2 +- test/MC/ELF/size.s | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 test/MC/ELF/size.s diff --git a/lib/MC/MCExpr.cpp b/lib/MC/MCExpr.cpp index 049113cf5ab..abd48c094dd 100644 --- a/lib/MC/MCExpr.cpp +++ b/lib/MC/MCExpr.cpp @@ -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(); diff --git a/test/MC/ELF/size.s b/test/MC/ELF/size.s new file mode 100644 index 00000000000..7bbf6616322 --- /dev/null +++ b/test/MC/ELF/size.s @@ -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: }