1fe2d5f848764dff8f9ba734a5e2438ca1535890eJim Grosbach@ RUN: llvm-mc -n -triple armv7-apple-darwin10 %s -filetype=obj -o %t.o 2fe2d5f848764dff8f9ba734a5e2438ca1535890eJim Grosbach@ RUN: macho-dump --dump-section-data < %t.o | FileCheck %s 3fe2d5f848764dff8f9ba734a5e2438ca1535890eJim Grosbach 4fe2d5f848764dff8f9ba734a5e2438ca1535890eJim Grosbach@ rdar://12359919 5fe2d5f848764dff8f9ba734a5e2438ca1535890eJim Grosbach 6fe2d5f848764dff8f9ba734a5e2438ca1535890eJim Grosbach .syntax unified 7fe2d5f848764dff8f9ba734a5e2438ca1535890eJim Grosbach .text 8fe2d5f848764dff8f9ba734a5e2438ca1535890eJim Grosbach 9fe2d5f848764dff8f9ba734a5e2438ca1535890eJim Grosbach .globl _bar 10fe2d5f848764dff8f9ba734a5e2438ca1535890eJim Grosbach .align 2 11fe2d5f848764dff8f9ba734a5e2438ca1535890eJim Grosbach .code 16 12fe2d5f848764dff8f9ba734a5e2438ca1535890eJim Grosbach .thumb_func _bar 13fe2d5f848764dff8f9ba734a5e2438ca1535890eJim Grosbach_bar: 14fe2d5f848764dff8f9ba734a5e2438ca1535890eJim Grosbach push {r7, lr} 15fe2d5f848764dff8f9ba734a5e2438ca1535890eJim Grosbach mov r7, sp 16fe2d5f848764dff8f9ba734a5e2438ca1535890eJim Grosbach bl _foo 17fe2d5f848764dff8f9ba734a5e2438ca1535890eJim Grosbach pop {r7, pc} 18fe2d5f848764dff8f9ba734a5e2438ca1535890eJim Grosbach 19fe2d5f848764dff8f9ba734a5e2438ca1535890eJim Grosbach 20fe2d5f848764dff8f9ba734a5e2438ca1535890eJim Grosbach_junk: 21fe2d5f848764dff8f9ba734a5e2438ca1535890eJim Grosbach@ Make the _foo symbol sufficiently far away to force the 'bl' relocation 22fe2d5f848764dff8f9ba734a5e2438ca1535890eJim Grosbach@ above to be out of range. On Darwin, the assembler deals with this by 23fe2d5f848764dff8f9ba734a5e2438ca1535890eJim Grosbach@ generating an external relocation so the linker can create a branch 24fe2d5f848764dff8f9ba734a5e2438ca1535890eJim Grosbach@ island. 25fe2d5f848764dff8f9ba734a5e2438ca1535890eJim Grosbach 26fe2d5f848764dff8f9ba734a5e2438ca1535890eJim Grosbach .space 20000000 27fe2d5f848764dff8f9ba734a5e2438ca1535890eJim Grosbach 28fe2d5f848764dff8f9ba734a5e2438ca1535890eJim Grosbach .section __TEXT,initcode,regular,pure_instructions 29fe2d5f848764dff8f9ba734a5e2438ca1535890eJim Grosbach 30fe2d5f848764dff8f9ba734a5e2438ca1535890eJim Grosbach .globl _foo 31fe2d5f848764dff8f9ba734a5e2438ca1535890eJim Grosbach .align 2 32fe2d5f848764dff8f9ba734a5e2438ca1535890eJim Grosbach .code 16 33fe2d5f848764dff8f9ba734a5e2438ca1535890eJim Grosbach_foo: 34fe2d5f848764dff8f9ba734a5e2438ca1535890eJim Grosbach push {r7, lr} 35fe2d5f848764dff8f9ba734a5e2438ca1535890eJim Grosbach mov r7, sp 36fe2d5f848764dff8f9ba734a5e2438ca1535890eJim Grosbach pop {r7, pc} 37fe2d5f848764dff8f9ba734a5e2438ca1535890eJim Grosbach 38fe2d5f848764dff8f9ba734a5e2438ca1535890eJim Grosbach 39fe2d5f848764dff8f9ba734a5e2438ca1535890eJim Grosbach@ CHECK: ('_relocations', [ 40fe2d5f848764dff8f9ba734a5e2438ca1535890eJim Grosbach@ CHECK: # Relocation 0 41fe2d5f848764dff8f9ba734a5e2438ca1535890eJim Grosbach@ CHECK: (('word-0', 0x4), 42fe2d5f848764dff8f9ba734a5e2438ca1535890eJim Grosbach@ CHECK: ('word-1', 0x6d000002)), 43fe2d5f848764dff8f9ba734a5e2438ca1535890eJim Grosbach@ CHECK: ]) 44