0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
1 ; This tests for the basic implementation of PPCMachObjectWriter.cpp,
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
2 ; which is responsible for writing mach-o relocation entries for (PIC)
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
3 ; PowerPC objects.
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
4
|
95
|
5 ; RUN: llvm-mc -filetype=obj -relocation-model=pic -mcpu=g4 -triple=powerpc-apple-darwin8 %s -o - | llvm-readobj -r --expand-relocs | FileCheck -check-prefix=DARWIN-G4-DUMP %s
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
6
|
77
|
7 .machine ppc7400
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
8 .section __TEXT,__textcoal_nt,coalesced,pure_instructions
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
9 .section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
10 .section __TEXT,__text,regular,pure_instructions
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
11 .globl _main
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
12 .align 4
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
13 _main: ; @main
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
14 ; BB#0: ; %entry
|
77
|
15 mflr r0
|
|
16 stw r31, -4(r1)
|
|
17 stw r0, 8(r1)
|
|
18 stwu r1, -80(r1)
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
19 bl L0$pb
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
20 L0$pb:
|
77
|
21 mr r31, r1
|
|
22 li r5, 0
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
23 mflr 2
|
77
|
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)
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
29 bl L_puts$stub
|
77
|
30 li r3, 0
|
|
31 addi r1, r1, 80
|
|
32 lwz r0, 8(r1)
|
|
33 lwz r31, -4(r1)
|
|
34 mtlr r0
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
35 blr
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
36
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
37 .section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
38 .align 4
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
39 L_puts$stub:
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
40 .indirect_symbol _puts
|
77
|
41 mflr r0
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
42 bcl 20, 31, L_puts$stub$tmp
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
43 L_puts$stub$tmp:
|
77
|
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
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
49 bctr
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
50 .section __DATA,__la_symbol_ptr,lazy_symbol_pointers
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
51 L_puts$lazy_ptr:
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
52 .indirect_symbol _puts
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
53 .long dyld_stub_binding_helper
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
54
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
55 .subsections_via_symbols
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
56 .section __TEXT,__cstring,cstring_literals
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
57 L_.str: ; @.str
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
58 .asciz "Hello, world!"
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
59
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
60 ; DARWIN-G4-DUMP:Format: Mach-O 32-bit ppc
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
61 ; DARWIN-G4-DUMP:Arch: powerpc
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
62 ; DARWIN-G4-DUMP:AddressSize: 32bit
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
63 ; DARWIN-G4-DUMP:Relocations [
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
64 ; DARWIN-G4-DUMP: Section __text {
|
95
|
65 ; DARWIN-G4-DUMP: Relocation {
|
|
66 ; DARWIN-G4-DUMP: Offset: 0x34
|
|
67 ; DARWIN-G4-DUMP: PCRel: 1
|
|
68 ; DARWIN-G4-DUMP: Length: 2
|
|
69 ; DARWIN-G4-DUMP: Type: PPC_RELOC_BR24 (3)
|
|
70 ; DARWIN-G4-DUMP: Section: __picsymbolstub1
|
|
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
|
|
76 ; DARWIN-G4-DUMP: Type: PPC_RELOC_LO16_SECTDIFF (11)
|
|
77 ; DARWIN-G4-DUMP: Value: 0x74
|
|
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
|
|
83 ; DARWIN-G4-DUMP: Type: PPC_RELOC_PAIR (1)
|
|
84 ; DARWIN-G4-DUMP: Value: 0x14
|
|
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
|
|
90 ; DARWIN-G4-DUMP: Type: PPC_RELOC_HA16_SECTDIFF (12)
|
|
91 ; DARWIN-G4-DUMP: Value: 0x74
|
|
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
|
|
97 ; DARWIN-G4-DUMP: Type: PPC_RELOC_PAIR (1)
|
|
98 ; DARWIN-G4-DUMP: Value: 0x14
|
|
99 ; DARWIN-G4-DUMP: }
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
100 ; DARWIN-G4-DUMP: }
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
101 ; DARWIN-G4-DUMP: Section __picsymbolstub1 {
|
95
|
102 ; DARWIN-G4-DUMP: Relocation {
|
|
103 ; DARWIN-G4-DUMP: Offset: 0x14
|
|
104 ; DARWIN-G4-DUMP: PCRel: 0
|
|
105 ; DARWIN-G4-DUMP: Length: 2
|
|
106 ; DARWIN-G4-DUMP: Type: PPC_RELOC_LO16_SECTDIFF (11)
|
|
107 ; DARWIN-G4-DUMP: Value: 0x70
|
|
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
|
|
113 ; DARWIN-G4-DUMP: Type: PPC_RELOC_PAIR (1)
|
|
114 ; DARWIN-G4-DUMP: Value: 0x58
|
|
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
|
|
120 ; DARWIN-G4-DUMP: Type: PPC_RELOC_HA16_SECTDIFF (12)
|
|
121 ; DARWIN-G4-DUMP: Value: 0x70
|
|
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
|
|
127 ; DARWIN-G4-DUMP: Type: PPC_RELOC_PAIR (1)
|
|
128 ; DARWIN-G4-DUMP: Value: 0x58
|
|
129 ; DARWIN-G4-DUMP: }
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
130 ; DARWIN-G4-DUMP: }
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
131 ; DARWIN-G4-DUMP: Section __la_symbol_ptr {
|
95
|
132 ; DARWIN-G4-DUMP: Relocation {
|
|
133 ; DARWIN-G4-DUMP: Offset: 0x0
|
|
134 ; DARWIN-G4-DUMP: PCRel: 0
|
|
135 ; DARWIN-G4-DUMP: Length: 2
|
|
136 ; DARWIN-G4-DUMP: Type: PPC_RELOC_VANILLA (0)
|
|
137 ; DARWIN-G4-DUMP: Symbol: dyld_stub_binding_helper
|
|
138 ; DARWIN-G4-DUMP: }
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
139 ; DARWIN-G4-DUMP: }
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
140 ; DARWIN-G4-DUMP:]
|