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