; This tests for the basic implementation of PPCMachObjectWriter.cpp, ; which is responsible for writing mach-o relocation entries for (PIC) ; PowerPC objects. ; 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 .machine ppc7400 .section __TEXT,__textcoal_nt,coalesced,pure_instructions .section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32 .section __TEXT,__text,regular,pure_instructions .globl _main .align 4 _main: ; @main ; %bb.0: ; %entry mflr r0 stw r31, -4(r1) stw r0, 8(r1) stwu r1, -80(r1) bl L0$pb L0$pb: mr r31, r1 li r5, 0 mflr 2 stw r3, 68(r31) stw r5, 72(r31) stw r4, 64(r31) addis r2, r2, ha16(L_.str-L0$pb) la r3, lo16(L_.str-L0$pb)(r2) bl L_puts$stub li r3, 0 addi r1, r1, 80 lwz r0, 8(r1) lwz r31, -4(r1) mtlr r0 blr .section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32 .align 4 L_puts$stub: .indirect_symbol _puts mflr r0 bcl 20, 31, L_puts$stub$tmp L_puts$stub$tmp: mflr r11 addis r11, r11, ha16(L_puts$lazy_ptr-L_puts$stub$tmp) mtlr r0 lwzu r12, lo16(L_puts$lazy_ptr-L_puts$stub$tmp)(r11) mtctr r12 bctr .section __DATA,__la_symbol_ptr,lazy_symbol_pointers L_puts$lazy_ptr: .indirect_symbol _puts .long dyld_stub_binding_helper .subsections_via_symbols .section __TEXT,__cstring,cstring_literals L_.str: ; @.str .asciz "Hello, world!" ; DARWIN-G4-DUMP:Format: Mach-O 32-bit ppc ; DARWIN-G4-DUMP:Arch: powerpc ; DARWIN-G4-DUMP:AddressSize: 32bit ; DARWIN-G4-DUMP:Relocations [ ; DARWIN-G4-DUMP: Section __text { ; DARWIN-G4-DUMP: Relocation { ; DARWIN-G4-DUMP: Offset: 0x34 ; DARWIN-G4-DUMP: PCRel: 1 ; DARWIN-G4-DUMP: Length: 2 ; DARWIN-G4-DUMP: Type: PPC_RELOC_BR24 (3) ; DARWIN-G4-DUMP: Section: __picsymbolstub1 ; DARWIN-G4-DUMP: } ; DARWIN-G4-DUMP: Relocation { ; DARWIN-G4-DUMP: Offset: 0x30 ; DARWIN-G4-DUMP: PCRel: 0 ; DARWIN-G4-DUMP: Length: 2 ; DARWIN-G4-DUMP: Type: PPC_RELOC_LO16_SECTDIFF (11) ; DARWIN-G4-DUMP: Value: 0x74 ; DARWIN-G4-DUMP: } ; DARWIN-G4-DUMP: Relocation { ; DARWIN-G4-DUMP: Offset: 0x0 ; DARWIN-G4-DUMP: PCRel: 0 ; DARWIN-G4-DUMP: Length: 2 ; DARWIN-G4-DUMP: Type: PPC_RELOC_PAIR (1) ; DARWIN-G4-DUMP: Value: 0x14 ; DARWIN-G4-DUMP: } ; DARWIN-G4-DUMP: Relocation { ; DARWIN-G4-DUMP: Offset: 0x2C ; DARWIN-G4-DUMP: PCRel: 0 ; DARWIN-G4-DUMP: Length: 2 ; DARWIN-G4-DUMP: Type: PPC_RELOC_HA16_SECTDIFF (12) ; DARWIN-G4-DUMP: Value: 0x74 ; DARWIN-G4-DUMP: } ; DARWIN-G4-DUMP: Relocation { ; DARWIN-G4-DUMP: Offset: 0x60 ; DARWIN-G4-DUMP: PCRel: 0 ; DARWIN-G4-DUMP: Length: 2 ; DARWIN-G4-DUMP: Type: PPC_RELOC_PAIR (1) ; DARWIN-G4-DUMP: Value: 0x14 ; DARWIN-G4-DUMP: } ; DARWIN-G4-DUMP: } ; DARWIN-G4-DUMP: Section __picsymbolstub1 { ; DARWIN-G4-DUMP: Relocation { ; DARWIN-G4-DUMP: Offset: 0x14 ; DARWIN-G4-DUMP: PCRel: 0 ; DARWIN-G4-DUMP: Length: 2 ; DARWIN-G4-DUMP: Type: PPC_RELOC_LO16_SECTDIFF (11) ; DARWIN-G4-DUMP: Value: 0x70 ; DARWIN-G4-DUMP: } ; DARWIN-G4-DUMP: Relocation { ; DARWIN-G4-DUMP: Offset: 0x0 ; DARWIN-G4-DUMP: PCRel: 0 ; DARWIN-G4-DUMP: Length: 2 ; DARWIN-G4-DUMP: Type: PPC_RELOC_PAIR (1) ; DARWIN-G4-DUMP: Value: 0x58 ; DARWIN-G4-DUMP: } ; DARWIN-G4-DUMP: Relocation { ; DARWIN-G4-DUMP: Offset: 0xC ; DARWIN-G4-DUMP: PCRel: 0 ; DARWIN-G4-DUMP: Length: 2 ; DARWIN-G4-DUMP: Type: PPC_RELOC_HA16_SECTDIFF (12) ; DARWIN-G4-DUMP: Value: 0x70 ; DARWIN-G4-DUMP: } ; DARWIN-G4-DUMP: Relocation { ; DARWIN-G4-DUMP: Offset: 0x18 ; DARWIN-G4-DUMP: PCRel: 0 ; DARWIN-G4-DUMP: Length: 2 ; DARWIN-G4-DUMP: Type: PPC_RELOC_PAIR (1) ; DARWIN-G4-DUMP: Value: 0x58 ; DARWIN-G4-DUMP: } ; DARWIN-G4-DUMP: } ; DARWIN-G4-DUMP: Section __la_symbol_ptr { ; DARWIN-G4-DUMP: Relocation { ; DARWIN-G4-DUMP: Offset: 0x0 ; DARWIN-G4-DUMP: PCRel: 0 ; DARWIN-G4-DUMP: Length: 2 ; DARWIN-G4-DUMP: Type: PPC_RELOC_VANILLA (0) ; DARWIN-G4-DUMP: Symbol: dyld_stub_binding_helper ; DARWIN-G4-DUMP: } ; DARWIN-G4-DUMP: } ; DARWIN-G4-DUMP:]