From: Rafael Espindola Date: Thu, 5 Nov 2015 01:10:15 +0000 (+0000) Subject: Go back to producing relocations for out of range symbols. X-Git-Url: http://plrg.eecs.uci.edu/git/?p=oota-llvm.git;a=commitdiff_plain;h=df00d955734ebb3dd351c90b5dadc839fd113a48 Go back to producing relocations for out of range symbols. This brings back the behavior from before r252090 for out of range symbols. Should bring some arm bots back. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@252119 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp b/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp index fd678fb132e..7a0a089b35f 100644 --- a/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp +++ b/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp @@ -639,13 +639,11 @@ void ARMAsmBackend::processFixupValue(const MCAssembler &Asm, // If the symbol is external the linker will handle it. // FIXME: Should we handle it as an optimization? - if (Sym->isExternal()) { + + // If the symbol is out of range, produce a relocation and hope the + // linker can handle it. GNU AS produces an error in this case. + if (Sym->isExternal() || Value >= 0x400004) IsResolved = false; - } else { - if (Value >= 0x400004) - Asm.getContext().reportFatalError(Fixup.getLoc(), - "out of range for branch"); - } } // We must always generate a relocation for BL/BLX instructions if we have // a symbol to reference, as the linker relies on knowing the destination diff --git a/test/MC/ARM/thumb-branches-err.s b/test/MC/ARM/thumb-branches-err.s deleted file mode 100644 index 624ebeeb037..00000000000 --- a/test/MC/ARM/thumb-branches-err.s +++ /dev/null @@ -1,7 +0,0 @@ -@ RUN: not llvm-mc < %s -triple thumbv5-linux-gnueabi -filetype=obj -o %t 2>&1 | FileCheck %s - - bl end - .space 0x400000 -end: - -@ CHECK: out of range for branch diff --git a/test/MC/ARM/thumb-branches.s b/test/MC/ARM/thumb-branches.s index 4870e821623..b4cdfa12a55 100644 --- a/test/MC/ARM/thumb-branches.s +++ b/test/MC/ARM/thumb-branches.s @@ -16,5 +16,10 @@ end2: .global end3 end3: + bl end4 + .space 0x400000 +end4: + @ CHECK: 0x400003 R_ARM_THM_CALL end2 0x0 @ CHECK: 0x800006 R_ARM_THM_CALL end3 0x0 +@ CHECK: 0xC0000A R_ARM_THM_CALL end4 0x0