forked from OSchip/llvm-project
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
This commit is contained in:
parent
ba5757da64
commit
e61a902371
|
@ -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
|
||||
|
|
|
@ -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
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue