1## Test that llvm-readobj shows proper relocation type
2## names and values for ppc64 target.
3
4# RUN: yaml2obj %s -o %t-ppc64.o
5# RUN: llvm-readobj -r --expand-relocs %t-ppc64.o | FileCheck %s
6
7# CHECK: Type: R_PPC64_NONE (0)
8# CHECK: Type: R_PPC64_ADDR32 (1)
9# CHECK: Type: R_PPC64_ADDR24 (2)
10# CHECK: Type: R_PPC64_ADDR16 (3)
11# CHECK: Type: R_PPC64_ADDR16_LO (4)
12# CHECK: Type: R_PPC64_ADDR16_HI (5)
13# CHECK: Type: R_PPC64_ADDR16_HA (6)
14# CHECK: Type: R_PPC64_ADDR14 (7)
15# CHECK: Type: R_PPC64_ADDR14_BRTAKEN (8)
16# CHECK: Type: R_PPC64_ADDR14_BRNTAKEN (9)
17# CHECK: Type: R_PPC64_REL24 (10)
18# CHECK: Type: R_PPC64_REL14 (11)
19# CHECK: Type: R_PPC64_REL14_BRTAKEN (12)
20# CHECK: Type: R_PPC64_REL14_BRNTAKEN (13)
21# CHECK: Type: R_PPC64_GOT16 (14)
22# CHECK: Type: R_PPC64_GOT16_LO (15)
23# CHECK: Type: R_PPC64_GOT16_HI (16)
24# CHECK: Type: R_PPC64_GOT16_HA (17)
25# CHECK: Type: R_PPC64_COPY (19)
26# CHECK: Type: R_PPC64_GLOB_DAT (20)
27# CHECK: Type: R_PPC64_JMP_SLOT (21)
28# CHECK: Type: R_PPC64_RELATIVE (22)
29# CHECK: Type: R_PPC64_REL32 (26)
30# CHECK: Type: R_PPC64_ADDR64 (38)
31# CHECK: Type: R_PPC64_ADDR16_HIGHER (39)
32# CHECK: Type: R_PPC64_ADDR16_HIGHERA (40)
33# CHECK: Type: R_PPC64_ADDR16_HIGHEST (41)
34# CHECK: Type: R_PPC64_ADDR16_HIGHESTA (42)
35# CHECK: Type: R_PPC64_REL64 (44)
36# CHECK: Type: R_PPC64_TOC16 (47)
37# CHECK: Type: R_PPC64_TOC16_LO (48)
38# CHECK: Type: R_PPC64_TOC16_HI (49)
39# CHECK: Type: R_PPC64_TOC16_HA (50)
40# CHECK: Type: R_PPC64_TOC (51)
41# CHECK: Type: R_PPC64_ADDR16_DS (56)
42# CHECK: Type: R_PPC64_ADDR16_LO_DS (57)
43# CHECK: Type: R_PPC64_GOT16_DS (58)
44# CHECK: Type: R_PPC64_GOT16_LO_DS (59)
45# CHECK: Type: R_PPC64_TOC16_DS (63)
46# CHECK: Type: R_PPC64_TOC16_LO_DS (64)
47# CHECK: Type: R_PPC64_TLS (67)
48# CHECK: Type: R_PPC64_DTPMOD64 (68)
49# CHECK: Type: R_PPC64_TPREL16 (69)
50# CHECK: Type: R_PPC64_TPREL16_LO (70)
51# CHECK: Type: R_PPC64_TPREL16_HI (71)
52# CHECK: Type: R_PPC64_TPREL16_HA (72)
53# CHECK: Type: R_PPC64_TPREL64 (73)
54# CHECK: Type: R_PPC64_DTPREL16 (74)
55# CHECK: Type: R_PPC64_DTPREL16_LO (75)
56# CHECK: Type: R_PPC64_DTPREL16_HI (76)
57# CHECK: Type: R_PPC64_DTPREL16_HA (77)
58# CHECK: Type: R_PPC64_DTPREL64 (78)
59# CHECK: Type: R_PPC64_GOT_TLSGD16 (79)
60# CHECK: Type: R_PPC64_GOT_TLSGD16_LO (80)
61# CHECK: Type: R_PPC64_GOT_TLSGD16_HI (81)
62# CHECK: Type: R_PPC64_GOT_TLSGD16_HA (82)
63# CHECK: Type: R_PPC64_GOT_TLSLD16 (83)
64# CHECK: Type: R_PPC64_GOT_TLSLD16_LO (84)
65# CHECK: Type: R_PPC64_GOT_TLSLD16_HI (85)
66# CHECK: Type: R_PPC64_GOT_TLSLD16_HA (86)
67# CHECK: Type: R_PPC64_GOT_TPREL16_DS (87)
68# CHECK: Type: R_PPC64_GOT_TPREL16_LO_DS (88)
69# CHECK: Type: R_PPC64_GOT_TPREL16_HI (89)
70# CHECK: Type: R_PPC64_GOT_TPREL16_HA (90)
71# CHECK: Type: R_PPC64_GOT_DTPREL16_DS (91)
72# CHECK: Type: R_PPC64_GOT_DTPREL16_LO_DS (92)
73# CHECK: Type: R_PPC64_GOT_DTPREL16_HI (93)
74# CHECK: Type: R_PPC64_GOT_DTPREL16_HA (94)
75# CHECK: Type: R_PPC64_TPREL16_DS (95)
76# CHECK: Type: R_PPC64_TPREL16_LO_DS (96)
77# CHECK: Type: R_PPC64_TPREL16_HIGHER (97)
78# CHECK: Type: R_PPC64_TPREL16_HIGHERA (98)
79# CHECK: Type: R_PPC64_TPREL16_HIGHEST (99)
80# CHECK: Type: R_PPC64_TPREL16_HIGHESTA (100)
81# CHECK: Type: R_PPC64_DTPREL16_DS (101)
82# CHECK: Type: R_PPC64_DTPREL16_LO_DS (102)
83# CHECK: Type: R_PPC64_DTPREL16_HIGHER (103)
84# CHECK: Type: R_PPC64_DTPREL16_HIGHERA (104)
85# CHECK: Type: R_PPC64_DTPREL16_HIGHEST (105)
86# CHECK: Type: R_PPC64_DTPREL16_HIGHESTA (106)
87# CHECK: Type: R_PPC64_TLSGD (107)
88# CHECK: Type: R_PPC64_TLSLD (108)
89# CHECK: Type: R_PPC64_ADDR16_HIGH (110)
90# CHECK: Type: R_PPC64_ADDR16_HIGHA (111)
91# CHECK: Type: R_PPC64_TPREL16_HIGH (112)
92# CHECK: Type: R_PPC64_TPREL16_HIGHA (113)
93# CHECK: Type: R_PPC64_DTPREL16_HIGH (114)
94# CHECK: Type: R_PPC64_DTPREL16_HIGHA (115)
95# CHECK: Type: R_PPC64_IRELATIVE (248)
96# CHECK: Type: R_PPC64_REL16 (249)
97# CHECK: Type: R_PPC64_REL16_LO (250)
98# CHECK: Type: R_PPC64_REL16_HI (251)
99# CHECK: Type: R_PPC64_REL16_HA (252)
100
101--- !ELF
102FileHeader:
103  Class:   ELFCLASS64
104  Data:    ELFDATA2MSB
105  Type:    ET_REL
106  Machine: EM_PPC64
107Sections:
108  - Name: .rela.text
109    Type: SHT_RELA
110    Relocations:
111      - Type: R_PPC64_NONE
112      - Type: R_PPC64_ADDR32
113      - Type: R_PPC64_ADDR24
114      - Type: R_PPC64_ADDR16
115      - Type: R_PPC64_ADDR16_LO
116      - Type: R_PPC64_ADDR16_HI
117      - Type: R_PPC64_ADDR16_HA
118      - Type: R_PPC64_ADDR14
119      - Type: R_PPC64_ADDR14_BRTAKEN
120      - Type: R_PPC64_ADDR14_BRNTAKEN
121      - Type: R_PPC64_REL24
122      - Type: R_PPC64_REL14
123      - Type: R_PPC64_REL14_BRTAKEN
124      - Type: R_PPC64_REL14_BRNTAKEN
125      - Type: R_PPC64_GOT16
126      - Type: R_PPC64_GOT16_LO
127      - Type: R_PPC64_GOT16_HI
128      - Type: R_PPC64_GOT16_HA
129      - Type: R_PPC64_COPY
130      - Type: R_PPC64_GLOB_DAT
131      - Type: R_PPC64_JMP_SLOT
132      - Type: R_PPC64_RELATIVE
133      - Type: R_PPC64_REL32
134      - Type: R_PPC64_ADDR64
135      - Type: R_PPC64_ADDR16_HIGHER
136      - Type: R_PPC64_ADDR16_HIGHERA
137      - Type: R_PPC64_ADDR16_HIGHEST
138      - Type: R_PPC64_ADDR16_HIGHESTA
139      - Type: R_PPC64_REL64
140      - Type: R_PPC64_TOC16
141      - Type: R_PPC64_TOC16_LO
142      - Type: R_PPC64_TOC16_HI
143      - Type: R_PPC64_TOC16_HA
144      - Type: R_PPC64_TOC
145      - Type: R_PPC64_ADDR16_DS
146      - Type: R_PPC64_ADDR16_LO_DS
147      - Type: R_PPC64_GOT16_DS
148      - Type: R_PPC64_GOT16_LO_DS
149      - Type: R_PPC64_TOC16_DS
150      - Type: R_PPC64_TOC16_LO_DS
151      - Type: R_PPC64_TLS
152      - Type: R_PPC64_DTPMOD64
153      - Type: R_PPC64_TPREL16
154      - Type: R_PPC64_TPREL16_LO
155      - Type: R_PPC64_TPREL16_HI
156      - Type: R_PPC64_TPREL16_HA
157      - Type: R_PPC64_TPREL64
158      - Type: R_PPC64_DTPREL16
159      - Type: R_PPC64_DTPREL16_LO
160      - Type: R_PPC64_DTPREL16_HI
161      - Type: R_PPC64_DTPREL16_HA
162      - Type: R_PPC64_DTPREL64
163      - Type: R_PPC64_GOT_TLSGD16
164      - Type: R_PPC64_GOT_TLSGD16_LO
165      - Type: R_PPC64_GOT_TLSGD16_HI
166      - Type: R_PPC64_GOT_TLSGD16_HA
167      - Type: R_PPC64_GOT_TLSLD16
168      - Type: R_PPC64_GOT_TLSLD16_LO
169      - Type: R_PPC64_GOT_TLSLD16_HI
170      - Type: R_PPC64_GOT_TLSLD16_HA
171      - Type: R_PPC64_GOT_TPREL16_DS
172      - Type: R_PPC64_GOT_TPREL16_LO_DS
173      - Type: R_PPC64_GOT_TPREL16_HI
174      - Type: R_PPC64_GOT_TPREL16_HA
175      - Type: R_PPC64_GOT_DTPREL16_DS
176      - Type: R_PPC64_GOT_DTPREL16_LO_DS
177      - Type: R_PPC64_GOT_DTPREL16_HI
178      - Type: R_PPC64_GOT_DTPREL16_HA
179      - Type: R_PPC64_TPREL16_DS
180      - Type: R_PPC64_TPREL16_LO_DS
181      - Type: R_PPC64_TPREL16_HIGHER
182      - Type: R_PPC64_TPREL16_HIGHERA
183      - Type: R_PPC64_TPREL16_HIGHEST
184      - Type: R_PPC64_TPREL16_HIGHESTA
185      - Type: R_PPC64_DTPREL16_DS
186      - Type: R_PPC64_DTPREL16_LO_DS
187      - Type: R_PPC64_DTPREL16_HIGHER
188      - Type: R_PPC64_DTPREL16_HIGHERA
189      - Type: R_PPC64_DTPREL16_HIGHEST
190      - Type: R_PPC64_DTPREL16_HIGHESTA
191      - Type: R_PPC64_TLSGD
192      - Type: R_PPC64_TLSLD
193      - Type: R_PPC64_ADDR16_HIGH
194      - Type: R_PPC64_ADDR16_HIGHA
195      - Type: R_PPC64_TPREL16_HIGH
196      - Type: R_PPC64_TPREL16_HIGHA
197      - Type: R_PPC64_DTPREL16_HIGH
198      - Type: R_PPC64_DTPREL16_HIGHA
199      - Type: R_PPC64_IRELATIVE
200      - Type: R_PPC64_REL16
201      - Type: R_PPC64_REL16_LO
202      - Type: R_PPC64_REL16_HI
203      - Type: R_PPC64_REL16_HA
204