mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-04 18:06:49 +00:00
6361cd131c
Its existence is largely historical, apparently we tried to make ARM object files look maybe-almost-possibly runnable by putting our best guess at the actual value into relocated locations. Of course, the real linker then comes along and can completely change things. But it should only be there for word-sized and movw/movt relocations. It can't be encoded in branch relocations, and I've seen it mess up validity calculations twice in the last couple of weeks so the default is clearly problematic. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@279773 91177308-0d34-0410-b5e6-96231b3b80d8
37 lines
874 B
ArmAsm
37 lines
874 B
ArmAsm
@ RUN: llvm-mc -triple thumbv7-apple-ios -filetype=obj %s -o %t
|
|
@ RUN: llvm-objdump -macho -d %t | FileCheck %s
|
|
|
|
@ Size: 2 bytes
|
|
.thumb_func _f1
|
|
.thumb
|
|
.globl _f1
|
|
_f1:
|
|
bx lr
|
|
|
|
@ A properly aligned ARM function
|
|
.globl _aligned
|
|
.p2align 2
|
|
.arm
|
|
_aligned:
|
|
bx lr
|
|
|
|
@ Align this Thumb function so we can predict the outcome of
|
|
@ "Align(PC, 4)" during blx operation.
|
|
.thumb_func _test
|
|
.thumb
|
|
.p2align 2
|
|
.globl _test
|
|
_test:
|
|
blx _elsewhere
|
|
blx _aligned @ PC=0 (mod 4)
|
|
blx _aligned @ PC=0 (mod 4)
|
|
movs r0, r0
|
|
blx _aligned @ PC=2 (mod 4)
|
|
blx _f1
|
|
|
|
@ CHECK: blx _elsewhere
|
|
@ CHECK: ff f7 fa ef blx _aligned
|
|
@ CHECK: ff f7 f8 ef blx _aligned
|
|
@ CHECK: ff f7 f6 ef blx _aligned
|
|
@ CHECK: ff f7 f2 ef blx _f1
|