mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-02-01 05:01:59 +01:00
4b802a178e
ld64 supplies its own Thumb bit for Thumb functions, and intentionally zeroes out that part of any addend in an object file. But it only does that for symbols marked N_EXT -- i.e. external symbols. So LLVM should avoid setting that extra bit in other cases. llvm-svn: 339007
31 lines
753 B
ArmAsm
31 lines
753 B
ArmAsm
@ RUN: llvm-mc -triple thumbv7-apple-ios %s -filetype=obj -o %t
|
|
@ RUN: llvm-objdump -macho -d %t -triple thumbv7-apple-ios | FileCheck %s
|
|
|
|
@ ARM relocatable object files try to look like they're pre-linked, so the
|
|
@ offsets in the instructions are a best-guess. I suspect the "-3" should b
|
|
|
|
@ CHECK: movw r1, :lower16:((_bar-8)-3)
|
|
@ [...]
|
|
@ CHECK: .long {{[0-9]*[13579]}}
|
|
|
|
.thumb
|
|
.thumb_func _foo
|
|
_foo:
|
|
movw r1, :lower16:(_bar-(LPC2_0+4))
|
|
movt r1, :upper16:(_bar-(LPC2_0+4))
|
|
LPC2_0:
|
|
add r1, pc
|
|
ldr r0, Lconstpool
|
|
bx lr
|
|
Lconstpool:
|
|
.data_region
|
|
.word _bar
|
|
.end_data_region
|
|
|
|
.thumb_func _bar
|
|
.global _bar
|
|
_bar:
|
|
bx lr
|
|
|
|
.subsections_via_symbols
|