1//===- ELF.cpp - ELF object file implementation -----------------*- C++ -*-===//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10#include "llvm/Object/ELF.h"
11
12namespace llvm {
13namespace object {
14
15#define LLVM_ELF_SWITCH_RELOC_TYPE_NAME(enum)                                  \
16  case ELF::enum:                                                              \
17    return #enum;                                                              \
18
19StringRef getELFRelocationTypeName(uint32_t Machine, uint32_t Type) {
20  switch (Machine) {
21  case ELF::EM_X86_64:
22    switch (Type) {
23      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_NONE);
24      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_64);
25      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_PC32);
26      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_GOT32);
27      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_PLT32);
28      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_COPY);
29      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_GLOB_DAT);
30      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_JUMP_SLOT);
31      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_RELATIVE);
32      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_GOTPCREL);
33      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_32);
34      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_32S);
35      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_16);
36      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_PC16);
37      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_8);
38      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_PC8);
39      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_DTPMOD64);
40      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_DTPOFF64);
41      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_TPOFF64);
42      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_TLSGD);
43      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_TLSLD);
44      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_DTPOFF32);
45      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_GOTTPOFF);
46      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_TPOFF32);
47      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_PC64);
48      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_GOTOFF64);
49      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_GOTPC32);
50      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_GOT64);
51      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_GOTPCREL64);
52      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_GOTPC64);
53      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_GOTPLT64);
54      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_PLTOFF64);
55      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_SIZE32);
56      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_SIZE64);
57      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_GOTPC32_TLSDESC);
58      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_TLSDESC_CALL);
59      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_TLSDESC);
60      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_IRELATIVE);
61    default:
62      break;
63    }
64    break;
65  case ELF::EM_386:
66    switch (Type) {
67      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_NONE);
68      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_32);
69      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_PC32);
70      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_GOT32);
71      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_PLT32);
72      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_COPY);
73      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_GLOB_DAT);
74      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_JUMP_SLOT);
75      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_RELATIVE);
76      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_GOTOFF);
77      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_GOTPC);
78      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_32PLT);
79      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_TLS_TPOFF);
80      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_TLS_IE);
81      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_TLS_GOTIE);
82      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_TLS_LE);
83      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_TLS_GD);
84      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_TLS_LDM);
85      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_16);
86      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_PC16);
87      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_8);
88      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_PC8);
89      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_TLS_GD_32);
90      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_TLS_GD_PUSH);
91      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_TLS_GD_CALL);
92      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_TLS_GD_POP);
93      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_TLS_LDM_32);
94      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_TLS_LDM_PUSH);
95      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_TLS_LDM_CALL);
96      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_TLS_LDM_POP);
97      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_TLS_LDO_32);
98      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_TLS_IE_32);
99      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_TLS_LE_32);
100      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_TLS_DTPMOD32);
101      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_TLS_DTPOFF32);
102      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_TLS_TPOFF32);
103      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_TLS_GOTDESC);
104      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_TLS_DESC_CALL);
105      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_TLS_DESC);
106      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_IRELATIVE);
107    default:
108      break;
109    }
110    break;
111  case ELF::EM_MIPS:
112    switch (Type) {
113      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_NONE);
114      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_16);
115      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_32);
116      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_REL32);
117      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_26);
118      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_HI16);
119      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_LO16);
120      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_GPREL16);
121      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_LITERAL);
122      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_GOT16);
123      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_PC16);
124      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_CALL16);
125      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_GPREL32);
126      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_SHIFT5);
127      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_SHIFT6);
128      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_64);
129      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_GOT_DISP);
130      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_GOT_PAGE);
131      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_GOT_OFST);
132      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_GOT_HI16);
133      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_GOT_LO16);
134      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_SUB);
135      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_INSERT_A);
136      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_INSERT_B);
137      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_DELETE);
138      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_HIGHER);
139      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_HIGHEST);
140      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_CALL_HI16);
141      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_CALL_LO16);
142      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_SCN_DISP);
143      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_REL16);
144      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_ADD_IMMEDIATE);
145      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_PJUMP);
146      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_RELGOT);
147      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_JALR);
148      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_TLS_DTPMOD32);
149      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_TLS_DTPREL32);
150      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_TLS_DTPMOD64);
151      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_TLS_DTPREL64);
152      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_TLS_GD);
153      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_TLS_LDM);
154      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_TLS_DTPREL_HI16);
155      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_TLS_DTPREL_LO16);
156      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_TLS_GOTTPREL);
157      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_TLS_TPREL32);
158      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_TLS_TPREL64);
159      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_TLS_TPREL_HI16);
160      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_TLS_TPREL_LO16);
161      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_GLOB_DAT);
162      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_PC21_S2);
163      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_PC26_S2);
164      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_PC18_S3);
165      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_PC19_S2);
166      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_PCHI16);
167      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_PCLO16);
168      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS16_GOT16);
169      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS16_HI16);
170      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS16_LO16);
171      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_COPY);
172      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_JUMP_SLOT);
173      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MICROMIPS_26_S1);
174      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MICROMIPS_HI16);
175      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MICROMIPS_LO16);
176      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MICROMIPS_GOT16);
177      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MICROMIPS_PC16_S1);
178      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MICROMIPS_CALL16);
179      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MICROMIPS_GOT_DISP);
180      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MICROMIPS_GOT_PAGE);
181      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MICROMIPS_GOT_OFST);
182      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MICROMIPS_TLS_GD);
183      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MICROMIPS_TLS_LDM);
184      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MICROMIPS_TLS_DTPREL_HI16);
185      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MICROMIPS_TLS_DTPREL_LO16);
186      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MICROMIPS_TLS_TPREL_HI16);
187      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MICROMIPS_TLS_TPREL_LO16);
188      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_NUM);
189      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_PC32);
190    default:
191      break;
192    }
193    break;
194  case ELF::EM_AARCH64:
195    switch (Type) {
196      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_NONE);
197      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_ABS64);
198      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_ABS32);
199      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_ABS16);
200      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_PREL64);
201      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_PREL32);
202      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_PREL16);
203      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_MOVW_UABS_G0);
204      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_MOVW_UABS_G0_NC);
205      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_MOVW_UABS_G1);
206      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_MOVW_UABS_G1_NC);
207      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_MOVW_UABS_G2);
208      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_MOVW_UABS_G2_NC);
209      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_MOVW_UABS_G3);
210      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_MOVW_SABS_G0);
211      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_MOVW_SABS_G1);
212      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_MOVW_SABS_G2);
213      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_LD_PREL_LO19);
214      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_ADR_PREL_LO21);
215      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_ADR_PREL_PG_HI21);
216      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_ADD_ABS_LO12_NC);
217      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_LDST8_ABS_LO12_NC);
218      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TSTBR14);
219      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_CONDBR19);
220      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_JUMP26);
221      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_CALL26);
222      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_LDST16_ABS_LO12_NC);
223      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_LDST32_ABS_LO12_NC);
224      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_LDST64_ABS_LO12_NC);
225      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_LDST128_ABS_LO12_NC);
226      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_ADR_GOT_PAGE);
227      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_LD64_GOT_LO12_NC);
228      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLD_MOVW_DTPREL_G2);
229      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLD_MOVW_DTPREL_G1);
230      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLD_MOVW_DTPREL_G1_NC);
231      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLD_MOVW_DTPREL_G0);
232      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLD_MOVW_DTPREL_G0_NC);
233      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLD_ADD_DTPREL_HI12);
234      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLD_ADD_DTPREL_LO12);
235      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLD_ADD_DTPREL_LO12_NC);
236      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLD_LDST8_DTPREL_LO12);
237      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC);
238      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLD_LDST16_DTPREL_LO12);
239      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC);
240      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLD_LDST32_DTPREL_LO12);
241      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC);
242      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLD_LDST64_DTPREL_LO12);
243      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC);
244      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSIE_MOVW_GOTTPREL_G1);
245      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC);
246      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21);
247      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC);
248      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSIE_LD_GOTTPREL_PREL19);
249      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLE_MOVW_TPREL_G2);
250      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLE_MOVW_TPREL_G1);
251      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLE_MOVW_TPREL_G1_NC);
252      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLE_MOVW_TPREL_G0);
253      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLE_MOVW_TPREL_G0_NC);
254      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLE_ADD_TPREL_HI12);
255      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLE_ADD_TPREL_LO12);
256      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLE_ADD_TPREL_LO12_NC);
257      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLE_LDST8_TPREL_LO12);
258      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC);
259      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLE_LDST16_TPREL_LO12);
260      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC);
261      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLE_LDST32_TPREL_LO12);
262      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC);
263      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLE_LDST64_TPREL_LO12);
264      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLE_LDST64_TPREL_LO12_NC);
265      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSDESC_ADR_PAGE);
266      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSDESC_LD64_LO12_NC);
267      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSDESC_ADD_LO12_NC);
268      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSDESC_CALL);
269    default:
270      break;
271    }
272    break;
273  case ELF::EM_ARM:
274    switch (Type) {
275      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_NONE);
276      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_PC24);
277      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_ABS32);
278      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_REL32);
279      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_LDR_PC_G0);
280      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_ABS16);
281      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_ABS12);
282      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_THM_ABS5);
283      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_ABS8);
284      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_SBREL32);
285      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_THM_CALL);
286      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_THM_PC8);
287      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_BREL_ADJ);
288      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_TLS_DESC);
289      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_THM_SWI8);
290      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_XPC25);
291      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_THM_XPC22);
292      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_TLS_DTPMOD32);
293      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_TLS_DTPOFF32);
294      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_TLS_TPOFF32);
295      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_COPY);
296      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_GLOB_DAT);
297      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_JUMP_SLOT);
298      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_RELATIVE);
299      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_GOTOFF32);
300      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_BASE_PREL);
301      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_GOT_BREL);
302      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_PLT32);
303      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_CALL);
304      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_JUMP24);
305      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_THM_JUMP24);
306      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_BASE_ABS);
307      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_ALU_PCREL_7_0);
308      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_ALU_PCREL_15_8);
309      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_ALU_PCREL_23_15);
310      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_LDR_SBREL_11_0_NC);
311      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_ALU_SBREL_19_12_NC);
312      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_ALU_SBREL_27_20_CK);
313      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_TARGET1);
314      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_SBREL31);
315      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_V4BX);
316      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_TARGET2);
317      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_PREL31);
318      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_MOVW_ABS_NC);
319      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_MOVT_ABS);
320      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_MOVW_PREL_NC);
321      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_MOVT_PREL);
322      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_THM_MOVW_ABS_NC);
323      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_THM_MOVT_ABS);
324      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_THM_MOVW_PREL_NC);
325      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_THM_MOVT_PREL);
326      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_THM_JUMP19);
327      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_THM_JUMP6);
328      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_THM_ALU_PREL_11_0);
329      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_THM_PC12);
330      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_ABS32_NOI);
331      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_REL32_NOI);
332      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_ALU_PC_G0_NC);
333      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_ALU_PC_G0);
334      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_ALU_PC_G1_NC);
335      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_ALU_PC_G1);
336      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_ALU_PC_G2);
337      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_LDR_PC_G1);
338      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_LDR_PC_G2);
339      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_LDRS_PC_G0);
340      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_LDRS_PC_G1);
341      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_LDRS_PC_G2);
342      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_LDC_PC_G0);
343      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_LDC_PC_G1);
344      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_LDC_PC_G2);
345      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_ALU_SB_G0_NC);
346      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_ALU_SB_G0);
347      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_ALU_SB_G1_NC);
348      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_ALU_SB_G1);
349      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_ALU_SB_G2);
350      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_LDR_SB_G0);
351      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_LDR_SB_G1);
352      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_LDR_SB_G2);
353      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_LDRS_SB_G0);
354      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_LDRS_SB_G1);
355      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_LDRS_SB_G2);
356      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_LDC_SB_G0);
357      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_LDC_SB_G1);
358      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_LDC_SB_G2);
359      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_MOVW_BREL_NC);
360      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_MOVT_BREL);
361      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_MOVW_BREL);
362      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_THM_MOVW_BREL_NC);
363      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_THM_MOVT_BREL);
364      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_THM_MOVW_BREL);
365      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_TLS_GOTDESC);
366      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_TLS_CALL);
367      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_TLS_DESCSEQ);
368      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_THM_TLS_CALL);
369      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_PLT32_ABS);
370      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_GOT_ABS);
371      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_GOT_PREL);
372      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_GOT_BREL12);
373      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_GOTOFF12);
374      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_GOTRELAX);
375      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_GNU_VTENTRY);
376      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_GNU_VTINHERIT);
377      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_THM_JUMP11);
378      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_THM_JUMP8);
379      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_TLS_GD32);
380      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_TLS_LDM32);
381      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_TLS_LDO32);
382      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_TLS_IE32);
383      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_TLS_LE32);
384      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_TLS_LDO12);
385      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_TLS_LE12);
386      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_TLS_IE12GP);
387      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_PRIVATE_0);
388      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_PRIVATE_1);
389      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_PRIVATE_2);
390      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_PRIVATE_3);
391      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_PRIVATE_4);
392      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_PRIVATE_5);
393      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_PRIVATE_6);
394      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_PRIVATE_7);
395      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_PRIVATE_8);
396      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_PRIVATE_9);
397      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_PRIVATE_10);
398      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_PRIVATE_11);
399      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_PRIVATE_12);
400      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_PRIVATE_13);
401      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_PRIVATE_14);
402      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_PRIVATE_15);
403      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_ME_TOO);
404      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_THM_TLS_DESCSEQ16);
405      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_THM_TLS_DESCSEQ32);
406    default:
407      break;
408    }
409    break;
410  case ELF::EM_HEXAGON:
411    switch (Type) {
412      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_NONE);
413      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_B22_PCREL);
414      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_B15_PCREL);
415      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_B7_PCREL);
416      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_LO16);
417      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_HI16);
418      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_32);
419      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_16);
420      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_8);
421      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_GPREL16_0);
422      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_GPREL16_1);
423      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_GPREL16_2);
424      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_GPREL16_3);
425      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_HL16);
426      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_B13_PCREL);
427      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_B9_PCREL);
428      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_B32_PCREL_X);
429      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_32_6_X);
430      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_B22_PCREL_X);
431      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_B15_PCREL_X);
432      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_B13_PCREL_X);
433      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_B9_PCREL_X);
434      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_B7_PCREL_X);
435      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_16_X);
436      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_12_X);
437      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_11_X);
438      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_10_X);
439      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_9_X);
440      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_8_X);
441      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_7_X);
442      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_6_X);
443      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_32_PCREL);
444      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_COPY);
445      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_GLOB_DAT);
446      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_JMP_SLOT);
447      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_RELATIVE);
448      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_PLT_B22_PCREL);
449      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_GOTREL_LO16);
450      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_GOTREL_HI16);
451      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_GOTREL_32);
452      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_GOT_LO16);
453      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_GOT_HI16);
454      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_GOT_32);
455      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_GOT_16);
456      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_DTPMOD_32);
457      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_DTPREL_LO16);
458      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_DTPREL_HI16);
459      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_DTPREL_32);
460      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_DTPREL_16);
461      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_GD_PLT_B22_PCREL);
462      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_GD_GOT_LO16);
463      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_GD_GOT_HI16);
464      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_GD_GOT_32);
465      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_GD_GOT_16);
466      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_IE_LO16);
467      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_IE_HI16);
468      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_IE_32);
469      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_IE_GOT_LO16);
470      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_IE_GOT_HI16);
471      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_IE_GOT_32);
472      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_IE_GOT_16);
473      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_TPREL_LO16);
474      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_TPREL_HI16);
475      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_TPREL_32);
476      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_TPREL_16);
477      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_6_PCREL_X);
478      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_GOTREL_32_6_X);
479      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_GOTREL_16_X);
480      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_GOTREL_11_X);
481      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_GOT_32_6_X);
482      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_GOT_16_X);
483      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_GOT_11_X);
484      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_DTPREL_32_6_X);
485      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_DTPREL_16_X);
486      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_DTPREL_11_X);
487      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_GD_GOT_32_6_X);
488      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_GD_GOT_16_X);
489      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_GD_GOT_11_X);
490      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_IE_32_6_X);
491      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_IE_16_X);
492      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_IE_GOT_32_6_X);
493      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_IE_GOT_16_X);
494      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_IE_GOT_11_X);
495      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_TPREL_32_6_X);
496      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_TPREL_16_X);
497      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_TPREL_11_X);
498    default:
499      break;
500    }
501    break;
502  case ELF::EM_PPC:
503    switch (Type) {
504      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_NONE);
505      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_ADDR32);
506      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_ADDR24);
507      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_ADDR16);
508      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_ADDR16_LO);
509      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_ADDR16_HI);
510      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_ADDR16_HA);
511      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_ADDR14);
512      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_ADDR14_BRTAKEN);
513      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_ADDR14_BRNTAKEN);
514      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_REL24);
515      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_REL14);
516      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_REL14_BRTAKEN);
517      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_REL14_BRNTAKEN);
518      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT16);
519      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT16_LO);
520      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT16_HI);
521      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT16_HA);
522      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_REL32);
523      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_TLS);
524      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_DTPMOD32);
525      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_TPREL16);
526      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_TPREL16_LO);
527      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_TPREL16_HI);
528      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_TPREL16_HA);
529      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_TPREL32);
530      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_DTPREL16);
531      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_DTPREL16_LO);
532      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_DTPREL16_HI);
533      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_DTPREL16_HA);
534      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_DTPREL32);
535      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_TLSGD16);
536      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_TLSGD16_LO);
537      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_TLSGD16_HI);
538      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_TLSGD16_HA);
539      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_TLSLD16);
540      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_TLSLD16_LO);
541      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_TLSLD16_HI);
542      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_TLSLD16_HA);
543      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_TPREL16);
544      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_TPREL16_LO);
545      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_TPREL16_HI);
546      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_TPREL16_HA);
547      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_DTPREL16);
548      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_DTPREL16_LO);
549      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_DTPREL16_HI);
550      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_DTPREL16_HA);
551      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_TLSGD);
552      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_TLSLD);
553      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_REL16);
554      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_REL16_LO);
555      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_REL16_HI);
556      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_REL16_HA);
557    default:
558      break;
559    }
560    break;
561  case ELF::EM_PPC64:
562    switch (Type) {
563      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_NONE);
564      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_ADDR32);
565      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_ADDR24);
566      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_ADDR16);
567      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_ADDR16_LO);
568      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_ADDR16_HI);
569      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_ADDR16_HA);
570      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_ADDR14);
571      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_ADDR14_BRTAKEN);
572      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_ADDR14_BRNTAKEN);
573      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_REL24);
574      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_REL14);
575      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_REL14_BRTAKEN);
576      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_REL14_BRNTAKEN);
577      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_GOT16);
578      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_GOT16_LO);
579      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_GOT16_HI);
580      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_GOT16_HA);
581      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_REL32);
582      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_ADDR64);
583      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_ADDR16_HIGHER);
584      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_ADDR16_HIGHERA);
585      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_ADDR16_HIGHEST);
586      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_ADDR16_HIGHESTA);
587      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_REL64);
588      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_TOC16);
589      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_TOC16_LO);
590      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_TOC16_HI);
591      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_TOC16_HA);
592      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_TOC);
593      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_ADDR16_DS);
594      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_ADDR16_LO_DS);
595      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_GOT16_DS);
596      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_GOT16_LO_DS);
597      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_TOC16_DS);
598      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_TOC16_LO_DS);
599      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_TLS);
600      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_DTPMOD64);
601      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_TPREL16);
602      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_TPREL16_LO);
603      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_TPREL16_HI);
604      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_TPREL16_HA);
605      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_TPREL64);
606      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_DTPREL16);
607      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_DTPREL16_LO);
608      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_DTPREL16_HI);
609      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_DTPREL16_HA);
610      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_DTPREL64);
611      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_GOT_TLSGD16);
612      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_GOT_TLSGD16_LO);
613      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_GOT_TLSGD16_HI);
614      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_GOT_TLSGD16_HA);
615      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_GOT_TLSLD16);
616      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_GOT_TLSLD16_LO);
617      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_GOT_TLSLD16_HI);
618      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_GOT_TLSLD16_HA);
619      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_GOT_TPREL16_DS);
620      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_GOT_TPREL16_LO_DS);
621      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_GOT_TPREL16_HI);
622      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_GOT_TPREL16_HA);
623      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_GOT_DTPREL16_DS);
624      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_GOT_DTPREL16_LO_DS);
625      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_GOT_DTPREL16_HI);
626      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_GOT_DTPREL16_HA);
627      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_TPREL16_DS);
628      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_TPREL16_LO_DS);
629      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_TPREL16_HIGHER);
630      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_TPREL16_HIGHERA);
631      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_TPREL16_HIGHEST);
632      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_TPREL16_HIGHESTA);
633      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_DTPREL16_DS);
634      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_DTPREL16_LO_DS);
635      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_DTPREL16_HIGHER);
636      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_DTPREL16_HIGHERA);
637      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_DTPREL16_HIGHEST);
638      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_DTPREL16_HIGHESTA);
639      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_TLSGD);
640      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_TLSLD);
641      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_REL16);
642      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_REL16_LO);
643      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_REL16_HI);
644      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_REL16_HA);
645    default:
646      break;
647    }
648    break;
649  case ELF::EM_S390:
650    switch (Type) {
651      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_NONE);
652      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_8);
653      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_12);
654      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_16);
655      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_32);
656      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_PC32);
657      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_GOT12);
658      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_GOT32);
659      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_PLT32);
660      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_COPY);
661      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_GLOB_DAT);
662      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_JMP_SLOT);
663      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_RELATIVE);
664      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_GOTOFF);
665      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_GOTPC);
666      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_GOT16);
667      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_PC16);
668      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_PC16DBL);
669      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_PLT16DBL);
670      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_PC32DBL);
671      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_PLT32DBL);
672      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_GOTPCDBL);
673      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_64);
674      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_PC64);
675      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_GOT64);
676      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_PLT64);
677      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_GOTENT);
678      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_GOTOFF16);
679      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_GOTOFF64);
680      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_GOTPLT12);
681      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_GOTPLT16);
682      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_GOTPLT32);
683      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_GOTPLT64);
684      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_GOTPLTENT);
685      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_PLTOFF16);
686      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_PLTOFF32);
687      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_PLTOFF64);
688      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_TLS_LOAD);
689      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_TLS_GDCALL);
690      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_TLS_LDCALL);
691      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_TLS_GD32);
692      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_TLS_GD64);
693      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_TLS_GOTIE12);
694      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_TLS_GOTIE32);
695      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_TLS_GOTIE64);
696      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_TLS_LDM32);
697      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_TLS_LDM64);
698      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_TLS_IE32);
699      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_TLS_IE64);
700      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_TLS_IEENT);
701      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_TLS_LE32);
702      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_TLS_LE64);
703      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_TLS_LDO32);
704      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_TLS_LDO64);
705      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_TLS_DTPMOD);
706      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_TLS_DTPOFF);
707      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_TLS_TPOFF);
708      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_20);
709      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_GOT20);
710      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_GOTPLT20);
711      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_TLS_GOTIE20);
712      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_IRELATIVE);
713    default:
714      break;
715    }
716    break;
717  case ELF::EM_SPARC:
718  case ELF::EM_SPARC32PLUS:
719  case ELF::EM_SPARCV9:
720    switch (Type) {
721      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_NONE);
722      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_8);
723      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_16);
724      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_32);
725      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_DISP8);
726      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_DISP16);
727      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_DISP32);
728      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_WDISP30);
729      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_WDISP22);
730      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_HI22);
731      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_22);
732      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_13);
733      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_LO10);
734      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_GOT10);
735      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_GOT13);
736      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_GOT22);
737      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_PC10);
738      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_PC22);
739      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_WPLT30);
740      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_COPY);
741      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_GLOB_DAT);
742      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_JMP_SLOT);
743      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_RELATIVE);
744      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_UA32);
745      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_PLT32);
746      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_HIPLT22);
747      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_LOPLT10);
748      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_PCPLT32);
749      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_PCPLT22);
750      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_PCPLT10);
751      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_10);
752      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_11);
753      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_64);
754      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_OLO10);
755      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_HH22);
756      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_HM10);
757      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_LM22);
758      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_PC_HH22);
759      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_PC_HM10);
760      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_PC_LM22);
761      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_WDISP16);
762      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_WDISP19);
763      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_7);
764      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_5);
765      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_6);
766      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_DISP64);
767      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_PLT64);
768      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_HIX22);
769      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_LOX10);
770      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_H44);
771      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_M44);
772      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_L44);
773      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_REGISTER);
774      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_UA64);
775      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_UA16);
776      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_GD_HI22);
777      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_GD_LO10);
778      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_GD_ADD);
779      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_GD_CALL);
780      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_LDM_HI22);
781      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_LDM_LO10);
782      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_LDM_ADD);
783      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_LDM_CALL);
784      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_LDO_HIX22);
785      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_LDO_LOX10);
786      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_LDO_ADD);
787      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_IE_HI22);
788      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_IE_LO10);
789      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_IE_LD);
790      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_IE_LDX);
791      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_IE_ADD);
792      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_LE_HIX22);
793      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_LE_LOX10);
794      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_DTPMOD32);
795      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_DTPMOD64);
796      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_DTPOFF32);
797      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_DTPOFF64);
798      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_TPOFF32);
799      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_TPOFF64);
800      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_GOTDATA_HIX22);
801      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_GOTDATA_LOX22);
802      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_GOTDATA_OP_HIX22);
803      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_GOTDATA_OP_LOX22);
804      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_GOTDATA_OP);
805    default:
806      break;
807    }
808    break;
809  default:
810    break;
811  }
812  return "Unknown";
813}
814
815#undef LLVM_ELF_SWITCH_RELOC_TYPE_NAME
816
817} // end namespace object
818} // end namespace llvm
819