blob: 66bc9a84f5c204ad3dbe037907145c2b4b4cc60e [file] [log] [blame]
; 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:]