1; This tests for the basic implementation of PPCMachObjectWriter.cpp,
2; which is responsible for writing mach-o relocation entries for (PIC)
3; PowerPC objects.
4; NOTE: Darwin PPC asm syntax is not yet supported by PPCAsmParser,
5; so this test case uses ELF PPC asm syntax to produce a mach-o object.
6; Once PPCAsmParser supports darwin asm syntax, this test case should
7; be updated accordingly.
8
9; RUN: llvm-mc -filetype=obj -relocation-model=pic -mcpu=g4 -triple=powerpc-apple-darwin8 %s -o - | llvm-readobj -relocations | FileCheck -check-prefix=DARWIN-G4-DUMP %s
10
11;	.machine ppc7400
12	.section	__TEXT,__textcoal_nt,coalesced,pure_instructions
13	.section	__TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32
14	.section	__TEXT,__text,regular,pure_instructions
15	.globl	_main
16	.align	4
17_main:                                  ; @main
18; BB#0:                                 ; %entry
19	mflr 0
20	stw 31, -4(1)
21	stw 0, 8(1)
22	stwu 1, -80(1)
23	bl L0$pb
24L0$pb:
25	mr 31, 1
26	li 5, 0
27	mflr 2
28	stw 3, 68(31)
29	stw 5, 72(31)
30	stw 4, 64(31)
31	addis 2, 2, (L_.str-L0$pb)@ha
32	la 3, (L_.str-L0$pb)@l(2)
33	bl L_puts$stub
34	li 3, 0
35	addi 1, 1, 80
36	lwz 0, 8(1)
37	lwz 31, -4(1)
38	mtlr 0
39	blr
40
41	.section	__TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32
42	.align	4
43L_puts$stub:
44	.indirect_symbol	_puts
45	mflr 0
46	bcl 20, 31, L_puts$stub$tmp
47L_puts$stub$tmp:
48	mflr 11
49	addis 11, 11, (L_puts$lazy_ptr-L_puts$stub$tmp)@ha
50	mtlr 0
51	lwzu 12, (L_puts$lazy_ptr-L_puts$stub$tmp)@l(11)
52	mtctr 12
53	bctr
54	.section	__DATA,__la_symbol_ptr,lazy_symbol_pointers
55L_puts$lazy_ptr:
56	.indirect_symbol	_puts
57	.long	dyld_stub_binding_helper
58
59.subsections_via_symbols
60	.section	__TEXT,__cstring,cstring_literals
61L_.str:                                 ; @.str
62	.asciz	 "Hello, world!"
63
64; DARWIN-G4-DUMP:Format: Mach-O 32-bit ppc
65; DARWIN-G4-DUMP:Arch: powerpc
66; DARWIN-G4-DUMP:AddressSize: 32bit
67; DARWIN-G4-DUMP:Relocations [
68; DARWIN-G4-DUMP:  Section __text {
69; DARWIN-G4-DUMP:    0x34 1 2 0 PPC_RELOC_BR24 0 -
70; DARWIN-G4-DUMP:    0x30 0 2 n/a PPC_RELOC_LO16_SECTDIFF 1 _main
71; DARWIN-G4-DUMP:    0x0 0 2 n/a PPC_RELOC_PAIR 1 _main
72; DARWIN-G4-DUMP:    0x2C 0 2 n/a PPC_RELOC_HA16_SECTDIFF 1 _main
73; DARWIN-G4-DUMP:    0x60 0 2 n/a PPC_RELOC_PAIR 1 _main
74; DARWIN-G4-DUMP:  }
75; DARWIN-G4-DUMP:  Section __picsymbolstub1 {
76; DARWIN-G4-DUMP:    0x14 0 2 n/a PPC_RELOC_LO16_SECTDIFF 1 _main
77; DARWIN-G4-DUMP:    0x0 0 2 n/a PPC_RELOC_PAIR 1 _main
78; DARWIN-G4-DUMP:    0xC 0 2 n/a PPC_RELOC_HA16_SECTDIFF 1 _main
79; DARWIN-G4-DUMP:    0x18 0 2 n/a PPC_RELOC_PAIR 1 _main
80; DARWIN-G4-DUMP:  }
81; DARWIN-G4-DUMP:  Section __la_symbol_ptr {
82; DARWIN-G4-DUMP:    0x0 0 2 1 PPC_RELOC_VANILLA 0 dyld_stub_binding_helper
83; DARWIN-G4-DUMP:  }
84; DARWIN-G4-DUMP:]
85