1300228Semaste/*-
2300228Semaste * Copyright (c) 2009-2015 Kai Wang
3300228Semaste * Copyright (c) 2016 The FreeBSD Foundation
4300228Semaste * All rights reserved.
5300228Semaste *
6300228Semaste * Portions of this software were developed by Ed Maste under sponsorship
7300228Semaste * of the FreeBSD Foundation.
8300228Semaste *
9300228Semaste * Redistribution and use in source and binary forms, with or without
10300228Semaste * modification, are permitted provided that the following conditions
11300228Semaste * are met:
12300228Semaste * 1. Redistributions of source code must retain the above copyright
13300228Semaste *    notice, this list of conditions and the following disclaimer.
14300228Semaste * 2. Redistributions in binary form must reproduce the above copyright
15300228Semaste *    notice, this list of conditions and the following disclaimer in the
16300228Semaste *    documentation and/or other materials provided with the distribution.
17300228Semaste *
18300228Semaste * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
19300228Semaste * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20300228Semaste * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21300228Semaste * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
22300228Semaste * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23300228Semaste * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24300228Semaste * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25300228Semaste * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26300228Semaste * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27300228Semaste * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28300228Semaste * SUCH DAMAGE.
29300228Semaste */
30300228Semaste
31300228Semaste#include <libelftc.h>
32300228Semaste#include <stdio.h>
33300228Semaste
34300228Semasteconst char *
35300228Semasteelftc_reloc_type_str(unsigned int mach, unsigned int type)
36300228Semaste{
37300228Semaste	static char s_type[32];
38300228Semaste
39300228Semaste	switch(mach) {
40300228Semaste	case EM_386:
41300228Semaste	case EM_IAMCU:
42300228Semaste		switch(type) {
43300228Semaste		case 0: return "R_386_NONE";
44300228Semaste		case 1: return "R_386_32";
45300228Semaste		case 2: return "R_386_PC32";
46300228Semaste		case 3: return "R_386_GOT32";
47300228Semaste		case 4: return "R_386_PLT32";
48300228Semaste		case 5: return "R_386_COPY";
49300228Semaste		case 6: return "R_386_GLOB_DAT";
50300228Semaste		case 7: return "R_386_JUMP_SLOT";
51300228Semaste		case 8: return "R_386_RELATIVE";
52300228Semaste		case 9: return "R_386_GOTOFF";
53300228Semaste		case 10: return "R_386_GOTPC";
54300228Semaste		case 11: return "R_386_32PLT"; /* Not in psabi */
55300228Semaste		case 14: return "R_386_TLS_TPOFF";
56300228Semaste		case 15: return "R_386_TLS_IE";
57300228Semaste		case 16: return "R_386_TLS_GOTIE";
58300228Semaste		case 17: return "R_386_TLS_LE";
59300228Semaste		case 18: return "R_386_TLS_GD";
60300228Semaste		case 19: return "R_386_TLS_LDM";
61300228Semaste		case 20: return "R_386_16";
62300228Semaste		case 21: return "R_386_PC16";
63300228Semaste		case 22: return "R_386_8";
64300228Semaste		case 23: return "R_386_PC8";
65300228Semaste		case 24: return "R_386_TLS_GD_32";
66300228Semaste		case 25: return "R_386_TLS_GD_PUSH";
67300228Semaste		case 26: return "R_386_TLS_GD_CALL";
68300228Semaste		case 27: return "R_386_TLS_GD_POP";
69300228Semaste		case 28: return "R_386_TLS_LDM_32";
70300228Semaste		case 29: return "R_386_TLS_LDM_PUSH";
71300228Semaste		case 30: return "R_386_TLS_LDM_CALL";
72300228Semaste		case 31: return "R_386_TLS_LDM_POP";
73300228Semaste		case 32: return "R_386_TLS_LDO_32";
74300228Semaste		case 33: return "R_386_TLS_IE_32";
75300228Semaste		case 34: return "R_386_TLS_LE_32";
76300228Semaste		case 35: return "R_386_TLS_DTPMOD32";
77300228Semaste		case 36: return "R_386_TLS_DTPOFF32";
78300228Semaste		case 37: return "R_386_TLS_TPOFF32";
79300228Semaste		case 38: return "R_386_SIZE32";
80300228Semaste		case 39: return "R_386_TLS_GOTDESC";
81300228Semaste		case 40: return "R_386_TLS_DESC_CALL";
82300228Semaste		case 41: return "R_386_TLS_DESC";
83300228Semaste		case 42: return "R_386_IRELATIVE";
84300228Semaste		case 43: return "R_386_GOT32X";
85300228Semaste		}
86300228Semaste		break;
87300228Semaste	case EM_AARCH64:
88300228Semaste		switch(type) {
89300228Semaste		case 0: return "R_AARCH64_NONE";
90300228Semaste		case 257: return "R_AARCH64_ABS64";
91300228Semaste		case 258: return "R_AARCH64_ABS32";
92300228Semaste		case 259: return "R_AARCH64_ABS16";
93300228Semaste		case 260: return "R_AARCH64_PREL64";
94300228Semaste		case 261: return "R_AARCH64_PREL32";
95300228Semaste		case 262: return "R_AARCH64_PREL16";
96300228Semaste		case 263: return "R_AARCH64_MOVW_UABS_G0";
97300228Semaste		case 264: return "R_AARCH64_MOVW_UABS_G0_NC";
98300228Semaste		case 265: return "R_AARCH64_MOVW_UABS_G1";
99300228Semaste		case 266: return "R_AARCH64_MOVW_UABS_G1_NC";
100300228Semaste		case 267: return "R_AARCH64_MOVW_UABS_G2";
101300228Semaste		case 268: return "R_AARCH64_MOVW_UABS_G2_NC";
102300228Semaste		case 269: return "R_AARCH64_MOVW_UABS_G3";
103300228Semaste		case 270: return "R_AARCH64_MOVW_SABS_G0";
104300228Semaste		case 271: return "R_AARCH64_MOVW_SABS_G1";
105300228Semaste		case 272: return "R_AARCH64_MOVW_SABS_G2";
106300228Semaste		case 273: return "R_AARCH64_LD_PREL_LO19";
107300228Semaste		case 274: return "R_AARCH64_ADR_PREL_LO21";
108300228Semaste		case 275: return "R_AARCH64_ADR_PREL_PG_HI21";
109300228Semaste		case 276: return "R_AARCH64_ADR_PREL_PG_HI21_NC";
110300228Semaste		case 277: return "R_AARCH64_ADD_ABS_LO12_NC";
111300228Semaste		case 278: return "R_AARCH64_LDST8_ABS_LO12_NC";
112300228Semaste		case 279: return "R_AARCH64_TSTBR14";
113300228Semaste		case 280: return "R_AARCH64_CONDBR19";
114300228Semaste		case 282: return "R_AARCH64_JUMP26";
115300228Semaste		case 283: return "R_AARCH64_CALL26";
116300228Semaste		case 284: return "R_AARCH64_LDST16_ABS_LO12_NC";
117300228Semaste		case 285: return "R_AARCH64_LDST32_ABS_LO12_NC";
118300228Semaste		case 286: return "R_AARCH64_LDST64_ABS_LO12_NC";
119300228Semaste		case 287: return "R_AARCH64_MOVW_PREL_G0";
120300228Semaste		case 288: return "R_AARCH64_MOVW_PREL_G0_NC";
121300228Semaste		case 289: return "R_AARCH64_MOVW_PREL_G1";
122300228Semaste		case 290: return "R_AARCH64_MOVW_PREL_G1_NC";
123300228Semaste		case 291: return "R_AARCH64_MOVW_PREL_G2";
124300228Semaste		case 292: return "R_AARCH64_MOVW_PREL_G2_NC";
125300228Semaste		case 293: return "R_AARCH64_MOVW_PREL_G3";
126300228Semaste		case 299: return "R_AARCH64_LDST128_ABS_LO12_NC";
127300228Semaste		case 300: return "R_AARCH64_MOVW_GOTOFF_G0";
128300228Semaste		case 301: return "R_AARCH64_MOVW_GOTOFF_G0_NC";
129300228Semaste		case 302: return "R_AARCH64_MOVW_GOTOFF_G1";
130300228Semaste		case 303: return "R_AARCH64_MOVW_GOTOFF_G1_NC";
131300228Semaste		case 304: return "R_AARCH64_MOVW_GOTOFF_G2";
132300228Semaste		case 305: return "R_AARCH64_MOVW_GOTOFF_G2_NC";
133300228Semaste		case 306: return "R_AARCH64_MOVW_GOTOFF_G3";
134300228Semaste		case 307: return "R_AARCH64_GOTREL64";
135300228Semaste		case 308: return "R_AARCH64_GOTREL32";
136300228Semaste		case 309: return "R_AARCH64_GOT_LD_PREL19";
137300228Semaste		case 310: return "R_AARCH64_LD64_GOTOFF_LO15";
138300228Semaste		case 311: return "R_AARCH64_ADR_GOT_PAGE";
139300228Semaste		case 312: return "R_AARCH64_LD64_GOT_LO12_NC";
140300228Semaste		case 313: return "R_AARCH64_LD64_GOTPAGE_LO15";
141300228Semaste		case 560: return "R_AARCH64_TLSDESC_LD_PREL19";
142300228Semaste		case 561: return "R_AARCH64_TLSDESC_ADR_PREL21";
143300228Semaste		case 562: return "R_AARCH64_TLSDESC_ADR_PAGE21";
144300228Semaste		case 563: return "R_AARCH64_TLSDESC_LD64_LO12";
145300228Semaste		case 564: return "R_AARCH64_TLSDESC_ADD_LO12";
146300228Semaste		case 565: return "R_AARCH64_TLSDESC_OFF_G1";
147300228Semaste		case 566: return "R_AARCH64_TLSDESC_OFF_G0_NC";
148300228Semaste		case 567: return "R_AARCH64_TLSDESC_LDR";
149300228Semaste		case 568: return "R_AARCH64_TLSDESC_ADD";
150300228Semaste		case 569: return "R_AARCH64_TLSDESC_CALL";
151300228Semaste		case 1024: return "R_AARCH64_COPY";
152300228Semaste		case 1025: return "R_AARCH64_GLOB_DAT";
153300228Semaste		case 1026: return "R_AARCH64_JUMP_SLOT";
154300228Semaste		case 1027: return "R_AARCH64_RELATIVE";
155300228Semaste		case 1028: return "R_AARCH64_TLS_DTPREL64";
156300228Semaste		case 1029: return "R_AARCH64_TLS_DTPMOD64";
157300228Semaste		case 1030: return "R_AARCH64_TLS_TPREL64";
158300228Semaste		case 1031: return "R_AARCH64_TLSDESC";
159300228Semaste		case 1032: return "R_AARCH64_IRELATIVE";
160300228Semaste		}
161300228Semaste		break;
162300228Semaste	case EM_ARM:
163300228Semaste		switch(type) {
164300228Semaste		case 0: return "R_ARM_NONE";
165300228Semaste		case 1: return "R_ARM_PC24"; /* Deprecated */
166300228Semaste		case 2: return "R_ARM_ABS32";
167300228Semaste		case 3: return "R_ARM_REL32";
168300228Semaste		case 4: return "R_ARM_LDR_PC_G0"; /* Also R_ARM_PC13 */
169300228Semaste		case 5: return "R_ARM_ABS16";
170300228Semaste		case 6: return "R_ARM_ABS12";
171300228Semaste		case 7: return "R_ARM_THM_ABS5";
172300228Semaste		case 8: return "R_ARM_ABS8";
173300228Semaste		case 9: return "R_ARM_SBREL32";
174300228Semaste		case 10: return "R_ARM_THM_CALL"; /* Also R_ARM_THM_PC22 */
175300228Semaste		case 11: return "R_ARM_THM_PC8";
176300228Semaste		case 12: return "R_ARM_BREL_ADJ"; /* Also R_ARM_AMP_VCALL9 */
177300228Semaste		case 13: return "R_ARM_TLS_DESC"; /* Also R_ARM_SWI24 */
178300228Semaste		case 14: return "R_ARM_THM_SWI8"; /* Obsolete */
179300228Semaste		case 15: return "R_ARM_XPC25"; /* Obsolete */
180300228Semaste		case 16: return "R_ARM_THM_XPC22"; /* Obsolete */
181300228Semaste		case 17: return "R_ARM_TLS_DTPMOD32";
182300228Semaste		case 18: return "R_ARM_TLS_DTPOFF32";
183300228Semaste		case 19: return "R_ARM_TLS_TPOFF32";
184300228Semaste		case 20: return "R_ARM_COPY";
185300228Semaste		case 21: return "R_ARM_GLOB_DAT";
186300228Semaste		case 22: return "R_ARM_JUMP_SLOT";
187300228Semaste		case 23: return "R_ARM_RELATIVE";
188300228Semaste		case 24: return "R_ARM_GOTOFF32"; /* Also R_ARM_GOTOFF */
189300228Semaste		case 25: return "R_ARM_BASE_PREL"; /* GNU R_ARM_GOTPC */
190300228Semaste		case 26: return "R_ARM_GOT_BREL"; /* GNU R_ARM_GOT32 */
191300228Semaste		case 27: return "R_ARM_PLT32"; /* Deprecated */
192300228Semaste		case 28: return "R_ARM_CALL";
193300228Semaste		case 29: return "R_ARM_JUMP24";
194300228Semaste		case 30: return "R_ARM_THM_JUMP24";
195300228Semaste		case 31: return "R_ARM_BASE_ABS";
196300228Semaste		case 32: return "R_ARM_ALU_PCREL_7_0"; /* Obsolete */
197300228Semaste		case 33: return "R_ARM_ALU_PCREL_15_8"; /* Obsolete */
198300228Semaste		case 34: return "R_ARM_ALU_PCREL_23_15"; /* Obsolete */
199300228Semaste		case 35: return "R_ARM_LDR_SBREL_11_0_NC"; /* Deprecated */
200300228Semaste		case 36: return "R_ARM_ALU_SBREL_19_12_NC"; /* Deprecated */
201300228Semaste		case 37: return "R_ARM_ALU_SBREL_27_20_CK"; /* Deprecated */
202300228Semaste		case 38: return "R_ARM_TARGET1";
203300228Semaste		case 39: return "R_ARM_SBREL31"; /* Deprecated. */
204300228Semaste		case 40: return "R_ARM_V4BX";
205300228Semaste		case 41: return "R_ARM_TARGET2";
206300228Semaste		case 42: return "R_ARM_PREL31";
207300228Semaste		case 43: return "R_ARM_MOVW_ABS_NC";
208300228Semaste		case 44: return "R_ARM_MOVT_ABS";
209300228Semaste		case 45: return "R_ARM_MOVW_PREL_NC";
210300228Semaste		case 46: return "R_ARM_MOVT_PREL";
211300228Semaste		case 47: return "R_ARM_THM_MOVW_ABS_NC";
212300228Semaste		case 48: return "R_ARM_THM_MOVT_ABS";
213300228Semaste		case 49: return "R_ARM_THM_MOVW_PREL_NC";
214300228Semaste		case 50: return "R_ARM_THM_MOVT_PREL";
215300228Semaste		case 51: return "R_ARM_THM_JUMP19";
216300228Semaste		case 52: return "R_ARM_THM_JUMP6";
217300228Semaste		case 53: return "R_ARM_THM_ALU_PREL_11_0";
218300228Semaste		case 54: return "R_ARM_THM_PC12";
219300228Semaste		case 55: return "R_ARM_ABS32_NOI";
220300228Semaste		case 56: return "R_ARM_REL32_NOI";
221300228Semaste		case 57: return "R_ARM_ALU_PC_G0_NC";
222300228Semaste		case 58: return "R_ARM_ALU_PC_G0";
223300228Semaste		case 59: return "R_ARM_ALU_PC_G1_NC";
224300228Semaste		case 60: return "R_ARM_ALU_PC_G1";
225300228Semaste		case 61: return "R_ARM_ALU_PC_G2";
226300228Semaste		case 62: return "R_ARM_LDR_PC_G1";
227300228Semaste		case 63: return "R_ARM_LDR_PC_G2";
228300228Semaste		case 64: return "R_ARM_LDRS_PC_G0";
229300228Semaste		case 65: return "R_ARM_LDRS_PC_G1";
230300228Semaste		case 66: return "R_ARM_LDRS_PC_G2";
231300228Semaste		case 67: return "R_ARM_LDC_PC_G0";
232300228Semaste		case 68: return "R_ARM_LDC_PC_G1";
233300228Semaste		case 69: return "R_ARM_LDC_PC_G2";
234300228Semaste		case 70: return "R_ARM_ALU_SB_G0_NC";
235300228Semaste		case 71: return "R_ARM_ALU_SB_G0";
236300228Semaste		case 72: return "R_ARM_ALU_SB_G1_NC";
237300228Semaste		case 73: return "R_ARM_ALU_SB_G1";
238300228Semaste		case 74: return "R_ARM_ALU_SB_G2";
239300228Semaste		case 75: return "R_ARM_LDR_SB_G0";
240300228Semaste		case 76: return "R_ARM_LDR_SB_G1";
241300228Semaste		case 77: return "R_ARM_LDR_SB_G2";
242300228Semaste		case 78: return "R_ARM_LDRS_SB_G0";
243300228Semaste		case 79: return "R_ARM_LDRS_SB_G1";
244300228Semaste		case 80: return "R_ARM_LDRS_SB_G2";
245300228Semaste		case 81: return "R_ARM_LDC_SB_G0";
246300228Semaste		case 82: return "R_ARM_LDC_SB_G1";
247300228Semaste		case 83: return "R_ARM_LDC_SB_G2";
248300228Semaste		case 84: return "R_ARM_MOVW_BREL_NC";
249300228Semaste		case 85: return "R_ARM_MOVT_BREL";
250300228Semaste		case 86: return "R_ARM_MOVW_BREL";
251300228Semaste		case 87: return "R_ARM_THM_MOVW_BREL_NC";
252300228Semaste		case 88: return "R_ARM_THM_MOVT_BREL";
253300228Semaste		case 89: return "R_ARM_THM_MOVW_BREL";
254300228Semaste		case 90: return "R_ARM_TLS_GOTDESC";
255300228Semaste		case 91: return "R_ARM_TLS_CALL";
256300228Semaste		case 92: return "R_ARM_TLS_DESCSEQ";
257300228Semaste		case 93: return "R_ARM_THM_TLS_CALL";
258300228Semaste		case 94: return "R_ARM_PLT32_ABS";
259300228Semaste		case 95: return "R_ARM_GOT_ABS";
260300228Semaste		case 96: return "R_ARM_GOT_PREL";
261300228Semaste		case 97: return "R_ARM_GOT_BREL12";
262300228Semaste		case 98: return "R_ARM_GOTOFF12";
263300228Semaste		case 99: return "R_ARM_GOTRELAX";
264300228Semaste		case 100: return "R_ARM_GNU_VTENTRY";
265300228Semaste		case 101: return "R_ARM_GNU_VTINHERIT";
266300228Semaste		case 102: return "R_ARM_THM_JUMP11"; /* Also R_ARM_THM_PC11 */
267300228Semaste		case 103: return "R_ARM_THM_JUMP8"; /* Also R_ARM_THM_PC9 */
268300228Semaste		case 104: return "R_ARM_TLS_GD32";
269300228Semaste		case 105: return "R_ARM_TLS_LDM32";
270300228Semaste		case 106: return "R_ARM_TLS_LDO32";
271300228Semaste		case 107: return "R_ARM_TLS_IE32";
272300228Semaste		case 108: return "R_ARM_TLS_LE32";
273300228Semaste		case 109: return "R_ARM_TLS_LDO12";
274300228Semaste		case 110: return "R_ARM_TLS_LE12";
275300228Semaste		case 111: return "R_ARM_TLS_IE12GP";
276300228Semaste		/* 112-127 R_ARM_PRIVATE_<n> */
277300228Semaste		case 128: return "R_ARM_ME_TOO"; /* Obsolete */
278300228Semaste		case 129: return "R_ARM_THM_TLS_DESCSEQ16";
279300228Semaste		case 130: return "R_ARM_THM_TLS_DESCSEQ32";
280300228Semaste		case 131: return "R_ARM_THM_GOT_BREL12";
281300228Semaste		case 132: return "R_ARM_THM_ALU_ABS_G0_NC";
282300228Semaste		case 133: return "R_ARM_THM_ALU_ABS_G1_NC";
283300228Semaste		case 134: return "R_ARM_THM_ALU_ABS_G2_NC";
284300228Semaste		case 135: return "R_ARM_THM_ALU_ABS_G3";
285300228Semaste		/* 136-159 Reserved for future allocation. */
286300228Semaste		case 160: return "R_ARM_IRELATIVE";
287300228Semaste		/* 161-255 Reserved for future allocation. */
288300228Semaste		case 249: return "R_ARM_RXPC25";
289300228Semaste		case 250: return "R_ARM_RSBREL32";
290300228Semaste		case 251: return "R_ARM_THM_RPC22";
291300228Semaste		case 252: return "R_ARM_RREL32";
292300228Semaste		case 253: return "R_ARM_RABS32";
293300228Semaste		case 254: return "R_ARM_RPC24";
294300228Semaste		case 255: return "R_ARM_RBASE";
295300228Semaste		}
296300228Semaste		break;
297300228Semaste	case EM_IA_64:
298300228Semaste		switch(type) {
299300228Semaste		case 0: return "R_IA_64_NONE";
300300228Semaste		case 33: return "R_IA_64_IMM14";
301300228Semaste		case 34: return "R_IA_64_IMM22";
302300228Semaste		case 35: return "R_IA_64_IMM64";
303300228Semaste		case 36: return "R_IA_64_DIR32MSB";
304300228Semaste		case 37: return "R_IA_64_DIR32LSB";
305300228Semaste		case 38: return "R_IA_64_DIR64MSB";
306300228Semaste		case 39: return "R_IA_64_DIR64LSB";
307300228Semaste		case 42: return "R_IA_64_GPREL22";
308300228Semaste		case 43: return "R_IA_64_GPREL64I";
309300228Semaste		case 44: return "R_IA_64_GPREL32MSB";
310300228Semaste		case 45: return "R_IA_64_GPREL32LSB";
311300228Semaste		case 46: return "R_IA_64_GPREL64MSB";
312300228Semaste		case 47: return "R_IA_64_GPREL64LSB";
313300228Semaste		case 50: return "R_IA_64_LTOFF22";
314300228Semaste		case 51: return "R_IA_64_LTOFF64I";
315300228Semaste		case 58: return "R_IA_64_PLTOFF22";
316300228Semaste		case 59: return "R_IA_64_PLTOFF64I";
317300228Semaste		case 62: return "R_IA_64_PLTOFF64MSB";
318300228Semaste		case 63: return "R_IA_64_PLTOFF64LSB";
319300228Semaste		case 67: return "R_IA_64_FPTR64I";
320300228Semaste		case 68: return "R_IA_64_FPTR32MSB";
321300228Semaste		case 69: return "R_IA_64_FPTR32LSB";
322300228Semaste		case 70: return "R_IA_64_FPTR64MSB";
323300228Semaste		case 71: return "R_IA_64_FPTR64LSB";
324300228Semaste		case 72: return "R_IA_64_PCREL60B";
325300228Semaste		case 73: return "R_IA_64_PCREL21B";
326300228Semaste		case 74: return "R_IA_64_PCREL21M";
327300228Semaste		case 75: return "R_IA_64_PCREL21F";
328300228Semaste		case 76: return "R_IA_64_PCREL32MSB";
329300228Semaste		case 77: return "R_IA_64_PCREL32LSB";
330300228Semaste		case 78: return "R_IA_64_PCREL64MSB";
331300228Semaste		case 79: return "R_IA_64_PCREL64LSB";
332300228Semaste		case 82: return "R_IA_64_LTOFF_FPTR22";
333300228Semaste		case 83: return "R_IA_64_LTOFF_FPTR64I";
334300228Semaste		case 84: return "R_IA_64_LTOFF_FPTR32MSB";
335300228Semaste		case 85: return "R_IA_64_LTOFF_FPTR32LSB";
336300228Semaste		case 86: return "R_IA_64_LTOFF_FPTR64MSB";
337300228Semaste		case 87: return "R_IA_64_LTOFF_FPTR64LSB";
338300228Semaste		case 92: return "R_IA_64_SEGREL32MSB";
339300228Semaste		case 93: return "R_IA_64_SEGREL32LSB";
340300228Semaste		case 94: return "R_IA_64_SEGREL64MSB";
341300228Semaste		case 95: return "R_IA_64_SEGREL64LSB";
342300228Semaste		case 100: return "R_IA_64_SECREL32MSB";
343300228Semaste		case 101: return "R_IA_64_SECREL32LSB";
344300228Semaste		case 102: return "R_IA_64_SECREL64MSB";
345300228Semaste		case 103: return "R_IA_64_SECREL64LSB";
346300228Semaste		case 108: return "R_IA_64_REL32MSB";
347300228Semaste		case 109: return "R_IA_64_REL32LSB";
348300228Semaste		case 110: return "R_IA_64_REL64MSB";
349300228Semaste		case 111: return "R_IA_64_REL64LSB";
350300228Semaste		case 116: return "R_IA_64_LTV32MSB";
351300228Semaste		case 117: return "R_IA_64_LTV32LSB";
352300228Semaste		case 118: return "R_IA_64_LTV64MSB";
353300228Semaste		case 119: return "R_IA_64_LTV64LSB";
354300228Semaste		case 121: return "R_IA_64_PCREL21BI";
355300228Semaste		case 122: return "R_IA_64_PCREL22";
356300228Semaste		case 123: return "R_IA_64_PCREL64I";
357300228Semaste		case 128: return "R_IA_64_IPLTMSB";
358300228Semaste		case 129: return "R_IA_64_IPLTLSB";
359300228Semaste		case 133: return "R_IA_64_SUB";
360300228Semaste		case 134: return "R_IA_64_LTOFF22X";
361300228Semaste		case 135: return "R_IA_64_LDXMOV";
362300228Semaste		case 145: return "R_IA_64_TPREL14";
363300228Semaste		case 146: return "R_IA_64_TPREL22";
364300228Semaste		case 147: return "R_IA_64_TPREL64I";
365300228Semaste		case 150: return "R_IA_64_TPREL64MSB";
366300228Semaste		case 151: return "R_IA_64_TPREL64LSB";
367300228Semaste		case 154: return "R_IA_64_LTOFF_TPREL22";
368300228Semaste		case 166: return "R_IA_64_DTPMOD64MSB";
369300228Semaste		case 167: return "R_IA_64_DTPMOD64LSB";
370300228Semaste		case 170: return "R_IA_64_LTOFF_DTPMOD22";
371300228Semaste		case 177: return "R_IA_64_DTPREL14";
372300228Semaste		case 178: return "R_IA_64_DTPREL22";
373300228Semaste		case 179: return "R_IA_64_DTPREL64I";
374300228Semaste		case 180: return "R_IA_64_DTPREL32MSB";
375300228Semaste		case 181: return "R_IA_64_DTPREL32LSB";
376300228Semaste		case 182: return "R_IA_64_DTPREL64MSB";
377300228Semaste		case 183: return "R_IA_64_DTPREL64LSB";
378300228Semaste		case 186: return "R_IA_64_LTOFF_DTPREL22";
379300228Semaste		}
380300228Semaste		break;
381300228Semaste	case EM_MIPS:
382300228Semaste		switch(type) {
383300228Semaste		case 0: return "R_MIPS_NONE";
384300228Semaste		case 1: return "R_MIPS_16";
385300228Semaste		case 2: return "R_MIPS_32";
386300228Semaste		case 3: return "R_MIPS_REL32";
387300228Semaste		case 4: return "R_MIPS_26";
388300228Semaste		case 5: return "R_MIPS_HI16";
389300228Semaste		case 6: return "R_MIPS_LO16";
390300228Semaste		case 7: return "R_MIPS_GPREL16";
391300228Semaste		case 8: return "R_MIPS_LITERAL";
392300228Semaste		case 9: return "R_MIPS_GOT16";
393300228Semaste		case 10: return "R_MIPS_PC16";
394300228Semaste		case 11: return "R_MIPS_CALL16";
395300228Semaste		case 12: return "R_MIPS_GPREL32";
396300228Semaste		case 16: return "R_MIPS_SHIFT5";
397300228Semaste		case 17: return "R_MIPS_SHIFT6";
398300228Semaste		case 18: return "R_MIPS_64";
399300228Semaste		case 19: return "R_MIPS_GOT_DISP";
400300228Semaste		case 20: return "R_MIPS_GOT_PAGE";
401300228Semaste		case 21: return "R_MIPS_GOT_OFST";
402300228Semaste		case 22: return "R_MIPS_GOT_HI16";
403300228Semaste		case 23: return "R_MIPS_GOT_LO16";
404300228Semaste		case 24: return "R_MIPS_SUB";
405340293Semaste		case 28: return "R_MIPS_HIGHER";
406340293Semaste		case 29: return "R_MIPS_HIGHEST";
407300228Semaste		case 30: return "R_MIPS_CALLHI16";
408300228Semaste		case 31: return "R_MIPS_CALLLO16";
409300228Semaste		case 37: return "R_MIPS_JALR";
410300228Semaste		case 38: return "R_MIPS_TLS_DTPMOD32";
411300228Semaste		case 39: return "R_MIPS_TLS_DTPREL32";
412300228Semaste		case 40: return "R_MIPS_TLS_DTPMOD64";
413300228Semaste		case 41: return "R_MIPS_TLS_DTPREL64";
414300228Semaste		case 42: return "R_MIPS_TLS_GD";
415300228Semaste		case 43: return "R_MIPS_TLS_LDM";
416300228Semaste		case 44: return "R_MIPS_TLS_DTPREL_HI16";
417300228Semaste		case 45: return "R_MIPS_TLS_DTPREL_LO16";
418300228Semaste		case 46: return "R_MIPS_TLS_GOTTPREL";
419300228Semaste		case 47: return "R_MIPS_TLS_TPREL32";
420300228Semaste		case 48: return "R_MIPS_TLS_TPREL64";
421300228Semaste		case 49: return "R_MIPS_TLS_TPREL_HI16";
422300228Semaste		case 50: return "R_MIPS_TLS_TPREL_LO16";
423300228Semaste		}
424300228Semaste		break;
425300228Semaste	case EM_PPC:
426300228Semaste		switch(type) {
427300228Semaste		case 0: return "R_PPC_NONE";
428300228Semaste		case 1: return "R_PPC_ADDR32";
429300228Semaste		case 2: return "R_PPC_ADDR24";
430300228Semaste		case 3: return "R_PPC_ADDR16";
431300228Semaste		case 4: return "R_PPC_ADDR16_LO";
432300228Semaste		case 5: return "R_PPC_ADDR16_HI";
433300228Semaste		case 6: return "R_PPC_ADDR16_HA";
434300228Semaste		case 7: return "R_PPC_ADDR14";
435300228Semaste		case 8: return "R_PPC_ADDR14_BRTAKEN";
436300228Semaste		case 9: return "R_PPC_ADDR14_BRNTAKEN";
437300228Semaste		case 10: return "R_PPC_REL24";
438300228Semaste		case 11: return "R_PPC_REL14";
439300228Semaste		case 12: return "R_PPC_REL14_BRTAKEN";
440300228Semaste		case 13: return "R_PPC_REL14_BRNTAKEN";
441300228Semaste		case 14: return "R_PPC_GOT16";
442300228Semaste		case 15: return "R_PPC_GOT16_LO";
443300228Semaste		case 16: return "R_PPC_GOT16_HI";
444300228Semaste		case 17: return "R_PPC_GOT16_HA";
445300228Semaste		case 18: return "R_PPC_PLTREL24";
446300228Semaste		case 19: return "R_PPC_COPY";
447300228Semaste		case 20: return "R_PPC_GLOB_DAT";
448300228Semaste		case 21: return "R_PPC_JMP_SLOT";
449300228Semaste		case 22: return "R_PPC_RELATIVE";
450300228Semaste		case 23: return "R_PPC_LOCAL24PC";
451300228Semaste		case 24: return "R_PPC_UADDR32";
452300228Semaste		case 25: return "R_PPC_UADDR16";
453300228Semaste		case 26: return "R_PPC_REL32";
454300228Semaste		case 27: return "R_PPC_PLT32";
455300228Semaste		case 28: return "R_PPC_PLTREL32";
456300228Semaste		case 29: return "R_PPC_PLT16_LO";
457300228Semaste		case 30: return "R_PPC_PLT16_HI";
458300228Semaste		case 31: return "R_PPC_PLT16_HA";
459300228Semaste		case 32: return "R_PPC_SDAREL16";
460300228Semaste		case 33: return "R_PPC_SECTOFF";
461300228Semaste		case 34: return "R_PPC_SECTOFF_LO";
462300228Semaste		case 35: return "R_PPC_SECTOFF_HI";
463300228Semaste		case 36: return "R_PPC_SECTOFF_HA";
464300228Semaste		case 67: return "R_PPC_TLS";
465300228Semaste		case 68: return "R_PPC_DTPMOD32";
466300228Semaste		case 69: return "R_PPC_TPREL16";
467300228Semaste		case 70: return "R_PPC_TPREL16_LO";
468300228Semaste		case 71: return "R_PPC_TPREL16_HI";
469300228Semaste		case 72: return "R_PPC_TPREL16_HA";
470300228Semaste		case 73: return "R_PPC_TPREL32";
471300228Semaste		case 74: return "R_PPC_DTPREL16";
472300228Semaste		case 75: return "R_PPC_DTPREL16_LO";
473300228Semaste		case 76: return "R_PPC_DTPREL16_HI";
474300228Semaste		case 77: return "R_PPC_DTPREL16_HA";
475300228Semaste		case 78: return "R_PPC_DTPREL32";
476300228Semaste		case 79: return "R_PPC_GOT_TLSGD16";
477300228Semaste		case 80: return "R_PPC_GOT_TLSGD16_LO";
478300228Semaste		case 81: return "R_PPC_GOT_TLSGD16_HI";
479300228Semaste		case 82: return "R_PPC_GOT_TLSGD16_HA";
480300228Semaste		case 83: return "R_PPC_GOT_TLSLD16";
481300228Semaste		case 84: return "R_PPC_GOT_TLSLD16_LO";
482300228Semaste		case 85: return "R_PPC_GOT_TLSLD16_HI";
483300228Semaste		case 86: return "R_PPC_GOT_TLSLD16_HA";
484300228Semaste		case 87: return "R_PPC_GOT_TPREL16";
485300228Semaste		case 88: return "R_PPC_GOT_TPREL16_LO";
486300228Semaste		case 89: return "R_PPC_GOT_TPREL16_HI";
487300228Semaste		case 90: return "R_PPC_GOT_TPREL16_HA";
488300228Semaste		case 101: return "R_PPC_EMB_NADDR32";
489300228Semaste		case 102: return "R_PPC_EMB_NADDR16";
490300228Semaste		case 103: return "R_PPC_EMB_NADDR16_LO";
491300228Semaste		case 104: return "R_PPC_EMB_NADDR16_HI";
492300228Semaste		case 105: return "R_PPC_EMB_NADDR16_HA";
493300228Semaste		case 106: return "R_PPC_EMB_SDAI16";
494300228Semaste		case 107: return "R_PPC_EMB_SDA2I16";
495300228Semaste		case 108: return "R_PPC_EMB_SDA2REL";
496300228Semaste		case 109: return "R_PPC_EMB_SDA21";
497300228Semaste		case 110: return "R_PPC_EMB_MRKREF";
498300228Semaste		case 111: return "R_PPC_EMB_RELSEC16";
499300228Semaste		case 112: return "R_PPC_EMB_RELST_LO";
500300228Semaste		case 113: return "R_PPC_EMB_RELST_HI";
501300228Semaste		case 114: return "R_PPC_EMB_RELST_HA";
502300228Semaste		case 115: return "R_PPC_EMB_BIT_FLD";
503300228Semaste		case 116: return "R_PPC_EMB_RELSDA";
504300228Semaste		}
505300228Semaste		break;
506312729Semaste	case EM_PPC64:
507312729Semaste		switch(type) {
508312729Semaste		case 0: return "R_PPC64_NONE";
509312729Semaste		case 1: return "R_PPC64_ADDR32";
510312729Semaste		case 2: return "R_PPC64_ADDR24";
511312729Semaste		case 3: return "R_PPC64_ADDR16";
512312729Semaste		case 4: return "R_PPC64_ADDR16_LO";
513312729Semaste		case 5: return "R_PPC64_ADDR16_HI";
514312729Semaste		case 6: return "R_PPC64_ADDR16_HA";
515312729Semaste		case 7: return "R_PPC64_ADDR14";
516312729Semaste		case 8: return "R_PPC64_ADDR14_BRTAKEN";
517312729Semaste		case 9: return "R_PPC64_ADDR14_BRNTAKEN";
518312729Semaste		case 10: return "R_PPC64_REL24";
519312729Semaste		case 11: return "R_PPC64_REL14";
520312729Semaste		case 12: return "R_PPC64_REL14_BRTAKEN";
521312729Semaste		case 13: return "R_PPC64_REL14_BRNTAKEN";
522312729Semaste		case 14: return "R_PPC64_GOT16";
523312729Semaste		case 15: return "R_PPC64_GOT16_LO";
524312729Semaste		case 16: return "R_PPC64_GOT16_HI";
525312729Semaste		case 17: return "R_PPC64_GOT16_HA";
526312729Semaste		case 19: return "R_PPC64_COPY";
527312729Semaste		case 20: return "R_PPC64_GLOB_DAT";
528312729Semaste		case 21: return "R_PPC64_JMP_SLOT";
529312729Semaste		case 22: return "R_PPC64_RELATIVE";
530312729Semaste		case 24: return "R_PPC64_UADDR32";
531312729Semaste		case 25: return "R_PPC64_UADDR16";
532312729Semaste		case 26: return "R_PPC64_REL32";
533312729Semaste		case 27: return "R_PPC64_PLT32";
534312729Semaste		case 28: return "R_PPC64_PLTREL32";
535312729Semaste		case 29: return "R_PPC64_PLT16_LO";
536312729Semaste		case 30: return "R_PPC64_PLT16_HI";
537312729Semaste		case 31: return "R_PPC64_PLT16_HA";
538312729Semaste		case 33: return "R_PPC64_SECTOFF";
539312729Semaste		case 34: return "R_PPC64_SECTOFF_LO";
540312729Semaste		case 35: return "R_PPC64_SECTOFF_HI";
541312729Semaste		case 36: return "R_PPC64_SECTOFF_HA";
542312729Semaste		case 37: return "R_PPC64_ADDR30";
543312729Semaste		case 38: return "R_PPC64_ADDR64";
544312729Semaste		case 39: return "R_PPC64_ADDR16_HIGHER";
545312729Semaste		case 40: return "R_PPC64_ADDR16_HIGHERA";
546312729Semaste		case 41: return "R_PPC64_ADDR16_HIGHEST";
547312729Semaste		case 42: return "R_PPC64_ADDR16_HIGHESTA";
548312729Semaste		case 43: return "R_PPC64_UADDR64";
549312729Semaste		case 44: return "R_PPC64_REL64";
550312729Semaste		case 45: return "R_PPC64_PLT64";
551312729Semaste		case 46: return "R_PPC64_PLTREL64";
552312729Semaste		case 47: return "R_PPC64_TOC16";
553312729Semaste		case 48: return "R_PPC64_TOC16_LO";
554312729Semaste		case 49: return "R_PPC64_TOC16_HI";
555312729Semaste		case 50: return "R_PPC64_TOC16_HA";
556312729Semaste		case 51: return "R_PPC64_TOC";
557312729Semaste		case 52: return "R_PPC64_PLTGOT16";
558312729Semaste		case 53: return "R_PPC64_PLTGOT16_LO";
559312729Semaste		case 54: return "R_PPC64_PLTGOT16_HI";
560312729Semaste		case 55: return "R_PPC64_PLTGOT16_HA";
561312729Semaste		case 56: return "R_PPC64_ADDR16_DS";
562312729Semaste		case 57: return "R_PPC64_ADDR16_LO_DS";
563312729Semaste		case 58: return "R_PPC64_GOT16_DS";
564312729Semaste		case 59: return "R_PPC64_GOT16_LO_DS";
565312729Semaste		case 60: return "R_PPC64_PLT16_LO_DS";
566312729Semaste		case 61: return "R_PPC64_SECTOFF_DS";
567312729Semaste		case 62: return "R_PPC64_SECTOFF_LO_DS";
568312729Semaste		case 63: return "R_PPC64_TOC16_DS";
569312729Semaste		case 64: return "R_PPC64_TOC16_LO_DS";
570312729Semaste		case 65: return "R_PPC64_PLTGOT16_DS";
571312729Semaste		case 66: return "R_PPC64_PLTGOT16_LO_DS";
572312729Semaste		case 67: return "R_PPC64_TLS";
573312729Semaste		case 68: return "R_PPC64_DTPMOD64";
574312729Semaste		case 69: return "R_PPC64_TPREL16";
575312729Semaste		case 70: return "R_PPC64_TPREL16_LO";
576312729Semaste		case 71: return "R_PPC64_TPREL16_HI";
577312729Semaste		case 72: return "R_PPC64_TPREL16_HA";
578312729Semaste		case 73: return "R_PPC64_TPREL64";
579312729Semaste		case 74: return "R_PPC64_DTPREL16";
580312729Semaste		case 75: return "R_PPC64_DTPREL16_LO";
581312729Semaste		case 76: return "R_PPC64_DTPREL16_HI";
582312729Semaste		case 77: return "R_PPC64_DTPREL16_HA";
583312729Semaste		case 78: return "R_PPC64_DTPREL64";
584312729Semaste		case 79: return "R_PPC64_GOT_TLSGD16";
585312729Semaste		case 80: return "R_PPC64_GOT_TLSGD16_LO";
586312729Semaste		case 81: return "R_PPC64_GOT_TLSGD16_HI";
587312729Semaste		case 82: return "R_PPC64_GOT_TLSGD16_HA";
588312729Semaste		case 83: return "R_PPC64_GOT_TLSLD16";
589312729Semaste		case 84: return "R_PPC64_GOT_TLSLD16_LO";
590312729Semaste		case 85: return "R_PPC64_GOT_TLSLD16_HI";
591312729Semaste		case 86: return "R_PPC64_GOT_TLSLD16_HA";
592312729Semaste		case 87: return "R_PPC64_GOT_TPREL16_DS";
593312729Semaste		case 88: return "R_PPC64_GOT_TPREL16_LO_DS";
594312729Semaste		case 89: return "R_PPC64_GOT_TPREL16_HI";
595312729Semaste		case 90: return "R_PPC64_GOT_TPREL16_HA";
596312729Semaste		case 91: return "R_PPC64_GOT_DTPREL16_DS";
597312729Semaste		case 92: return "R_PPC64_GOT_DTPREL16_LO_DS";
598312729Semaste		case 93: return "R_PPC64_GOT_DTPREL16_HI";
599312729Semaste		case 94: return "R_PPC64_GOT_DTPREL16_HA";
600312729Semaste		case 95: return "R_PPC64_TPREL16_DS";
601312729Semaste		case 96: return "R_PPC64_TPREL16_LO_DS";
602312729Semaste		case 97: return "R_PPC64_TPREL16_HIGHER";
603312729Semaste		case 98: return "R_PPC64_TPREL16_HIGHERA";
604312729Semaste		case 99: return "R_PPC64_TPREL16_HIGHEST";
605312729Semaste		case 100: return "R_PPC64_TPREL16_HIGHESTA";
606312729Semaste		case 101: return "R_PPC64_DTPREL16_DS";
607312729Semaste		case 102: return "R_PPC64_DTPREL16_LO_DS";
608312729Semaste		case 103: return "R_PPC64_DTPREL16_HIGHER";
609312729Semaste		case 104: return "R_PPC64_DTPREL16_HIGHERA";
610312729Semaste		case 105: return "R_PPC64_DTPREL16_HIGHEST";
611312729Semaste		case 106: return "R_PPC64_DTPREL16_HIGHESTA";
612312729Semaste		case 107: return "R_PPC64_TLSGD";
613312729Semaste		case 108: return "R_PPC64_TLSLD";
614312729Semaste		case 249: return "R_PPC64_REL16";
615312729Semaste		case 250: return "R_PPC64_REL16_LO";
616312729Semaste		case 251: return "R_PPC64_REL16_HI";
617312729Semaste		case 252: return "R_PPC64_REL16_HA";
618312729Semaste		}
619312729Semaste		break;
620300228Semaste	case EM_RISCV:
621300228Semaste		switch(type) {
622300228Semaste		case 0: return "R_RISCV_NONE";
623300228Semaste		case 1: return "R_RISCV_32";
624300228Semaste		case 2: return "R_RISCV_64";
625300228Semaste		case 3: return "R_RISCV_RELATIVE";
626300228Semaste		case 4: return "R_RISCV_COPY";
627300228Semaste		case 5: return "R_RISCV_JUMP_SLOT";
628300228Semaste		case 6: return "R_RISCV_TLS_DTPMOD32";
629300228Semaste		case 7: return "R_RISCV_TLS_DTPMOD64";
630300228Semaste		case 8: return "R_RISCV_TLS_DTPREL32";
631300228Semaste		case 9: return "R_RISCV_TLS_DTPREL64";
632300228Semaste		case 10: return "R_RISCV_TLS_TPREL32";
633300228Semaste		case 11: return "R_RISCV_TLS_TPREL64";
634300228Semaste		case 16: return "R_RISCV_BRANCH";
635300228Semaste		case 17: return "R_RISCV_JAL";
636300228Semaste		case 18: return "R_RISCV_CALL";
637300228Semaste		case 19: return "R_RISCV_CALL_PLT";
638300228Semaste		case 20: return "R_RISCV_GOT_HI20";
639300228Semaste		case 21: return "R_RISCV_TLS_GOT_HI20";
640300228Semaste		case 22: return "R_RISCV_TLS_GD_HI20";
641300228Semaste		case 23: return "R_RISCV_PCREL_HI20";
642300228Semaste		case 24: return "R_RISCV_PCREL_LO12_I";
643300228Semaste		case 25: return "R_RISCV_PCREL_LO12_S";
644300228Semaste		case 26: return "R_RISCV_HI20";
645300228Semaste		case 27: return "R_RISCV_LO12_I";
646300228Semaste		case 28: return "R_RISCV_LO12_S";
647300228Semaste		case 29: return "R_RISCV_TPREL_HI20";
648300228Semaste		case 30: return "R_RISCV_TPREL_LO12_I";
649300228Semaste		case 31: return "R_RISCV_TPREL_LO12_S";
650300228Semaste		case 32: return "R_RISCV_TPREL_ADD";
651300228Semaste		case 33: return "R_RISCV_ADD8";
652300228Semaste		case 34: return "R_RISCV_ADD16";
653300228Semaste		case 35: return "R_RISCV_ADD32";
654300228Semaste		case 36: return "R_RISCV_ADD64";
655300228Semaste		case 37: return "R_RISCV_SUB8";
656300228Semaste		case 38: return "R_RISCV_SUB16";
657300228Semaste		case 39: return "R_RISCV_SUB32";
658300228Semaste		case 40: return "R_RISCV_SUB64";
659300228Semaste		case 41: return "R_RISCV_GNU_VTINHERIT";
660300228Semaste		case 42: return "R_RISCV_GNU_VTENTRY";
661300228Semaste		case 43: return "R_RISCV_ALIGN";
662300228Semaste		case 44: return "R_RISCV_RVC_BRANCH";
663300228Semaste		case 45: return "R_RISCV_RVC_JUMP";
664305844Semaste		case 46: return "R_RISCV_RVC_LUI";
665305844Semaste		case 47: return "R_RISCV_GPREL_I";
666305844Semaste		case 48: return "R_RISCV_GPREL_S";
667300228Semaste		}
668300228Semaste		break;
669313499Semaste	case EM_S390:
670313499Semaste		switch (type) {
671313499Semaste		case 0: return "R_390_NONE";
672313499Semaste		case 1: return "R_390_8";
673313499Semaste		case 2: return "R_390_12";
674313499Semaste		case 3: return "R_390_16";
675313499Semaste		case 4: return "R_390_32";
676313499Semaste		case 5: return "R_390_PC32";
677313499Semaste		case 6: return "R_390_GOT12";
678313499Semaste		case 7: return "R_390_GOT32";
679313499Semaste		case 8: return "R_390_PLT32";
680313499Semaste		case 9: return "R_390_COPY";
681313499Semaste		case 10: return "R_390_GLOB_DAT";
682313499Semaste		case 11: return "R_390_JMP_SLOT";
683313499Semaste		case 12: return "R_390_RELATIVE";
684313499Semaste		case 13: return "R_390_GOTOFF";
685313499Semaste		case 14: return "R_390_GOTPC";
686313499Semaste		case 15: return "R_390_GOT16";
687313499Semaste		case 16: return "R_390_PC16";
688313499Semaste		case 17: return "R_390_PC16DBL";
689313499Semaste		case 18: return "R_390_PLT16DBL";
690313499Semaste		case 19: return "R_390_PC32DBL";
691313499Semaste		case 20: return "R_390_PLT32DBL";
692313499Semaste		case 21: return "R_390_GOTPCDBL";
693313499Semaste		case 22: return "R_390_64";
694313499Semaste		case 23: return "R_390_PC64";
695313499Semaste		case 24: return "R_390_GOT64";
696313499Semaste		case 25: return "R_390_PLT64";
697313499Semaste		case 26: return "R_390_GOTENT";
698313499Semaste		}
699313499Semaste		break;
700300228Semaste	case EM_SPARC:
701300228Semaste	case EM_SPARCV9:
702300228Semaste		switch(type) {
703300228Semaste		case 0: return "R_SPARC_NONE";
704300228Semaste		case 1: return "R_SPARC_8";
705300228Semaste		case 2: return "R_SPARC_16";
706300228Semaste		case 3: return "R_SPARC_32";
707300228Semaste		case 4: return "R_SPARC_DISP8";
708300228Semaste		case 5: return "R_SPARC_DISP16";
709300228Semaste		case 6: return "R_SPARC_DISP32";
710300228Semaste		case 7: return "R_SPARC_WDISP30";
711300228Semaste		case 8: return "R_SPARC_WDISP22";
712300228Semaste		case 9: return "R_SPARC_HI22";
713300228Semaste		case 10: return "R_SPARC_22";
714300228Semaste		case 11: return "R_SPARC_13";
715300228Semaste		case 12: return "R_SPARC_LO10";
716300228Semaste		case 13: return "R_SPARC_GOT10";
717300228Semaste		case 14: return "R_SPARC_GOT13";
718300228Semaste		case 15: return "R_SPARC_GOT22";
719300228Semaste		case 16: return "R_SPARC_PC10";
720300228Semaste		case 17: return "R_SPARC_PC22";
721300228Semaste		case 18: return "R_SPARC_WPLT30";
722300228Semaste		case 19: return "R_SPARC_COPY";
723300228Semaste		case 20: return "R_SPARC_GLOB_DAT";
724300228Semaste		case 21: return "R_SPARC_JMP_SLOT";
725300228Semaste		case 22: return "R_SPARC_RELATIVE";
726300228Semaste		case 23: return "R_SPARC_UA32";
727300228Semaste		case 24: return "R_SPARC_PLT32";
728300228Semaste		case 25: return "R_SPARC_HIPLT22";
729300228Semaste		case 26: return "R_SPARC_LOPLT10";
730300228Semaste		case 27: return "R_SPARC_PCPLT32";
731300228Semaste		case 28: return "R_SPARC_PCPLT22";
732300228Semaste		case 29: return "R_SPARC_PCPLT10";
733300228Semaste		case 30: return "R_SPARC_10";
734300228Semaste		case 31: return "R_SPARC_11";
735300228Semaste		case 32: return "R_SPARC_64";
736300228Semaste		case 33: return "R_SPARC_OLO10";
737300228Semaste		case 34: return "R_SPARC_HH22";
738300228Semaste		case 35: return "R_SPARC_HM10";
739300228Semaste		case 36: return "R_SPARC_LM22";
740300228Semaste		case 37: return "R_SPARC_PC_HH22";
741300228Semaste		case 38: return "R_SPARC_PC_HM10";
742300228Semaste		case 39: return "R_SPARC_PC_LM22";
743300228Semaste		case 40: return "R_SPARC_WDISP16";
744300228Semaste		case 41: return "R_SPARC_WDISP19";
745300228Semaste		case 42: return "R_SPARC_GLOB_JMP";
746300228Semaste		case 43: return "R_SPARC_7";
747300228Semaste		case 44: return "R_SPARC_5";
748300228Semaste		case 45: return "R_SPARC_6";
749300228Semaste		case 46: return "R_SPARC_DISP64";
750300228Semaste		case 47: return "R_SPARC_PLT64";
751300228Semaste		case 48: return "R_SPARC_HIX22";
752300228Semaste		case 49: return "R_SPARC_LOX10";
753300228Semaste		case 50: return "R_SPARC_H44";
754300228Semaste		case 51: return "R_SPARC_M44";
755300228Semaste		case 52: return "R_SPARC_L44";
756300228Semaste		case 53: return "R_SPARC_REGISTER";
757300228Semaste		case 54: return "R_SPARC_UA64";
758300228Semaste		case 55: return "R_SPARC_UA16";
759300228Semaste		case 56: return "R_SPARC_TLS_GD_HI22";
760300228Semaste		case 57: return "R_SPARC_TLS_GD_LO10";
761300228Semaste		case 58: return "R_SPARC_TLS_GD_ADD";
762300228Semaste		case 59: return "R_SPARC_TLS_GD_CALL";
763300228Semaste		case 60: return "R_SPARC_TLS_LDM_HI22";
764300228Semaste		case 61: return "R_SPARC_TLS_LDM_LO10";
765300228Semaste		case 62: return "R_SPARC_TLS_LDM_ADD";
766300228Semaste		case 63: return "R_SPARC_TLS_LDM_CALL";
767300228Semaste		case 64: return "R_SPARC_TLS_LDO_HIX22";
768300228Semaste		case 65: return "R_SPARC_TLS_LDO_LOX10";
769300228Semaste		case 66: return "R_SPARC_TLS_LDO_ADD";
770300228Semaste		case 67: return "R_SPARC_TLS_IE_HI22";
771300228Semaste		case 68: return "R_SPARC_TLS_IE_LO10";
772300228Semaste		case 69: return "R_SPARC_TLS_IE_LD";
773300228Semaste		case 70: return "R_SPARC_TLS_IE_LDX";
774300228Semaste		case 71: return "R_SPARC_TLS_IE_ADD";
775300228Semaste		case 72: return "R_SPARC_TLS_LE_HIX22";
776300228Semaste		case 73: return "R_SPARC_TLS_LE_LOX10";
777300228Semaste		case 74: return "R_SPARC_TLS_DTPMOD32";
778300228Semaste		case 75: return "R_SPARC_TLS_DTPMOD64";
779300228Semaste		case 76: return "R_SPARC_TLS_DTPOFF32";
780300228Semaste		case 77: return "R_SPARC_TLS_DTPOFF64";
781300228Semaste		case 78: return "R_SPARC_TLS_TPOFF32";
782300228Semaste		case 79: return "R_SPARC_TLS_TPOFF64";
783300228Semaste		}
784300228Semaste		break;
785300228Semaste	case EM_X86_64:
786300228Semaste		switch(type) {
787300228Semaste		case 0: return "R_X86_64_NONE";
788300228Semaste		case 1: return "R_X86_64_64";
789300228Semaste		case 2: return "R_X86_64_PC32";
790300228Semaste		case 3: return "R_X86_64_GOT32";
791300228Semaste		case 4: return "R_X86_64_PLT32";
792300228Semaste		case 5: return "R_X86_64_COPY";
793300228Semaste		case 6: return "R_X86_64_GLOB_DAT";
794300228Semaste		case 7: return "R_X86_64_JUMP_SLOT";
795300228Semaste		case 8: return "R_X86_64_RELATIVE";
796300228Semaste		case 9: return "R_X86_64_GOTPCREL";
797300228Semaste		case 10: return "R_X86_64_32";
798300228Semaste		case 11: return "R_X86_64_32S";
799300228Semaste		case 12: return "R_X86_64_16";
800300228Semaste		case 13: return "R_X86_64_PC16";
801300228Semaste		case 14: return "R_X86_64_8";
802300228Semaste		case 15: return "R_X86_64_PC8";
803300228Semaste		case 16: return "R_X86_64_DTPMOD64";
804300228Semaste		case 17: return "R_X86_64_DTPOFF64";
805300228Semaste		case 18: return "R_X86_64_TPOFF64";
806300228Semaste		case 19: return "R_X86_64_TLSGD";
807300228Semaste		case 20: return "R_X86_64_TLSLD";
808300228Semaste		case 21: return "R_X86_64_DTPOFF32";
809300228Semaste		case 22: return "R_X86_64_GOTTPOFF";
810300228Semaste		case 23: return "R_X86_64_TPOFF32";
811300228Semaste		case 24: return "R_X86_64_PC64";
812300228Semaste		case 25: return "R_X86_64_GOTOFF64";
813300228Semaste		case 26: return "R_X86_64_GOTPC32";
814300228Semaste		case 27: return "R_X86_64_GOT64";
815300228Semaste		case 28: return "R_X86_64_GOTPCREL64";
816300228Semaste		case 29: return "R_X86_64_GOTPC64";
817300228Semaste		case 30: return "R_X86_64_GOTPLT64";
818300228Semaste		case 31: return "R_X86_64_PLTOFF64";
819300228Semaste		case 32: return "R_X86_64_SIZE32";
820300228Semaste		case 33: return "R_X86_64_SIZE64";
821300228Semaste		case 34: return "R_X86_64_GOTPC32_TLSDESC";
822300228Semaste		case 35: return "R_X86_64_TLSDESC_CALL";
823300228Semaste		case 36: return "R_X86_64_TLSDESC";
824300228Semaste		case 37: return "R_X86_64_IRELATIVE";
825300228Semaste		case 38: return "R_X86_64_RELATIVE64";
826300228Semaste		case 41: return "R_X86_64_GOTPCRELX";
827300228Semaste		case 42: return "R_X86_64_REX_GOTPCRELX";
828300228Semaste		}
829300228Semaste		break;
830300228Semaste	}
831300228Semaste
832300228Semaste	snprintf(s_type, sizeof(s_type), "<unknown: %#x>", type);
833300228Semaste	return (s_type);
834300228Semaste}
835