From e61a9023713ab0c4e3d1ddde65332c5081aaf97c Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Thu, 5 Nov 2015 01:10:15 +0000 Subject: [PATCH] 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. llvm-svn: 252119 --- llvm/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp | 10 ++++------ llvm/test/MC/ARM/thumb-branches-err.s | 7 ------- llvm/test/MC/ARM/thumb-branches.s | 5 +++++ 3 files changed, 9 insertions(+), 13 deletions(-) delete mode 100644 llvm/test/MC/ARM/thumb-branches-err.s diff --git a/llvm/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp b/llvm/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp index fd678fb132ee..7a0a089b35f5 100644 --- a/llvm/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp +++ b/llvm/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/llvm/test/MC/ARM/thumb-branches-err.s b/llvm/test/MC/ARM/thumb-branches-err.s deleted file mode 100644 index 624ebeeb037f..000000000000 --- a/llvm/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/llvm/test/MC/ARM/thumb-branches.s b/llvm/test/MC/ARM/thumb-branches.s index 4870e8216239..b4cdfa12a556 100644 --- a/llvm/test/MC/ARM/thumb-branches.s +++ b/llvm/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