141 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
			
		
		
	
	
			141 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
| ; 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:]
 |