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