1d4f9d05fde4b2cfd202a5852ec1ec3e960ef53edDavid Fang; This tests for the basic implementation of PPCMachObjectWriter.cpp,
2d4f9d05fde4b2cfd202a5852ec1ec3e960ef53edDavid Fang; which is responsible for writing mach-o relocation entries for (PIC)
3d4f9d05fde4b2cfd202a5852ec1ec3e960ef53edDavid Fang; PowerPC objects.
4d4f9d05fde4b2cfd202a5852ec1ec3e960ef53edDavid Fang
5d4f9d05fde4b2cfd202a5852ec1ec3e960ef53edDavid Fang; 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
6d4f9d05fde4b2cfd202a5852ec1ec3e960ef53edDavid Fang
736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.machine ppc7400
8d4f9d05fde4b2cfd202a5852ec1ec3e960ef53edDavid Fang	.section	__TEXT,__textcoal_nt,coalesced,pure_instructions
9d4f9d05fde4b2cfd202a5852ec1ec3e960ef53edDavid Fang	.section	__TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32
10d4f9d05fde4b2cfd202a5852ec1ec3e960ef53edDavid Fang	.section	__TEXT,__text,regular,pure_instructions
11d4f9d05fde4b2cfd202a5852ec1ec3e960ef53edDavid Fang	.globl	_main
12d4f9d05fde4b2cfd202a5852ec1ec3e960ef53edDavid Fang	.align	4
13d4f9d05fde4b2cfd202a5852ec1ec3e960ef53edDavid Fang_main:                                  ; @main
14d4f9d05fde4b2cfd202a5852ec1ec3e960ef53edDavid Fang; BB#0:                                 ; %entry
1536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	mflr r0
1636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	stw r31, -4(r1)
1736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	stw r0, 8(r1)
1836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	stwu r1, -80(r1)
19d4f9d05fde4b2cfd202a5852ec1ec3e960ef53edDavid Fang	bl L0$pb
20d4f9d05fde4b2cfd202a5852ec1ec3e960ef53edDavid FangL0$pb:
2136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	mr r31, r1
2236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	li r5, 0
23d4f9d05fde4b2cfd202a5852ec1ec3e960ef53edDavid Fang	mflr 2
2436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	stw r3, 68(r31)
2536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	stw r5, 72(r31)
2636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	stw r4, 64(r31)
2736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	addis r2, r2, ha16(L_.str-L0$pb)
2836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	la r3, lo16(L_.str-L0$pb)(r2)
29d4f9d05fde4b2cfd202a5852ec1ec3e960ef53edDavid Fang	bl L_puts$stub
3036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	li r3, 0
3136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	addi r1, r1, 80
3236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	lwz r0, 8(r1)
3336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	lwz r31, -4(r1)
3436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	mtlr r0
35d4f9d05fde4b2cfd202a5852ec1ec3e960ef53edDavid Fang	blr
36d4f9d05fde4b2cfd202a5852ec1ec3e960ef53edDavid Fang
37d4f9d05fde4b2cfd202a5852ec1ec3e960ef53edDavid Fang	.section	__TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32
38d4f9d05fde4b2cfd202a5852ec1ec3e960ef53edDavid Fang	.align	4
39d4f9d05fde4b2cfd202a5852ec1ec3e960ef53edDavid FangL_puts$stub:
40d4f9d05fde4b2cfd202a5852ec1ec3e960ef53edDavid Fang	.indirect_symbol	_puts
4136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	mflr r0
42d4f9d05fde4b2cfd202a5852ec1ec3e960ef53edDavid Fang	bcl 20, 31, L_puts$stub$tmp
43d4f9d05fde4b2cfd202a5852ec1ec3e960ef53edDavid FangL_puts$stub$tmp:
4436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	mflr r11
4536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	addis r11, r11, ha16(L_puts$lazy_ptr-L_puts$stub$tmp)
4636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	mtlr r0
4736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	lwzu r12, lo16(L_puts$lazy_ptr-L_puts$stub$tmp)(r11)
4836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	mtctr r12
49d4f9d05fde4b2cfd202a5852ec1ec3e960ef53edDavid Fang	bctr
50d4f9d05fde4b2cfd202a5852ec1ec3e960ef53edDavid Fang	.section	__DATA,__la_symbol_ptr,lazy_symbol_pointers
51d4f9d05fde4b2cfd202a5852ec1ec3e960ef53edDavid FangL_puts$lazy_ptr:
52d4f9d05fde4b2cfd202a5852ec1ec3e960ef53edDavid Fang	.indirect_symbol	_puts
53d4f9d05fde4b2cfd202a5852ec1ec3e960ef53edDavid Fang	.long	dyld_stub_binding_helper
54d4f9d05fde4b2cfd202a5852ec1ec3e960ef53edDavid Fang
55d4f9d05fde4b2cfd202a5852ec1ec3e960ef53edDavid Fang.subsections_via_symbols
56d4f9d05fde4b2cfd202a5852ec1ec3e960ef53edDavid Fang	.section	__TEXT,__cstring,cstring_literals
57d4f9d05fde4b2cfd202a5852ec1ec3e960ef53edDavid FangL_.str:                                 ; @.str
58d4f9d05fde4b2cfd202a5852ec1ec3e960ef53edDavid Fang	.asciz	 "Hello, world!"
59d4f9d05fde4b2cfd202a5852ec1ec3e960ef53edDavid Fang
60d4f9d05fde4b2cfd202a5852ec1ec3e960ef53edDavid Fang; DARWIN-G4-DUMP:Format: Mach-O 32-bit ppc
61d4f9d05fde4b2cfd202a5852ec1ec3e960ef53edDavid Fang; DARWIN-G4-DUMP:Arch: powerpc
62d4f9d05fde4b2cfd202a5852ec1ec3e960ef53edDavid Fang; DARWIN-G4-DUMP:AddressSize: 32bit
63d4f9d05fde4b2cfd202a5852ec1ec3e960ef53edDavid Fang; DARWIN-G4-DUMP:Relocations [
64d4f9d05fde4b2cfd202a5852ec1ec3e960ef53edDavid Fang; DARWIN-G4-DUMP:  Section __text {
65cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; DARWIN-G4-DUMP:    0x34 1 2 0 PPC_RELOC_BR24 0 0x3
66cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; DARWIN-G4-DUMP:    0x30 0 2 n/a PPC_RELOC_LO16_SECTDIFF 1 0x74
67cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; DARWIN-G4-DUMP:    0x0 0 2 n/a PPC_RELOC_PAIR 1 0x14
68cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; DARWIN-G4-DUMP:    0x2C 0 2 n/a PPC_RELOC_HA16_SECTDIFF 1 0x74
69cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; DARWIN-G4-DUMP:    0x60 0 2 n/a PPC_RELOC_PAIR 1 0x14
70d4f9d05fde4b2cfd202a5852ec1ec3e960ef53edDavid Fang; DARWIN-G4-DUMP:  }
71d4f9d05fde4b2cfd202a5852ec1ec3e960ef53edDavid Fang; DARWIN-G4-DUMP:  Section __picsymbolstub1 {
72cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; DARWIN-G4-DUMP:    0x14 0 2 n/a PPC_RELOC_LO16_SECTDIFF 1 0x70
73cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; DARWIN-G4-DUMP:    0x0 0 2 n/a PPC_RELOC_PAIR 1 0x58
74cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; DARWIN-G4-DUMP:    0xC 0 2 n/a PPC_RELOC_HA16_SECTDIFF 1 0x70
75cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; DARWIN-G4-DUMP:    0x18 0 2 n/a PPC_RELOC_PAIR 1 0x58
76d4f9d05fde4b2cfd202a5852ec1ec3e960ef53edDavid Fang; DARWIN-G4-DUMP:  }
77d4f9d05fde4b2cfd202a5852ec1ec3e960ef53edDavid Fang; DARWIN-G4-DUMP:  Section __la_symbol_ptr {
78d4f9d05fde4b2cfd202a5852ec1ec3e960ef53edDavid Fang; DARWIN-G4-DUMP:    0x0 0 2 1 PPC_RELOC_VANILLA 0 dyld_stub_binding_helper
79d4f9d05fde4b2cfd202a5852ec1ec3e960ef53edDavid Fang; DARWIN-G4-DUMP:  }
80d4f9d05fde4b2cfd202a5852ec1ec3e960ef53edDavid Fang; DARWIN-G4-DUMP:]
81