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