mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-19 19:12:56 +02:00
[ARM] Create relocations for beq.w branches to ARM function syms.
Summary: The ARM ELF ABI requires the linker to do interworking for wide conditional branches from Thumb code to ARM code. That was pointed out by @peter.smith in the comments for D33436. Reviewers: rafael, peter.smith, echristo Reviewed By: peter.smith Subscribers: aemerson, javed.absar, kristof.beyls, llvm-commits, peter.smith Differential Revision: https://reviews.llvm.org/D34447 llvm-svn: 306009
This commit is contained in:
parent
38d4905a9a
commit
ee7da221bf
@ -759,6 +759,7 @@ void ARMAsmBackend::processFixupValue(const MCAssembler &Asm,
|
||||
IsResolved = false;
|
||||
if (!Asm.isThumbFunc(Sym) && (FixupKind == ARM::fixup_arm_thumb_br ||
|
||||
FixupKind == ARM::fixup_arm_thumb_bl ||
|
||||
FixupKind == ARM::fixup_t2_condbranch ||
|
||||
FixupKind == ARM::fixup_t2_uncondbranch))
|
||||
IsResolved = false;
|
||||
}
|
||||
|
39
test/MC/ARM/thumb2-beq-fixup.s
Normal file
39
test/MC/ARM/thumb2-beq-fixup.s
Normal file
@ -0,0 +1,39 @@
|
||||
@ RUN: llvm-mc < %s -triple armv7-linux-gnueabi -filetype=obj -o - \
|
||||
@ RUN: | llvm-readobj -r | FileCheck %s
|
||||
|
||||
.code 16
|
||||
.thumb_func
|
||||
thumb_caller:
|
||||
beq.w internal_arm_fn
|
||||
beq.w global_arm_fn
|
||||
beq.w global_thumb_fn
|
||||
beq.w internal_thumb_fn
|
||||
|
||||
.type internal_arm_fn,%function
|
||||
.code 32
|
||||
internal_arm_fn:
|
||||
bx lr
|
||||
|
||||
.globl global_arm_fn
|
||||
.type global_arm_fn,%function
|
||||
.code 32
|
||||
global_arm_fn:
|
||||
bx lr
|
||||
|
||||
.type internal_thumb_fn,%function
|
||||
.code 16
|
||||
.thumb_func
|
||||
internal_thumb_fn:
|
||||
bx lr
|
||||
|
||||
.globl global_thumb_fn
|
||||
.type global_thumb_fn,%function
|
||||
.code 16
|
||||
.thumb_func
|
||||
global_thumb_fn:
|
||||
bx lr
|
||||
|
||||
@ CHECK: Section (3) .rel.text
|
||||
@ CHECK-NEXT: 0x0 R_ARM_THM_JUMP19 internal_arm_fn 0x0
|
||||
@ CHECK-NEXT: 0x4 R_ARM_THM_JUMP19 global_arm_fn 0x0
|
||||
@ CHECK-NEXT: }
|
Loading…
Reference in New Issue
Block a user