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