1@ RUN: llvm-mc -n -triple armv7-apple-darwin10 %s -filetype=obj -o %t.o 2@ RUN: llvm-readobj -relocations -expand-relocs < %t.o | FileCheck %s 3 4@ rdar://12359919 5 6 .syntax unified 7 .text 8 9 .globl _bar 10 .align 2 11 .code 16 12 .thumb_func _bar 13_bar: 14 push {r7, lr} 15 mov r7, sp 16 bl _foo 17 pop {r7, pc} 18 19 20_junk: 21@ Make the _foo symbol sufficiently far away to force the 'bl' relocation 22@ above to be out of range. On Darwin, the assembler deals with this by 23@ generating an external relocation so the linker can create a branch 24@ island. 25 26 .space 20000000 27 28 .section __TEXT,initcode,regular,pure_instructions 29 30 .globl _foo 31 .align 2 32 .code 16 33_foo: 34 push {r7, lr} 35 mov r7, sp 36 pop {r7, pc} 37 38 39@ CHECK: File: <stdin> 40@ CHECK: Format: Mach-O arm 41@ CHECK: Arch: arm 42@ CHECK: AddressSize: 32bit 43@ CHECK: Relocations [ 44@ CHECK: Section __text { 45@ CHECK: Relocation { 46@ CHECK: Offset: 0x4 47@ CHECK: PCRel: 1 48@ CHECK: Length: 2 49@ CHECK: Type: ARM_THUMB_RELOC_BR22 (6) 50@ CHECK: Symbol: _foo (2) 51@ CHECK: } 52@ CHECK: } 53@ CHECK: ] 54