blob: 66bc9a84f5c204ad3dbe037907145c2b4b4cc60e [file] [log] [blame]
David Fangb88cdf62013-08-08 20:14:40 +00001; 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 Fangb88cdf62013-08-08 20:14:40 +00004
Rafael Espindolacdb2a152016-05-18 00:27:17 +00005; 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 Fangb88cdf62013-08-08 20:14:40 +00006
Iain Sandoee0b4cb62013-12-14 13:34:02 +00007 .machine ppc7400
David Fangb88cdf62013-08-08 20:14:40 +00008 .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 Mistrih25528d62017-12-04 17:18:51 +000014; %bb.0: ; %entry
Iain Sandoee0b4cb62013-12-14 13:34:02 +000015 mflr r0
16 stw r31, -4(r1)
17 stw r0, 8(r1)
18 stwu r1, -80(r1)
David Fangb88cdf62013-08-08 20:14:40 +000019 bl L0$pb
20L0$pb:
Iain Sandoee0b4cb62013-12-14 13:34:02 +000021 mr r31, r1
22 li r5, 0
David Fangb88cdf62013-08-08 20:14:40 +000023 mflr 2
Iain Sandoee0b4cb62013-12-14 13:34:02 +000024 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 Fangb88cdf62013-08-08 20:14:40 +000029 bl L_puts$stub
Iain Sandoee0b4cb62013-12-14 13:34:02 +000030 li r3, 0
31 addi r1, r1, 80
32 lwz r0, 8(r1)
33 lwz r31, -4(r1)
34 mtlr r0
David Fangb88cdf62013-08-08 20:14:40 +000035 blr
36
37 .section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32
38 .align 4
39L_puts$stub:
40 .indirect_symbol _puts
Iain Sandoee0b4cb62013-12-14 13:34:02 +000041 mflr r0
David Fangb88cdf62013-08-08 20:14:40 +000042 bcl 20, 31, L_puts$stub$tmp
43L_puts$stub$tmp:
Iain Sandoee0b4cb62013-12-14 13:34:02 +000044 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 Fangb88cdf62013-08-08 20:14:40 +000049 bctr
50 .section __DATA,__la_symbol_ptr,lazy_symbol_pointers
51L_puts$lazy_ptr:
52 .indirect_symbol _puts
53 .long dyld_stub_binding_helper
54
55.subsections_via_symbols
56 .section __TEXT,__cstring,cstring_literals
57L_.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 Espindolaaaaa5752015-06-18 20:57:35 +000065; DARWIN-G4-DUMP: Relocation {
66; DARWIN-G4-DUMP: Offset: 0x34
67; DARWIN-G4-DUMP: PCRel: 1
68; DARWIN-G4-DUMP: Length: 2
Rafael Espindolaaaaa5752015-06-18 20:57:35 +000069; DARWIN-G4-DUMP: Type: PPC_RELOC_BR24 (3)
Rafael Espindola9ac06a02015-06-18 22:38:20 +000070; DARWIN-G4-DUMP: Section: __picsymbolstub1
Rafael Espindolaaaaa5752015-06-18 20:57:35 +000071; 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 Espindolaaaaa5752015-06-18 20:57:35 +000076; DARWIN-G4-DUMP: Type: PPC_RELOC_LO16_SECTDIFF (11)
Rafael Espindola9ac06a02015-06-18 22:38:20 +000077; DARWIN-G4-DUMP: Value: 0x74
Rafael Espindolaaaaa5752015-06-18 20:57:35 +000078; 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 Espindolaaaaa5752015-06-18 20:57:35 +000083; DARWIN-G4-DUMP: Type: PPC_RELOC_PAIR (1)
Rafael Espindola9ac06a02015-06-18 22:38:20 +000084; DARWIN-G4-DUMP: Value: 0x14
Rafael Espindolaaaaa5752015-06-18 20:57:35 +000085; 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 Espindolaaaaa5752015-06-18 20:57:35 +000090; DARWIN-G4-DUMP: Type: PPC_RELOC_HA16_SECTDIFF (12)
Rafael Espindola9ac06a02015-06-18 22:38:20 +000091; DARWIN-G4-DUMP: Value: 0x74
Rafael Espindolaaaaa5752015-06-18 20:57:35 +000092; 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 Espindolaaaaa5752015-06-18 20:57:35 +000097; DARWIN-G4-DUMP: Type: PPC_RELOC_PAIR (1)
Rafael Espindola9ac06a02015-06-18 22:38:20 +000098; DARWIN-G4-DUMP: Value: 0x14
Rafael Espindolaaaaa5752015-06-18 20:57:35 +000099; DARWIN-G4-DUMP: }
David Fangb88cdf62013-08-08 20:14:40 +0000100; DARWIN-G4-DUMP: }
101; DARWIN-G4-DUMP: Section __picsymbolstub1 {
Rafael Espindolaaaaa5752015-06-18 20:57:35 +0000102; DARWIN-G4-DUMP: Relocation {
103; DARWIN-G4-DUMP: Offset: 0x14
104; DARWIN-G4-DUMP: PCRel: 0
105; DARWIN-G4-DUMP: Length: 2
Rafael Espindolaaaaa5752015-06-18 20:57:35 +0000106; DARWIN-G4-DUMP: Type: PPC_RELOC_LO16_SECTDIFF (11)
Rafael Espindola9ac06a02015-06-18 22:38:20 +0000107; DARWIN-G4-DUMP: Value: 0x70
Rafael Espindolaaaaa5752015-06-18 20:57:35 +0000108; 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 Espindolaaaaa5752015-06-18 20:57:35 +0000113; DARWIN-G4-DUMP: Type: PPC_RELOC_PAIR (1)
Rafael Espindola9ac06a02015-06-18 22:38:20 +0000114; DARWIN-G4-DUMP: Value: 0x58
Rafael Espindolaaaaa5752015-06-18 20:57:35 +0000115; 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 Espindolaaaaa5752015-06-18 20:57:35 +0000120; DARWIN-G4-DUMP: Type: PPC_RELOC_HA16_SECTDIFF (12)
Rafael Espindola9ac06a02015-06-18 22:38:20 +0000121; DARWIN-G4-DUMP: Value: 0x70
Rafael Espindolaaaaa5752015-06-18 20:57:35 +0000122; 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 Espindolaaaaa5752015-06-18 20:57:35 +0000127; DARWIN-G4-DUMP: Type: PPC_RELOC_PAIR (1)
Rafael Espindola9ac06a02015-06-18 22:38:20 +0000128; DARWIN-G4-DUMP: Value: 0x58
Rafael Espindolaaaaa5752015-06-18 20:57:35 +0000129; DARWIN-G4-DUMP: }
David Fangb88cdf62013-08-08 20:14:40 +0000130; DARWIN-G4-DUMP: }
131; DARWIN-G4-DUMP: Section __la_symbol_ptr {
Rafael Espindolaaaaa5752015-06-18 20:57:35 +0000132; DARWIN-G4-DUMP: Relocation {
133; DARWIN-G4-DUMP: Offset: 0x0
134; DARWIN-G4-DUMP: PCRel: 0
135; DARWIN-G4-DUMP: Length: 2
Rafael Espindolaaaaa5752015-06-18 20:57:35 +0000136; DARWIN-G4-DUMP: Type: PPC_RELOC_VANILLA (0)
137; DARWIN-G4-DUMP: Symbol: dyld_stub_binding_helper
Rafael Espindolaaaaa5752015-06-18 20:57:35 +0000138; DARWIN-G4-DUMP: }
David Fangb88cdf62013-08-08 20:14:40 +0000139; DARWIN-G4-DUMP: }
140; DARWIN-G4-DUMP:]