From 9a6dbcb2d84d936ebfdba8cf7244feeb34fbc892 Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Thu, 20 Aug 2015 16:18:30 +0000 Subject: [PATCH] Fix symbol value computation when part of the expression is weak. This matches the behaviour of the gnu assembler and is part of fixing pr24486. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245576 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/MC/MCAssembler.cpp | 2 +- test/MC/X86/expand-var.s | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/MC/MCAssembler.cpp b/lib/MC/MCAssembler.cpp index 4ec81b3c3bb..09a27fec986 100644 --- a/lib/MC/MCAssembler.cpp +++ b/lib/MC/MCAssembler.cpp @@ -137,7 +137,7 @@ static bool getSymbolOffsetImpl(const MCAsmLayout &Layout, const MCSymbol &S, // If SD is a variable, evaluate it. MCValue Target; - if (!S.getVariableValue()->evaluateAsRelocatable(Target, &Layout, nullptr)) + if (!S.getVariableValue()->evaluateAsValue(Target, Layout)) report_fatal_error("unable to evaluate offset for variable '" + S.getName() + "'"); diff --git a/test/MC/X86/expand-var.s b/test/MC/X86/expand-var.s index 8d5529a9a46..d9b8bb9394a 100644 --- a/test/MC/X86/expand-var.s +++ b/test/MC/X86/expand-var.s @@ -1,9 +1,13 @@ -// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux < %s | llvm-readobj -r | FileCheck %s +// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux < %s | llvm-readobj -r -t | FileCheck %s // CHECK: Section {{.*}} .rela.text { // CHECK-NEXT: 0x0 R_X86_64_32 d 0x0 // CHECK-NEXT: } +// CHECK: Symbol { +// CHECK: Name: d2 +// CHECK-NEXT: Value: 0x2A + a: b = a c = a @@ -16,3 +20,4 @@ a2: .weak b2 b2 = a2 c2 = b2 - a2 + d2 = b2 - a2 + 42 -- 2.34.1