xref: /llvm-project/llvm/test/tools/llvm-readobj/MachO/relocations.test (revision fff9f049b2e91ce6e670d767866ee4670a4fed31)
1## Check how we print relocations.
2
3# RUN: llvm-readobj -r %p/Inputs/trivial.obj.macho-i386 \
4# RUN:   | FileCheck %s --check-prefix MACHO-I386
5# RUN: llvm-readobj -r %p/Inputs/trivial.obj.macho-x86-64 \
6# RUN:   | FileCheck %s --check-prefix MACHO-X86-64
7# RUN: llvm-readobj -r --expand-relocs %p/Inputs/trivial.obj.macho-ppc \
8# RUN:   | FileCheck %s --check-prefix MACHO-PPC
9# RUN: llvm-readobj -r --expand-relocs %p/Inputs/trivial.obj.macho-ppc64 \
10# RUN:   | FileCheck %s --check-prefix MACHO-PPC64
11# RUN: llvm-readobj -r --expand-relocs %p/Inputs/trivial.obj.macho-arm \
12# RUN:   | FileCheck %s --check-prefix MACHO-ARM
13
14# MACHO-I386:      Relocations [
15# MACHO-I386-NEXT:   Section __text {
16# MACHO-I386-NEXT:     0x18 1 2 1 GENERIC_RELOC_VANILLA 0 _SomeOtherFunction
17# MACHO-I386-NEXT:     0x13 1 2 1 GENERIC_RELOC_VANILLA 0 _puts
18# MACHO-I386-NEXT:     0xB 0 2 n/a GENERIC_RELOC_LOCAL_SECTDIFF 1 0x22
19# MACHO-I386-NEXT:     0x0 0 2 n/a GENERIC_RELOC_PAIR 1 0x8
20# MACHO-I386-NEXT:   }
21# MACHO-I386-NEXT: ]
22
23# MACHO-X86-64: Relocations [
24# MACHO-X86-64-NEXT:  Section __text {
25# MACHO-X86-64-NEXT:    0xE 1 2 1 X86_64_RELOC_BRANCH 0 _SomeOtherFunction
26# MACHO-X86-64-NEXT:    0x9 1 2 1 X86_64_RELOC_BRANCH 0 _puts
27# MACHO-X86-64-NEXT:    0x4 1 2 1 X86_64_RELOC_SIGNED 0 L_.str
28# MACHO-X86-64-NEXT:  }
29# MACHO-X86-64-NEXT:]
30
31# MACHO-PPC: Relocations [
32# MACHO-PPC-NEXT:   Section __text {
33# MACHO-PPC-NEXT:     Relocation {
34# MACHO-PPC-NEXT:       Offset: 0x24
35# MACHO-PPC-NEXT:       PCRel: 0
36# MACHO-PPC-NEXT:       Length: 2
37# MACHO-PPC-NEXT:       Type: PPC_RELOC_LO16_SECTDIFF (11)
38# MACHO-PPC-NEXT:       Value: 0x64
39# MACHO-PPC-NEXT:     }
40# MACHO-PPC-NEXT:     Relocation {
41# MACHO-PPC-NEXT:       Offset: 0x0
42# MACHO-PPC-NEXT:       PCRel: 0
43# MACHO-PPC-NEXT:       Length: 2
44# MACHO-PPC-NEXT:       Type: PPC_RELOC_PAIR (1)
45# MACHO-PPC-NEXT:       Value: 0xC
46# MACHO-PPC-NEXT:     }
47# MACHO-PPC-NEXT:     Relocation {
48# MACHO-PPC-NEXT:       Offset: 0x1C
49# MACHO-PPC-NEXT:       PCRel: 0
50# MACHO-PPC-NEXT:       Length: 2
51# MACHO-PPC-NEXT:       Type: PPC_RELOC_HA16_SECTDIFF (12)
52# MACHO-PPC-NEXT:       Value: 0x64
53# MACHO-PPC-NEXT:     }
54# MACHO-PPC-NEXT:     Relocation {
55# MACHO-PPC-NEXT:       Offset: 0x58
56# MACHO-PPC-NEXT:       PCRel: 0
57# MACHO-PPC-NEXT:       Length: 2
58# MACHO-PPC-NEXT:       Type: PPC_RELOC_PAIR (1)
59# MACHO-PPC-NEXT:       Value: 0xC
60# MACHO-PPC-NEXT:     }
61# MACHO-PPC-NEXT:     Relocation {
62# MACHO-PPC-NEXT:       Offset: 0x18
63# MACHO-PPC-NEXT:       PCRel: 1
64# MACHO-PPC-NEXT:       Length: 2
65# MACHO-PPC-NEXT:       Type: PPC_RELOC_BR24 (3)
66# MACHO-PPC-NEXT:       Section: __picsymbolstub1 (2)
67# MACHO-PPC-NEXT:     }
68# MACHO-PPC-NEXT:   }
69# MACHO-PPC-NEXT:   Section __picsymbolstub1 {
70# MACHO-PPC-NEXT:     Relocation {
71# MACHO-PPC-NEXT:       Offset: 0x14
72# MACHO-PPC-NEXT:       PCRel: 0
73# MACHO-PPC-NEXT:       Length: 2
74# MACHO-PPC-NEXT:       Type: PPC_RELOC_LO16_SECTDIFF (11)
75# MACHO-PPC-NEXT:       Value: 0x68
76# MACHO-PPC-NEXT:     }
77# MACHO-PPC-NEXT:     Relocation {
78# MACHO-PPC-NEXT:       Offset: 0x0
79# MACHO-PPC-NEXT:       PCRel: 0
80# MACHO-PPC-NEXT:       Length: 2
81# MACHO-PPC-NEXT:       Type: PPC_RELOC_PAIR (1)
82# MACHO-PPC-NEXT:       Value: 0x48
83# MACHO-PPC-NEXT:     }
84# MACHO-PPC-NEXT:     Relocation {
85# MACHO-PPC-NEXT:       Offset: 0xC
86# MACHO-PPC-NEXT:       PCRel: 0
87# MACHO-PPC-NEXT:       Length: 2
88# MACHO-PPC-NEXT:       Type: PPC_RELOC_HA16_SECTDIFF (12)
89# MACHO-PPC-NEXT:       Value: 0x68
90# MACHO-PPC-NEXT:     }
91# MACHO-PPC-NEXT:     Relocation {
92# MACHO-PPC-NEXT:       Offset: 0x20
93# MACHO-PPC-NEXT:       PCRel: 0
94# MACHO-PPC-NEXT:       Length: 2
95# MACHO-PPC-NEXT:       Type: PPC_RELOC_PAIR (1)
96# MACHO-PPC-NEXT:       Value: 0x48
97# MACHO-PPC-NEXT:     }
98# MACHO-PPC-NEXT:   }
99# MACHO-PPC-NEXT:   Section __la_symbol_ptr {
100# MACHO-PPC-NEXT:     Relocation {
101# MACHO-PPC-NEXT:       Offset: 0x0
102# MACHO-PPC-NEXT:       PCRel: 0
103# MACHO-PPC-NEXT:       Length: 2
104# MACHO-PPC-NEXT:       Type: PPC_RELOC_VANILLA (0)
105# MACHO-PPC-NEXT:       Symbol: dyld_stub_binding_helper (5)
106# MACHO-PPC-NEXT:     }
107# MACHO-PPC-NEXT:   }
108# MACHO-PPC-NEXT: ]
109
110# MACHO-PPC64: Relocations [
111# MACHO-PPC64-NEXT:   Section __text {
112# MACHO-PPC64-NEXT:     Relocation {
113# MACHO-PPC64-NEXT:       Offset: 0x24
114# MACHO-PPC64-NEXT:       PCRel: 0
115# MACHO-PPC64-NEXT:       Length: 2
116# MACHO-PPC64-NEXT:       Type:  (14)
117# MACHO-PPC64-NEXT:       Value: 0x64
118# MACHO-PPC64-NEXT:     }
119# MACHO-PPC64-NEXT:     Relocation {
120# MACHO-PPC64-NEXT:       Offset: 0x0
121# MACHO-PPC64-NEXT:       PCRel: 0
122# MACHO-PPC64-NEXT:       Length: 2
123# MACHO-PPC64-NEXT:       Type:  (1)
124# MACHO-PPC64-NEXT:       Value: 0xC
125# MACHO-PPC64-NEXT:     }
126# MACHO-PPC64-NEXT:     Relocation {
127# MACHO-PPC64-NEXT:       Offset: 0x1C
128# MACHO-PPC64-NEXT:       PCRel: 0
129# MACHO-PPC64-NEXT:       Length: 2
130# MACHO-PPC64-NEXT:       Type:  (12)
131# MACHO-PPC64-NEXT:       Value: 0x64
132# MACHO-PPC64-NEXT:     }
133# MACHO-PPC64-NEXT:     Relocation {
134# MACHO-PPC64-NEXT:       Offset: 0x58
135# MACHO-PPC64-NEXT:       PCRel: 0
136# MACHO-PPC64-NEXT:       Length: 2
137# MACHO-PPC64-NEXT:       Type:  (1)
138# MACHO-PPC64-NEXT:       Value: 0xC
139# MACHO-PPC64-NEXT:     }
140# MACHO-PPC64-NEXT:     Relocation {
141# MACHO-PPC64-NEXT:       Offset: 0x18
142# MACHO-PPC64-NEXT:       PCRel: 1
143# MACHO-PPC64-NEXT:       Length: 2
144# MACHO-PPC64-NEXT:       Type:  (3)
145# MACHO-PPC64-NEXT:       Section: __picsymbolstub1 (2)
146# MACHO-PPC64-NEXT:     }
147# MACHO-PPC64-NEXT:   }
148# MACHO-PPC64-NEXT:   Section __picsymbolstub1 {
149# MACHO-PPC64-NEXT:     Relocation {
150# MACHO-PPC64-NEXT:       Offset: 0x14
151# MACHO-PPC64-NEXT:       PCRel: 0
152# MACHO-PPC64-NEXT:       Length: 2
153# MACHO-PPC64-NEXT:       Type:  (14)
154# MACHO-PPC64-NEXT:       Value: 0x6C
155# MACHO-PPC64-NEXT:     }
156# MACHO-PPC64-NEXT:     Relocation {
157# MACHO-PPC64-NEXT:       Offset: 0x0
158# MACHO-PPC64-NEXT:       PCRel: 0
159# MACHO-PPC64-NEXT:       Length: 2
160# MACHO-PPC64-NEXT:       Type:  (1)
161# MACHO-PPC64-NEXT:       Value: 0x48
162# MACHO-PPC64-NEXT:     }
163# MACHO-PPC64-NEXT:     Relocation {
164# MACHO-PPC64-NEXT:       Offset: 0xC
165# MACHO-PPC64-NEXT:       PCRel: 0
166# MACHO-PPC64-NEXT:       Length: 2
167# MACHO-PPC64-NEXT:       Type:  (12)
168# MACHO-PPC64-NEXT:       Value: 0x6C
169# MACHO-PPC64-NEXT:     }
170# MACHO-PPC64-NEXT:     Relocation {
171# MACHO-PPC64-NEXT:       Offset: 0x24
172# MACHO-PPC64-NEXT:       PCRel: 0
173# MACHO-PPC64-NEXT:       Length: 2
174# MACHO-PPC64-NEXT:       Type:  (1)
175# MACHO-PPC64-NEXT:       Value: 0x48
176# MACHO-PPC64-NEXT:     }
177# MACHO-PPC64-NEXT:   }
178# MACHO-PPC64-NEXT:   Section __la_symbol_ptr {
179# MACHO-PPC64-NEXT:     Relocation {
180# MACHO-PPC64-NEXT:       Offset: 0x0
181# MACHO-PPC64-NEXT:       PCRel: 0
182# MACHO-PPC64-NEXT:       Length: 3
183# MACHO-PPC64-NEXT:       Type:  (0)
184# MACHO-PPC64-NEXT:       Symbol: dyld_stub_binding_helper (5)
185# MACHO-PPC64-NEXT:     }
186# MACHO-PPC64-NEXT:   }
187# MACHO-PPC64-NEXT: ]
188
189# MACHO-ARM:       Relocations [
190# MACHO-ARM-NEXT:    Section __text {
191# MACHO-ARM-NEXT:      Relocation {
192# MACHO-ARM-NEXT:        Offset: 0x38
193# MACHO-ARM-NEXT:        PCRel: 0
194# MACHO-ARM-NEXT:        Length: 2
195# MACHO-ARM-NEXT:        Type: ARM_RELOC_SECTDIFF (2)
196# MACHO-ARM-NEXT:        Value: 0x40
197# MACHO-ARM-NEXT:      }
198# MACHO-ARM-NEXT:      Relocation {
199# MACHO-ARM-NEXT:        Offset: 0x0
200# MACHO-ARM-NEXT:        PCRel: 0
201# MACHO-ARM-NEXT:        Length: 2
202# MACHO-ARM-NEXT:        Type: ARM_RELOC_PAIR (1)
203# MACHO-ARM-NEXT:        Value: 0x28
204# MACHO-ARM-NEXT:      }
205# MACHO-ARM-NEXT:      Relocation {
206# MACHO-ARM-NEXT:        Offset: 0x20
207# MACHO-ARM-NEXT:        PCRel: 1
208# MACHO-ARM-NEXT:        Length: 2
209# MACHO-ARM-NEXT:        Type: ARM_RELOC_BR24 (5)
210# MACHO-ARM-NEXT:        Symbol: _g
211# MACHO-ARM-NEXT:      }
212# MACHO-ARM-NEXT:      Relocation {
213# MACHO-ARM-NEXT:        Offset: 0x1C
214# MACHO-ARM-NEXT:        PCRel: 0
215# MACHO-ARM-NEXT:        Length: 1
216# MACHO-ARM-NEXT:        Type: ARM_RELOC_HALF (8)
217# MACHO-ARM-NEXT:        Symbol: _g
218# MACHO-ARM-NEXT:      }
219# MACHO-ARM-NEXT:      Relocation {
220# MACHO-ARM-NEXT:        Offset: 0x0
221# MACHO-ARM-NEXT:        PCRel: 0
222# MACHO-ARM-NEXT:        Length: 1
223# MACHO-ARM-NEXT:        Type: ARM_RELOC_PAIR (1)
224# MACHO-ARM-NEXT:        Section: -
225# MACHO-ARM-NEXT:      }
226# MACHO-ARM-NEXT:      Relocation {
227# MACHO-ARM-NEXT:        Offset: 0x18
228# MACHO-ARM-NEXT:        PCRel: 0
229# MACHO-ARM-NEXT:        Length: 0
230# MACHO-ARM-NEXT:        Type: ARM_RELOC_HALF (8)
231# MACHO-ARM-NEXT:        Symbol: _g
232# MACHO-ARM-NEXT:      }
233# MACHO-ARM-NEXT:      Relocation {
234# MACHO-ARM-NEXT:        Offset: 0x0
235# MACHO-ARM-NEXT:        PCRel: 0
236# MACHO-ARM-NEXT:        Length: 0
237# MACHO-ARM-NEXT:        Type: ARM_RELOC_PAIR (1)
238# MACHO-ARM-NEXT:        Section: -
239# MACHO-ARM-NEXT:      }
240# MACHO-ARM-NEXT:      Relocation {
241# MACHO-ARM-NEXT:        Offset: 0xC
242# MACHO-ARM-NEXT:        PCRel: 0
243# MACHO-ARM-NEXT:        Length: 2
244# MACHO-ARM-NEXT:        Type: ARM_RELOC_SECTDIFF (2)
245# MACHO-ARM-NEXT:        Value: 0x44
246# MACHO-ARM-NEXT:      }
247# MACHO-ARM-NEXT:      Relocation {
248# MACHO-ARM-NEXT:        Offset: 0x0
249# MACHO-ARM-NEXT:        PCRel: 0
250# MACHO-ARM-NEXT:        Length: 2
251# MACHO-ARM-NEXT:        Type: ARM_RELOC_PAIR (1)
252# MACHO-ARM-NEXT:        Value: 0x4
253# MACHO-ARM-NEXT:      }
254# MACHO-ARM-NEXT:    }
255# MACHO-ARM-NEXT:  ]
256