| ; 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:] |