1259698Sdim//===- ELF.cpp - ELF object file implementation -----------------*- C++ -*-===//
2259698Sdim//
3259698Sdim//                     The LLVM Compiler Infrastructure
4259698Sdim//
5259698Sdim// This file is distributed under the University of Illinois Open Source
6259698Sdim// License. See LICENSE.TXT for details.
7259698Sdim//
8259698Sdim//===----------------------------------------------------------------------===//
9259698Sdim
10259698Sdim#include "llvm/Object/ELF.h"
11259698Sdim
12259698Sdimnamespace llvm {
13259698Sdimnamespace object {
14259698Sdim
15259698Sdim#define LLVM_ELF_SWITCH_RELOC_TYPE_NAME(enum)                                  \
16259698Sdim  case ELF::enum:                                                              \
17259698Sdim    return #enum;                                                              \
18259698Sdim
19259698SdimStringRef getELFRelocationTypeName(uint32_t Machine, uint32_t Type) {
20259698Sdim  switch (Machine) {
21259698Sdim  case ELF::EM_X86_64:
22259698Sdim    switch (Type) {
23259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_NONE);
24259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_64);
25259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_PC32);
26259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_GOT32);
27259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_PLT32);
28259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_COPY);
29259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_GLOB_DAT);
30259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_JUMP_SLOT);
31259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_RELATIVE);
32259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_GOTPCREL);
33259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_32);
34259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_32S);
35259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_16);
36259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_PC16);
37259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_8);
38259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_PC8);
39259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_DTPMOD64);
40259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_DTPOFF64);
41259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_TPOFF64);
42259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_TLSGD);
43259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_TLSLD);
44259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_DTPOFF32);
45259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_GOTTPOFF);
46259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_TPOFF32);
47259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_PC64);
48259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_GOTOFF64);
49259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_GOTPC32);
50259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_GOT64);
51259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_GOTPCREL64);
52259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_GOTPC64);
53259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_GOTPLT64);
54259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_PLTOFF64);
55259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_SIZE32);
56259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_SIZE64);
57259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_GOTPC32_TLSDESC);
58259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_TLSDESC_CALL);
59259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_TLSDESC);
60259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_X86_64_IRELATIVE);
61259698Sdim    default:
62259698Sdim      break;
63259698Sdim    }
64259698Sdim    break;
65259698Sdim  case ELF::EM_386:
66259698Sdim    switch (Type) {
67259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_NONE);
68259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_32);
69259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_PC32);
70259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_GOT32);
71259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_PLT32);
72259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_COPY);
73259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_GLOB_DAT);
74259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_JUMP_SLOT);
75259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_RELATIVE);
76259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_GOTOFF);
77259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_GOTPC);
78259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_32PLT);
79259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_TLS_TPOFF);
80259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_TLS_IE);
81259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_TLS_GOTIE);
82259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_TLS_LE);
83259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_TLS_GD);
84259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_TLS_LDM);
85259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_16);
86259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_PC16);
87259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_8);
88259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_PC8);
89259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_TLS_GD_32);
90259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_TLS_GD_PUSH);
91259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_TLS_GD_CALL);
92259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_TLS_GD_POP);
93259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_TLS_LDM_32);
94259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_TLS_LDM_PUSH);
95259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_TLS_LDM_CALL);
96259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_TLS_LDM_POP);
97259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_TLS_LDO_32);
98259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_TLS_IE_32);
99259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_TLS_LE_32);
100259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_TLS_DTPMOD32);
101259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_TLS_DTPOFF32);
102259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_TLS_TPOFF32);
103259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_TLS_GOTDESC);
104259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_TLS_DESC_CALL);
105259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_TLS_DESC);
106259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_386_IRELATIVE);
107259698Sdim    default:
108259698Sdim      break;
109259698Sdim    }
110259698Sdim    break;
111259698Sdim  case ELF::EM_MIPS:
112259698Sdim    switch (Type) {
113259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_NONE);
114259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_16);
115259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_32);
116259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_REL32);
117259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_26);
118259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_HI16);
119259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_LO16);
120259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_GPREL16);
121259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_LITERAL);
122259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_GOT16);
123259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_PC16);
124259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_CALL16);
125259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_GPREL32);
126259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_SHIFT5);
127259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_SHIFT6);
128259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_64);
129259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_GOT_DISP);
130259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_GOT_PAGE);
131259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_GOT_OFST);
132259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_GOT_HI16);
133259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_GOT_LO16);
134259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_SUB);
135259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_INSERT_A);
136259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_INSERT_B);
137259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_DELETE);
138259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_HIGHER);
139259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_HIGHEST);
140259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_CALL_HI16);
141259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_CALL_LO16);
142259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_SCN_DISP);
143259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_REL16);
144259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_ADD_IMMEDIATE);
145259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_PJUMP);
146259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_RELGOT);
147259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_JALR);
148259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_TLS_DTPMOD32);
149259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_TLS_DTPREL32);
150259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_TLS_DTPMOD64);
151259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_TLS_DTPREL64);
152259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_TLS_GD);
153259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_TLS_LDM);
154259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_TLS_DTPREL_HI16);
155259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_TLS_DTPREL_LO16);
156259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_TLS_GOTTPREL);
157259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_TLS_TPREL32);
158259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_TLS_TPREL64);
159259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_TLS_TPREL_HI16);
160259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_TLS_TPREL_LO16);
161259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_GLOB_DAT);
162259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_COPY);
163259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_JUMP_SLOT);
164259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MICROMIPS_26_S1);
165259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MICROMIPS_HI16);
166259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MICROMIPS_LO16);
167259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MICROMIPS_GOT16);
168259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MICROMIPS_PC16_S1);
169259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MICROMIPS_CALL16);
170259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MICROMIPS_GOT_DISP);
171259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MICROMIPS_GOT_PAGE);
172259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MICROMIPS_GOT_OFST);
173259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MICROMIPS_TLS_DTPREL_HI16);
174259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MICROMIPS_TLS_DTPREL_LO16);
175259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MICROMIPS_TLS_TPREL_HI16);
176259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MICROMIPS_TLS_TPREL_LO16);
177259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_NUM);
178259698Sdim    default:
179259698Sdim      break;
180259698Sdim    }
181259698Sdim    break;
182259698Sdim  case ELF::EM_AARCH64:
183259698Sdim    switch (Type) {
184259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_NONE);
185259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_ABS64);
186259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_ABS32);
187259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_ABS16);
188259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_PREL64);
189259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_PREL32);
190259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_PREL16);
191259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_MOVW_UABS_G0);
192259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_MOVW_UABS_G0_NC);
193259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_MOVW_UABS_G1);
194259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_MOVW_UABS_G1_NC);
195259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_MOVW_UABS_G2);
196259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_MOVW_UABS_G2_NC);
197259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_MOVW_UABS_G3);
198259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_MOVW_SABS_G0);
199259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_MOVW_SABS_G1);
200259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_MOVW_SABS_G2);
201259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_LD_PREL_LO19);
202259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_ADR_PREL_LO21);
203259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_ADR_PREL_PG_HI21);
204259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_ADD_ABS_LO12_NC);
205259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_LDST8_ABS_LO12_NC);
206259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TSTBR14);
207259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_CONDBR19);
208259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_JUMP26);
209259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_CALL26);
210259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_LDST16_ABS_LO12_NC);
211259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_LDST32_ABS_LO12_NC);
212259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_LDST64_ABS_LO12_NC);
213259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_LDST128_ABS_LO12_NC);
214259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_ADR_GOT_PAGE);
215259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_LD64_GOT_LO12_NC);
216259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLD_MOVW_DTPREL_G2);
217259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLD_MOVW_DTPREL_G1);
218259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLD_MOVW_DTPREL_G1_NC);
219259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLD_MOVW_DTPREL_G0);
220259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLD_MOVW_DTPREL_G0_NC);
221259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLD_ADD_DTPREL_HI12);
222259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLD_ADD_DTPREL_LO12);
223259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLD_ADD_DTPREL_LO12_NC);
224259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLD_LDST8_DTPREL_LO12);
225259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC);
226259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLD_LDST16_DTPREL_LO12);
227259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC);
228259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLD_LDST32_DTPREL_LO12);
229259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC);
230259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLD_LDST64_DTPREL_LO12);
231259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC);
232259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSIE_MOVW_GOTTPREL_G1);
233259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC);
234259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21);
235259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC);
236259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSIE_LD_GOTTPREL_PREL19);
237259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLE_MOVW_TPREL_G2);
238259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLE_MOVW_TPREL_G1);
239259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLE_MOVW_TPREL_G1_NC);
240259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLE_MOVW_TPREL_G0);
241259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLE_MOVW_TPREL_G0_NC);
242259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLE_ADD_TPREL_HI12);
243259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLE_ADD_TPREL_LO12);
244259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLE_ADD_TPREL_LO12_NC);
245259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLE_LDST8_TPREL_LO12);
246259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC);
247259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLE_LDST16_TPREL_LO12);
248259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC);
249259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLE_LDST32_TPREL_LO12);
250259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC);
251259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLE_LDST64_TPREL_LO12);
252259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLE_LDST64_TPREL_LO12_NC);
253259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSDESC_ADR_PAGE);
254259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSDESC_LD64_LO12_NC);
255259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSDESC_ADD_LO12_NC);
256259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSDESC_CALL);
257259698Sdim    default:
258259698Sdim      break;
259259698Sdim    }
260259698Sdim    break;
261259698Sdim  case ELF::EM_ARM:
262259698Sdim    switch (Type) {
263259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_NONE);
264259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_PC24);
265259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_ABS32);
266259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_REL32);
267259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_LDR_PC_G0);
268259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_ABS16);
269259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_ABS12);
270259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_THM_ABS5);
271259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_ABS8);
272259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_SBREL32);
273259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_THM_CALL);
274259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_THM_PC8);
275259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_BREL_ADJ);
276259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_TLS_DESC);
277259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_THM_SWI8);
278259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_XPC25);
279259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_THM_XPC22);
280259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_TLS_DTPMOD32);
281259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_TLS_DTPOFF32);
282259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_TLS_TPOFF32);
283259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_COPY);
284259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_GLOB_DAT);
285259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_JUMP_SLOT);
286259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_RELATIVE);
287259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_GOTOFF32);
288259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_BASE_PREL);
289259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_GOT_BREL);
290259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_PLT32);
291259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_CALL);
292259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_JUMP24);
293259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_THM_JUMP24);
294259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_BASE_ABS);
295259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_ALU_PCREL_7_0);
296259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_ALU_PCREL_15_8);
297259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_ALU_PCREL_23_15);
298259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_LDR_SBREL_11_0_NC);
299259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_ALU_SBREL_19_12_NC);
300259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_ALU_SBREL_27_20_CK);
301259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_TARGET1);
302259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_SBREL31);
303259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_V4BX);
304259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_TARGET2);
305259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_PREL31);
306259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_MOVW_ABS_NC);
307259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_MOVT_ABS);
308259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_MOVW_PREL_NC);
309259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_MOVT_PREL);
310259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_THM_MOVW_ABS_NC);
311259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_THM_MOVT_ABS);
312259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_THM_MOVW_PREL_NC);
313259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_THM_MOVT_PREL);
314259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_THM_JUMP19);
315259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_THM_JUMP6);
316259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_THM_ALU_PREL_11_0);
317259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_THM_PC12);
318259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_ABS32_NOI);
319259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_REL32_NOI);
320259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_ALU_PC_G0_NC);
321259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_ALU_PC_G0);
322259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_ALU_PC_G1_NC);
323259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_ALU_PC_G1);
324259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_ALU_PC_G2);
325259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_LDR_PC_G1);
326259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_LDR_PC_G2);
327259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_LDRS_PC_G0);
328259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_LDRS_PC_G1);
329259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_LDRS_PC_G2);
330259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_LDC_PC_G0);
331259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_LDC_PC_G1);
332259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_LDC_PC_G2);
333259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_ALU_SB_G0_NC);
334259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_ALU_SB_G0);
335259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_ALU_SB_G1_NC);
336259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_ALU_SB_G1);
337259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_ALU_SB_G2);
338259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_LDR_SB_G0);
339259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_LDR_SB_G1);
340259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_LDR_SB_G2);
341259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_LDRS_SB_G0);
342259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_LDRS_SB_G1);
343259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_LDRS_SB_G2);
344259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_LDC_SB_G0);
345259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_LDC_SB_G1);
346259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_LDC_SB_G2);
347259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_MOVW_BREL_NC);
348259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_MOVT_BREL);
349259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_MOVW_BREL);
350259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_THM_MOVW_BREL_NC);
351259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_THM_MOVT_BREL);
352259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_THM_MOVW_BREL);
353259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_TLS_GOTDESC);
354259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_TLS_CALL);
355259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_TLS_DESCSEQ);
356259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_THM_TLS_CALL);
357259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_PLT32_ABS);
358259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_GOT_ABS);
359259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_GOT_PREL);
360259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_GOT_BREL12);
361259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_GOTOFF12);
362259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_GOTRELAX);
363259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_GNU_VTENTRY);
364259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_GNU_VTINHERIT);
365259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_THM_JUMP11);
366259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_THM_JUMP8);
367259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_TLS_GD32);
368259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_TLS_LDM32);
369259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_TLS_LDO32);
370259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_TLS_IE32);
371259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_TLS_LE32);
372259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_TLS_LDO12);
373259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_TLS_LE12);
374259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_TLS_IE12GP);
375259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_PRIVATE_0);
376259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_PRIVATE_1);
377259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_PRIVATE_2);
378259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_PRIVATE_3);
379259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_PRIVATE_4);
380259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_PRIVATE_5);
381259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_PRIVATE_6);
382259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_PRIVATE_7);
383259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_PRIVATE_8);
384259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_PRIVATE_9);
385259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_PRIVATE_10);
386259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_PRIVATE_11);
387259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_PRIVATE_12);
388259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_PRIVATE_13);
389259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_PRIVATE_14);
390259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_PRIVATE_15);
391259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_ME_TOO);
392259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_THM_TLS_DESCSEQ16);
393259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_ARM_THM_TLS_DESCSEQ32);
394259698Sdim    default:
395259698Sdim      break;
396259698Sdim    }
397259698Sdim    break;
398259698Sdim  case ELF::EM_HEXAGON:
399259698Sdim    switch (Type) {
400259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_NONE);
401259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_B22_PCREL);
402259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_B15_PCREL);
403259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_B7_PCREL);
404259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_LO16);
405259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_HI16);
406259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_32);
407259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_16);
408259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_8);
409259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_GPREL16_0);
410259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_GPREL16_1);
411259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_GPREL16_2);
412259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_GPREL16_3);
413259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_HL16);
414259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_B13_PCREL);
415259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_B9_PCREL);
416259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_B32_PCREL_X);
417259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_32_6_X);
418259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_B22_PCREL_X);
419259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_B15_PCREL_X);
420259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_B13_PCREL_X);
421259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_B9_PCREL_X);
422259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_B7_PCREL_X);
423259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_16_X);
424259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_12_X);
425259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_11_X);
426259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_10_X);
427259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_9_X);
428259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_8_X);
429259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_7_X);
430259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_6_X);
431259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_32_PCREL);
432259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_COPY);
433259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_GLOB_DAT);
434259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_JMP_SLOT);
435259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_RELATIVE);
436259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_PLT_B22_PCREL);
437259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_GOTREL_LO16);
438259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_GOTREL_HI16);
439259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_GOTREL_32);
440259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_GOT_LO16);
441259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_GOT_HI16);
442259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_GOT_32);
443259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_GOT_16);
444259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_DTPMOD_32);
445259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_DTPREL_LO16);
446259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_DTPREL_HI16);
447259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_DTPREL_32);
448259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_DTPREL_16);
449259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_GD_PLT_B22_PCREL);
450259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_GD_GOT_LO16);
451259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_GD_GOT_HI16);
452259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_GD_GOT_32);
453259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_GD_GOT_16);
454259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_IE_LO16);
455259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_IE_HI16);
456259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_IE_32);
457259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_IE_GOT_LO16);
458259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_IE_GOT_HI16);
459259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_IE_GOT_32);
460259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_IE_GOT_16);
461259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_TPREL_LO16);
462259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_TPREL_HI16);
463259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_TPREL_32);
464259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_TPREL_16);
465259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_6_PCREL_X);
466259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_GOTREL_32_6_X);
467259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_GOTREL_16_X);
468259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_GOTREL_11_X);
469259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_GOT_32_6_X);
470259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_GOT_16_X);
471259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_GOT_11_X);
472259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_DTPREL_32_6_X);
473259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_DTPREL_16_X);
474259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_DTPREL_11_X);
475259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_GD_GOT_32_6_X);
476259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_GD_GOT_16_X);
477259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_GD_GOT_11_X);
478259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_IE_32_6_X);
479259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_IE_16_X);
480259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_IE_GOT_32_6_X);
481259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_IE_GOT_16_X);
482259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_IE_GOT_11_X);
483259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_TPREL_32_6_X);
484259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_TPREL_16_X);
485259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_HEX_TPREL_11_X);
486259698Sdim    default:
487259698Sdim      break;
488259698Sdim    }
489259698Sdim    break;
490259698Sdim  case ELF::EM_PPC:
491259698Sdim    switch (Type) {
492259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_NONE);
493259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_ADDR32);
494259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_ADDR24);
495259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_ADDR16);
496259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_ADDR16_LO);
497259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_ADDR16_HI);
498259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_ADDR16_HA);
499259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_ADDR14);
500259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_ADDR14_BRTAKEN);
501259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_ADDR14_BRNTAKEN);
502259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_REL24);
503259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_REL14);
504259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_REL14_BRTAKEN);
505259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_REL14_BRNTAKEN);
506259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT16);
507259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT16_LO);
508259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT16_HI);
509259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT16_HA);
510259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_REL32);
511259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_TLS);
512259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_DTPMOD32);
513259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_TPREL16);
514259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_TPREL16_LO);
515259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_TPREL16_HI);
516259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_TPREL16_HA);
517259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_TPREL32);
518259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_DTPREL16);
519259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_DTPREL16_LO);
520259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_DTPREL16_HI);
521259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_DTPREL16_HA);
522259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_DTPREL32);
523259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_TLSGD16);
524259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_TLSGD16_LO);
525259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_TLSGD16_HI);
526259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_TLSGD16_HA);
527259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_TLSLD16);
528259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_TLSLD16_LO);
529259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_TLSLD16_HI);
530259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_TLSLD16_HA);
531259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_TPREL16);
532259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_TPREL16_LO);
533259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_TPREL16_HI);
534259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_TPREL16_HA);
535259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_DTPREL16);
536259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_DTPREL16_LO);
537259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_DTPREL16_HI);
538259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_DTPREL16_HA);
539259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_TLSGD);
540259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_TLSLD);
541259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_REL16);
542259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_REL16_LO);
543259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_REL16_HI);
544259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_REL16_HA);
545259698Sdim    default:
546259698Sdim      break;
547259698Sdim    }
548259698Sdim    break;
549259698Sdim  case ELF::EM_PPC64:
550259698Sdim    switch (Type) {
551259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_NONE);
552259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_ADDR32);
553259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_ADDR24);
554259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_ADDR16);
555259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_ADDR16_LO);
556259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_ADDR16_HI);
557259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_ADDR16_HA);
558259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_ADDR14);
559259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_ADDR14_BRTAKEN);
560259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_ADDR14_BRNTAKEN);
561259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_REL24);
562259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_REL14);
563259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_REL14_BRTAKEN);
564259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_REL14_BRNTAKEN);
565259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_GOT16);
566259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_GOT16_LO);
567259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_GOT16_HI);
568259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_GOT16_HA);
569259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_REL32);
570259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_ADDR64);
571259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_ADDR16_HIGHER);
572259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_ADDR16_HIGHERA);
573259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_ADDR16_HIGHEST);
574259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_ADDR16_HIGHESTA);
575259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_REL64);
576259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_TOC16);
577259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_TOC16_LO);
578259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_TOC16_HI);
579259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_TOC16_HA);
580259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_TOC);
581259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_ADDR16_DS);
582259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_ADDR16_LO_DS);
583259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_GOT16_DS);
584259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_GOT16_LO_DS);
585259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_TOC16_DS);
586259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_TOC16_LO_DS);
587259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_TLS);
588259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_DTPMOD64);
589259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_TPREL16);
590259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_TPREL16_LO);
591259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_TPREL16_HI);
592259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_TPREL16_HA);
593259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_TPREL64);
594259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_DTPREL16);
595259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_DTPREL16_LO);
596259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_DTPREL16_HI);
597259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_DTPREL16_HA);
598259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_DTPREL64);
599259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_GOT_TLSGD16);
600259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_GOT_TLSGD16_LO);
601259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_GOT_TLSGD16_HI);
602259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_GOT_TLSGD16_HA);
603259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_GOT_TLSLD16);
604259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_GOT_TLSLD16_LO);
605259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_GOT_TLSLD16_HI);
606259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_GOT_TLSLD16_HA);
607259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_GOT_TPREL16_DS);
608259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_GOT_TPREL16_LO_DS);
609259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_GOT_TPREL16_HI);
610259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_GOT_TPREL16_HA);
611259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_GOT_DTPREL16_DS);
612259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_GOT_DTPREL16_LO_DS);
613259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_GOT_DTPREL16_HI);
614259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_GOT_DTPREL16_HA);
615259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_TPREL16_DS);
616259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_TPREL16_LO_DS);
617259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_TPREL16_HIGHER);
618259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_TPREL16_HIGHERA);
619259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_TPREL16_HIGHEST);
620259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_TPREL16_HIGHESTA);
621259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_DTPREL16_DS);
622259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_DTPREL16_LO_DS);
623259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_DTPREL16_HIGHER);
624259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_DTPREL16_HIGHERA);
625259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_DTPREL16_HIGHEST);
626259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_DTPREL16_HIGHESTA);
627259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_TLSGD);
628259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_TLSLD);
629259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_REL16);
630259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_REL16_LO);
631259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_REL16_HI);
632259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_REL16_HA);
633259698Sdim    default:
634259698Sdim      break;
635259698Sdim    }
636259698Sdim    break;
637259698Sdim  case ELF::EM_S390:
638259698Sdim    switch (Type) {
639259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_NONE);
640259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_8);
641259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_12);
642259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_16);
643259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_32);
644259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_PC32);
645259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_GOT12);
646259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_GOT32);
647259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_PLT32);
648259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_COPY);
649259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_GLOB_DAT);
650259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_JMP_SLOT);
651259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_RELATIVE);
652259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_GOTOFF);
653259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_GOTPC);
654259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_GOT16);
655259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_PC16);
656259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_PC16DBL);
657259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_PLT16DBL);
658259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_PC32DBL);
659259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_PLT32DBL);
660259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_GOTPCDBL);
661259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_64);
662259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_PC64);
663259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_GOT64);
664259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_PLT64);
665259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_GOTENT);
666259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_GOTOFF16);
667259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_GOTOFF64);
668259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_GOTPLT12);
669259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_GOTPLT16);
670259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_GOTPLT32);
671259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_GOTPLT64);
672259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_GOTPLTENT);
673259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_PLTOFF16);
674259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_PLTOFF32);
675259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_PLTOFF64);
676259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_TLS_LOAD);
677259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_TLS_GDCALL);
678259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_TLS_LDCALL);
679259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_TLS_GD32);
680259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_TLS_GD64);
681259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_TLS_GOTIE12);
682259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_TLS_GOTIE32);
683259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_TLS_GOTIE64);
684259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_TLS_LDM32);
685259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_TLS_LDM64);
686259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_TLS_IE32);
687259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_TLS_IE64);
688259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_TLS_IEENT);
689259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_TLS_LE32);
690259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_TLS_LE64);
691259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_TLS_LDO32);
692259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_TLS_LDO64);
693259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_TLS_DTPMOD);
694259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_TLS_DTPOFF);
695259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_TLS_TPOFF);
696259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_20);
697259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_GOT20);
698259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_GOTPLT20);
699259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_TLS_GOTIE20);
700259698Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_390_IRELATIVE);
701259698Sdim    default:
702259698Sdim      break;
703259698Sdim    }
704259698Sdim    break;
705263763Sdim  case ELF::EM_SPARC:
706263763Sdim  case ELF::EM_SPARC32PLUS:
707263763Sdim  case ELF::EM_SPARCV9:
708263763Sdim    switch (Type) {
709263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_NONE);
710263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_8);
711263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_16);
712263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_32);
713263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_DISP8);
714263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_DISP16);
715263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_DISP32);
716263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_WDISP30);
717263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_WDISP22);
718263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_HI22);
719263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_22);
720263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_13);
721263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_LO10);
722263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_GOT10);
723263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_GOT13);
724263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_GOT22);
725263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_PC10);
726263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_PC22);
727263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_WPLT30);
728263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_COPY);
729263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_GLOB_DAT);
730263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_JMP_SLOT);
731263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_RELATIVE);
732263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_UA32);
733263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_PLT32);
734263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_HIPLT22);
735263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_LOPLT10);
736263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_PCPLT32);
737263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_PCPLT22);
738263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_PCPLT10);
739263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_10);
740263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_11);
741263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_64);
742263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_OLO10);
743263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_HH22);
744263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_HM10);
745263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_LM22);
746263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_PC_HH22);
747263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_PC_HM10);
748263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_PC_LM22);
749263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_WDISP16);
750263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_WDISP19);
751263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_7);
752263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_5);
753263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_6);
754263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_DISP64);
755263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_PLT64);
756263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_HIX22);
757263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_LOX10);
758263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_H44);
759263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_M44);
760263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_L44);
761263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_REGISTER);
762263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_UA64);
763263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_UA16);
764263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_GD_HI22);
765263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_GD_LO10);
766263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_GD_ADD);
767263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_GD_CALL);
768263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_LDM_HI22);
769263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_LDM_LO10);
770263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_LDM_ADD);
771263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_LDM_CALL);
772263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_LDO_HIX22);
773263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_LDO_LOX10);
774263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_LDO_ADD);
775263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_IE_HI22);
776263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_IE_LO10);
777263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_IE_LD);
778263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_IE_LDX);
779263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_IE_ADD);
780263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_LE_HIX22);
781263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_LE_LOX10);
782263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_DTPMOD32);
783263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_DTPMOD64);
784263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_DTPOFF32);
785263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_DTPOFF64);
786263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_TPOFF32);
787263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_TPOFF64);
788263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_GOTDATA_HIX22);
789263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_GOTDATA_LOX22);
790263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_GOTDATA_OP_HIX22);
791263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_GOTDATA_OP_LOX22);
792263763Sdim      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_GOTDATA_OP);
793263763Sdim    default:
794263763Sdim      break;
795263763Sdim    }
796263763Sdim    break;
797259698Sdim  default:
798259698Sdim    break;
799259698Sdim  }
800259698Sdim  return "Unknown";
801259698Sdim}
802259698Sdim
803259698Sdim#undef LLVM_ELF_SWITCH_RELOC_TYPE_NAME
804259698Sdim
805259698Sdim} // end namespace object
806259698Sdim} // end namespace llvm
807