1*9880d681SAndroid Build Coastguard Worker; This tests for the basic implementation of PPCMachObjectWriter.cpp, 2*9880d681SAndroid Build Coastguard Worker; which is responsible for writing mach-o relocation entries for (PIC) 3*9880d681SAndroid Build Coastguard Worker; PowerPC objects. 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Worker; RUN: llvm-mc -filetype=obj -mcpu=g4 -triple=powerpc-apple-darwin8 %s -o - | llvm-readobj -r --expand-relocs | FileCheck -check-prefix=DARWIN-G4-DUMP %s 6*9880d681SAndroid Build Coastguard Worker 7*9880d681SAndroid Build Coastguard Worker .machine ppc7400 8*9880d681SAndroid Build Coastguard Worker .section __TEXT,__textcoal_nt,coalesced,pure_instructions 9*9880d681SAndroid Build Coastguard Worker .section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32 10*9880d681SAndroid Build Coastguard Worker .section __TEXT,__text,regular,pure_instructions 11*9880d681SAndroid Build Coastguard Worker .globl _main 12*9880d681SAndroid Build Coastguard Worker .align 4 13*9880d681SAndroid Build Coastguard Worker_main: ; @main 14*9880d681SAndroid Build Coastguard Worker; BB#0: ; %entry 15*9880d681SAndroid Build Coastguard Worker mflr r0 16*9880d681SAndroid Build Coastguard Worker stw r31, -4(r1) 17*9880d681SAndroid Build Coastguard Worker stw r0, 8(r1) 18*9880d681SAndroid Build Coastguard Worker stwu r1, -80(r1) 19*9880d681SAndroid Build Coastguard Worker bl L0$pb 20*9880d681SAndroid Build Coastguard WorkerL0$pb: 21*9880d681SAndroid Build Coastguard Worker mr r31, r1 22*9880d681SAndroid Build Coastguard Worker li r5, 0 23*9880d681SAndroid Build Coastguard Worker mflr 2 24*9880d681SAndroid Build Coastguard Worker stw r3, 68(r31) 25*9880d681SAndroid Build Coastguard Worker stw r5, 72(r31) 26*9880d681SAndroid Build Coastguard Worker stw r4, 64(r31) 27*9880d681SAndroid Build Coastguard Worker addis r2, r2, ha16(L_.str-L0$pb) 28*9880d681SAndroid Build Coastguard Worker la r3, lo16(L_.str-L0$pb)(r2) 29*9880d681SAndroid Build Coastguard Worker bl L_puts$stub 30*9880d681SAndroid Build Coastguard Worker li r3, 0 31*9880d681SAndroid Build Coastguard Worker addi r1, r1, 80 32*9880d681SAndroid Build Coastguard Worker lwz r0, 8(r1) 33*9880d681SAndroid Build Coastguard Worker lwz r31, -4(r1) 34*9880d681SAndroid Build Coastguard Worker mtlr r0 35*9880d681SAndroid Build Coastguard Worker blr 36*9880d681SAndroid Build Coastguard Worker 37*9880d681SAndroid Build Coastguard Worker .section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32 38*9880d681SAndroid Build Coastguard Worker .align 4 39*9880d681SAndroid Build Coastguard WorkerL_puts$stub: 40*9880d681SAndroid Build Coastguard Worker .indirect_symbol _puts 41*9880d681SAndroid Build Coastguard Worker mflr r0 42*9880d681SAndroid Build Coastguard Worker bcl 20, 31, L_puts$stub$tmp 43*9880d681SAndroid Build Coastguard WorkerL_puts$stub$tmp: 44*9880d681SAndroid Build Coastguard Worker mflr r11 45*9880d681SAndroid Build Coastguard Worker addis r11, r11, ha16(L_puts$lazy_ptr-L_puts$stub$tmp) 46*9880d681SAndroid Build Coastguard Worker mtlr r0 47*9880d681SAndroid Build Coastguard Worker lwzu r12, lo16(L_puts$lazy_ptr-L_puts$stub$tmp)(r11) 48*9880d681SAndroid Build Coastguard Worker mtctr r12 49*9880d681SAndroid Build Coastguard Worker bctr 50*9880d681SAndroid Build Coastguard Worker .section __DATA,__la_symbol_ptr,lazy_symbol_pointers 51*9880d681SAndroid Build Coastguard WorkerL_puts$lazy_ptr: 52*9880d681SAndroid Build Coastguard Worker .indirect_symbol _puts 53*9880d681SAndroid Build Coastguard Worker .long dyld_stub_binding_helper 54*9880d681SAndroid Build Coastguard Worker 55*9880d681SAndroid Build Coastguard Worker.subsections_via_symbols 56*9880d681SAndroid Build Coastguard Worker .section __TEXT,__cstring,cstring_literals 57*9880d681SAndroid Build Coastguard WorkerL_.str: ; @.str 58*9880d681SAndroid Build Coastguard Worker .asciz "Hello, world!" 59*9880d681SAndroid Build Coastguard Worker 60*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP:Format: Mach-O 32-bit ppc 61*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP:Arch: powerpc 62*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP:AddressSize: 32bit 63*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP:Relocations [ 64*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: Section __text { 65*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: Relocation { 66*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: Offset: 0x34 67*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: PCRel: 1 68*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: Length: 2 69*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: Type: PPC_RELOC_BR24 (3) 70*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: Section: __picsymbolstub1 71*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: } 72*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: Relocation { 73*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: Offset: 0x30 74*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: PCRel: 0 75*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: Length: 2 76*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: Type: PPC_RELOC_LO16_SECTDIFF (11) 77*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: Value: 0x74 78*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: } 79*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: Relocation { 80*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: Offset: 0x0 81*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: PCRel: 0 82*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: Length: 2 83*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: Type: PPC_RELOC_PAIR (1) 84*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: Value: 0x14 85*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: } 86*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: Relocation { 87*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: Offset: 0x2C 88*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: PCRel: 0 89*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: Length: 2 90*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: Type: PPC_RELOC_HA16_SECTDIFF (12) 91*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: Value: 0x74 92*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: } 93*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: Relocation { 94*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: Offset: 0x60 95*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: PCRel: 0 96*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: Length: 2 97*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: Type: PPC_RELOC_PAIR (1) 98*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: Value: 0x14 99*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: } 100*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: } 101*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: Section __picsymbolstub1 { 102*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: Relocation { 103*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: Offset: 0x14 104*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: PCRel: 0 105*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: Length: 2 106*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: Type: PPC_RELOC_LO16_SECTDIFF (11) 107*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: Value: 0x70 108*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: } 109*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: Relocation { 110*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: Offset: 0x0 111*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: PCRel: 0 112*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: Length: 2 113*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: Type: PPC_RELOC_PAIR (1) 114*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: Value: 0x58 115*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: } 116*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: Relocation { 117*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: Offset: 0xC 118*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: PCRel: 0 119*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: Length: 2 120*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: Type: PPC_RELOC_HA16_SECTDIFF (12) 121*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: Value: 0x70 122*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: } 123*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: Relocation { 124*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: Offset: 0x18 125*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: PCRel: 0 126*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: Length: 2 127*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: Type: PPC_RELOC_PAIR (1) 128*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: Value: 0x58 129*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: } 130*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: } 131*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: Section __la_symbol_ptr { 132*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: Relocation { 133*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: Offset: 0x0 134*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: PCRel: 0 135*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: Length: 2 136*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: Type: PPC_RELOC_VANILLA (0) 137*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: Symbol: dyld_stub_binding_helper 138*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: } 139*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP: } 140*9880d681SAndroid Build Coastguard Worker; DARWIN-G4-DUMP:] 141