Branch data Line data Source code
1 : : /* Returns a human readable description of an ELF header e_machine value. 2 : : Copyright (C) 2019 Red Hat, Inc. 3 : : This file is part of elfutils. 4 : : 5 : : This file is free software; you can redistribute it and/or modify 6 : : it under the terms of either 7 : : 8 : : * the GNU Lesser General Public License as published by the Free 9 : : Software Foundation; either version 3 of the License, or (at 10 : : your option) any later version 11 : : 12 : : or 13 : : 14 : : * the GNU General Public License as published by the Free 15 : : Software Foundation; either version 2 of the License, or (at 16 : : your option) any later version 17 : : 18 : : or both in parallel, as here. 19 : : 20 : : elfutils is distributed in the hope that it will be useful, but 21 : : WITHOUT ANY WARRANTY; without even the implied warranty of 22 : : MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 23 : : General Public License for more details. 24 : : 25 : : You should have received copies of the GNU General Public License and 26 : : the GNU Lesser General Public License along with this program. If 27 : : not, see <http://www.gnu.org/licenses/>. */ 28 : : 29 : : #ifdef HAVE_CONFIG_H 30 : : # include <config.h> 31 : : #endif 32 : : 33 : : #include "libdwelf.h" 34 : : 35 : : 36 : : const char * 37 : 556 : dwelf_elf_e_machine_string (int machine) 38 : : { 39 [ + + + + : 556 : switch (machine) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + ] 40 : : { 41 : : case EM_NONE: 42 : : return "None"; 43 : 2 : case EM_M32: 44 : 2 : return "WE32100"; 45 : 2 : case EM_SPARC: 46 : 2 : return "SPARC"; 47 : 34 : case EM_386: 48 : 34 : return "Intel 80386"; 49 : 2 : case EM_68K: 50 : 2 : return "M68K"; 51 : 2 : case EM_88K: 52 : 2 : return "M88K"; 53 : 2 : case EM_IAMCU: 54 : 2 : return "Intel MCU"; 55 : 2 : case EM_860: 56 : 2 : return "Intel 80860"; 57 : : case EM_MIPS: 58 : : return "MIPS R3000"; 59 : 2 : case EM_S370: 60 : 2 : return "IBM System/370"; 61 : : case EM_MIPS_RS3_LE: 62 : : return "MIPS R3000"; 63 : 2 : case EM_PARISC: 64 : 2 : return "HPPA"; 65 : 2 : case EM_VPP500: 66 : 2 : return "Fujitsu VPP500"; 67 : 2 : case EM_SPARC32PLUS: 68 : 2 : return "SPARC v8+"; 69 : 2 : case EM_960: 70 : 2 : return "Intel 80960"; 71 : 2 : case EM_PPC: 72 : 2 : return "PowerPC"; 73 : 2 : case EM_PPC64: 74 : 2 : return "PowerPC64"; 75 : 2 : case EM_S390: 76 : 2 : return "IBM S/390"; 77 : 2 : case EM_SPU: 78 : 2 : return "IBM SPU/SPC"; 79 : 2 : case EM_V800: 80 : 2 : return "NEC V800"; 81 : 2 : case EM_FR20: 82 : 2 : return "Fujitsu FR20"; 83 : 2 : case EM_RH32: 84 : 2 : return "TRW RH-32"; 85 : 2 : case EM_RCE: 86 : 2 : return "Motorola RCE"; 87 : 4 : case EM_ARM: 88 : 4 : return "ARM"; 89 : 2 : case EM_FAKE_ALPHA: 90 : 2 : return "Digital Alpha"; 91 : 2 : case EM_SH: 92 : 2 : return "SH"; 93 : 2 : case EM_SPARCV9: 94 : 2 : return "SPARC v9"; 95 : 2 : case EM_TRICORE: 96 : 2 : return "Siemens Tricore"; 97 : 2 : case EM_ARC: 98 : 2 : return "ARC"; 99 : 2 : case EM_H8_300: 100 : 2 : return "H8/300"; 101 : 2 : case EM_H8_300H: 102 : 2 : return "H8/300H"; 103 : 2 : case EM_H8S: 104 : 2 : return "H8S"; 105 : 2 : case EM_H8_500: 106 : 2 : return "H8/500"; 107 : 2 : case EM_IA_64: 108 : 2 : return "Intel IA-64"; 109 : 2 : case EM_MIPS_X: 110 : 2 : return "Stanford MIPS-X"; 111 : 2 : case EM_COLDFIRE: 112 : 2 : return "Motorola Coldfire"; 113 : 2 : case EM_68HC12: 114 : 2 : return "Motorola M68HC12"; 115 : 2 : case EM_MMA: 116 : 2 : return "Fujitsu MMA Multimedia Accelerator"; 117 : 2 : case EM_PCP: 118 : 2 : return "Siemens PCP"; 119 : 2 : case EM_NCPU: 120 : 2 : return "Sony nCPU embedded RISC"; 121 : 2 : case EM_NDR1: 122 : 2 : return "Denso NDR1 microprocessor"; 123 : 2 : case EM_STARCORE: 124 : 2 : return "Motorola Star*Core processor"; 125 : 2 : case EM_ME16: 126 : 2 : return "Toyota ME16 processor"; 127 : 2 : case EM_ST100: 128 : 2 : return "STMicroelectronic ST100"; 129 : 2 : case EM_TINYJ: 130 : 2 : return "Advanced Logic Corporation Tinyj"; 131 : 158 : case EM_X86_64: 132 : 158 : return "AMD x86-64"; 133 : 2 : case EM_PDSP: 134 : 2 : return "Sony DSP Processor"; 135 : 2 : case EM_PDP10: 136 : 2 : return "Digital PDP-10"; 137 : 2 : case EM_PDP11: 138 : 2 : return "Digital PDP-11"; 139 : 2 : case EM_FX66: 140 : 2 : return "Siemens FX66 microcontroller"; 141 : 2 : case EM_ST9PLUS: 142 : 2 : return "STMicroelectronics ST9+"; 143 : 2 : case EM_ST7: 144 : 2 : return "STMicroelectronics ST7"; 145 : 2 : case EM_68HC16: 146 : 2 : return "Motorola MC68HC16 microcontroller"; 147 : 2 : case EM_68HC11: 148 : 2 : return "Motorola MC68HC11 microcontroller"; 149 : 2 : case EM_68HC08: 150 : 2 : return "Motorola MC68HC08 microcontroller"; 151 : 2 : case EM_68HC05: 152 : 2 : return "Motorola MC68HC05 microcontroller"; 153 : 2 : case EM_SVX: 154 : 2 : return "Silicon Graphics SVx"; 155 : 2 : case EM_ST19: 156 : 2 : return "STMicroelectronics ST19"; 157 : 2 : case EM_VAX: 158 : 2 : return "Digital VAX"; 159 : 2 : case EM_CRIS: 160 : 2 : return "Axis Communications 32-bit embedded processor"; 161 : 2 : case EM_JAVELIN: 162 : 2 : return "Infineon Technologies 32-bit embedded processor"; 163 : 2 : case EM_FIREPATH: 164 : 2 : return "Element 14 64-bit DSP Processor"; 165 : 2 : case EM_ZSP: 166 : 2 : return "LSI Logic 16-bit DSP Processor"; 167 : 2 : case EM_MMIX: 168 : 2 : return "Donald Knuth's educational 64-bit processor"; 169 : 2 : case EM_HUANY: 170 : 2 : return "Harvard University machine-independent object"; 171 : 2 : case EM_PRISM: 172 : 2 : return "SiTera Prism"; 173 : 2 : case EM_AVR: 174 : 2 : return "Atmel AVR 8-bit microcontroller"; 175 : 2 : case EM_FR30: 176 : 2 : return "Fujitsu FR30"; 177 : 2 : case EM_D10V: 178 : 2 : return "Mitsubishi D10V"; 179 : 2 : case EM_D30V: 180 : 2 : return "Mitsubishi D30V"; 181 : 2 : case EM_V850: 182 : 2 : return "NEC v850"; 183 : 2 : case EM_M32R: 184 : 2 : return "Mitsubishi M32R"; 185 : 2 : case EM_MN10300: 186 : 2 : return "Matsushita MN10300"; 187 : 2 : case EM_MN10200: 188 : 2 : return "Matsushita MN10200"; 189 : 2 : case EM_PJ: 190 : 2 : return "picoJava"; 191 : 2 : case EM_OPENRISC: 192 : 2 : return "OpenRISC"; 193 : 4 : case EM_ARC_COMPACT: 194 : 4 : return "ARC International ARCompact"; 195 : 2 : case EM_XTENSA: 196 : 2 : return "Tensilica Xtensa Architecture"; 197 : 2 : case EM_VIDEOCORE: 198 : 2 : return "Alphamosaic VideoCore"; 199 : 2 : case EM_TMM_GPP: 200 : 2 : return "Thompson Multimedia General Purpose Processor"; 201 : 2 : case EM_NS32K: 202 : 2 : return "National Semiconductor 32000"; 203 : 2 : case EM_TPC: 204 : 2 : return "Tenor Network TPC"; 205 : 2 : case EM_SNP1K: 206 : 2 : return "Trebia SNP 1000"; 207 : 2 : case EM_ST200: 208 : 2 : return "STMicroelectronics ST200"; 209 : 2 : case EM_IP2K: 210 : 2 : return "Ubicom IP2xxx"; 211 : 2 : case EM_MAX: 212 : 2 : return "MAX processor"; 213 : : case EM_CR: 214 : : return "National Semiconductor CompactRISC"; 215 : 2 : case EM_F2MC16: 216 : 2 : return "Fujitsu F2MC16"; 217 : 2 : case EM_MSP430: 218 : 2 : return "Texas Instruments msp430"; 219 : 2 : case EM_BLACKFIN: 220 : 2 : return "Analog Devices Blackfin DSP"; 221 : 2 : case EM_SE_C33: 222 : 2 : return "Seiko Epson S1C33"; 223 : 2 : case EM_SEP: 224 : 2 : return "Sharp embedded microprocessor"; 225 : 2 : case EM_ARCA: 226 : 2 : return "Arca RISC"; 227 : 2 : case EM_UNICORE: 228 : 2 : return "Unicore"; 229 : 2 : case EM_EXCESS: 230 : 2 : return "eXcess configurable CPU"; 231 : 2 : case EM_DXP: 232 : 2 : return "Icera Semiconductor Deep Execution Processor"; 233 : 2 : case EM_ALTERA_NIOS2: 234 : 2 : return "Altera Nios II"; 235 : 2 : case EM_CRX: 236 : 2 : return "National Semiconductor CompactRISC CRX"; 237 : 2 : case EM_XGATE: 238 : 2 : return "Motorola XGATE"; 239 : 2 : case EM_C166: 240 : 2 : return "Infineon C16x/XC16x"; 241 : 2 : case EM_M16C: 242 : 2 : return "Renesas M16C"; 243 : 2 : case EM_DSPIC30F: 244 : 2 : return "Microchip Technology dsPIC30F"; 245 : 2 : case EM_CE: 246 : 2 : return "Freescale Communication Engine RISC"; 247 : 2 : case EM_M32C: 248 : 2 : return "Renesas M32C"; 249 : 2 : case EM_TSK3000: 250 : 2 : return "Altium TSK3000"; 251 : 2 : case EM_RS08: 252 : 2 : return "Freescale RS08"; 253 : 2 : case EM_SHARC: 254 : 2 : return "Analog Devices SHARC"; 255 : 2 : case EM_ECOG2: 256 : 2 : return "Cyan Technology eCOG2"; 257 : 2 : case EM_SCORE7: 258 : 2 : return "Sunplus S+core7 RISC"; 259 : 2 : case EM_DSP24: 260 : 2 : return "New Japan Radio (NJR) 24-bit DSP"; 261 : 2 : case EM_VIDEOCORE3: 262 : 2 : return "Broadcom VideoCore III"; 263 : 2 : case EM_LATTICEMICO32: 264 : 2 : return "RISC for Lattice FPGA"; 265 : 2 : case EM_SE_C17: 266 : 2 : return "Seiko Epson C17"; 267 : 2 : case EM_TI_C6000: 268 : 2 : return "Texas Instruments TMS320C6000 DSP"; 269 : 2 : case EM_TI_C2000: 270 : 2 : return "Texas Instruments TMS320C2000 DSP"; 271 : 2 : case EM_TI_C5500: 272 : 2 : return "Texas Instruments TMS320C55x DSP"; 273 : 2 : case EM_TI_ARP32: 274 : 2 : return "Texas Instruments Application Specific RISC"; 275 : 2 : case EM_TI_PRU: 276 : 2 : return "Texas Instruments Programmable Realtime Unit"; 277 : 2 : case EM_MMDSP_PLUS: 278 : 2 : return "STMicroelectronics 64bit VLIW DSP"; 279 : 2 : case EM_CYPRESS_M8C: 280 : 2 : return "Cypress M8C"; 281 : 2 : case EM_R32C: 282 : 2 : return "Renesas R32C"; 283 : 2 : case EM_TRIMEDIA: 284 : 2 : return "NXP Semiconductors TriMedia"; 285 : 2 : case EM_QDSP6: 286 : 2 : return "QUALCOMM DSP6"; 287 : 2 : case EM_8051: 288 : 2 : return "Intel 8051 and variants"; 289 : 2 : case EM_STXP7X: 290 : 2 : return "STMicroelectronics STxP7x"; 291 : 2 : case EM_NDS32: 292 : 2 : return "Andes Technology compact code size embedded RISC"; 293 : 2 : case EM_ECOG1X: 294 : 2 : return "Cyan Technology eCOG1X"; 295 : 2 : case EM_MAXQ30: 296 : 2 : return "Dallas Semiconductor MAXQ30"; 297 : 2 : case EM_XIMO16: 298 : 2 : return "New Japan Radio (NJR) 16-bit DSP"; 299 : 2 : case EM_MANIK: 300 : 2 : return "M2000 Reconfigurable RISC"; 301 : 2 : case EM_CRAYNV2: 302 : 2 : return "Cray NV2 vector architecture"; 303 : 2 : case EM_RX: 304 : 2 : return "Renesas RX"; 305 : 2 : case EM_METAG: 306 : 2 : return "Imagination Technologies META"; 307 : 2 : case EM_MCST_ELBRUS: 308 : 2 : return "MCST Elbrus"; 309 : 2 : case EM_ECOG16: 310 : 2 : return "Cyan Technology eCOG16"; 311 : : case EM_CR16: 312 : : return "National Semiconductor CompactRISC"; 313 : 2 : case EM_ETPU: 314 : 2 : return "Freescale Extended Time Processing Unit"; 315 : 2 : case EM_SLE9X: 316 : 2 : return "Infineon Technologies SLE9X"; 317 : 2 : case EM_L10M: 318 : 2 : return "Intel L10M"; 319 : 2 : case EM_K10M: 320 : 2 : return "Intel K10M"; 321 : 2 : case EM_AARCH64: 322 : 2 : return "AARCH64"; 323 : 2 : case EM_AVR32: 324 : 2 : return "Amtel AVR32"; 325 : 2 : case EM_STM8: 326 : 2 : return "STMicroelectronics STM8"; 327 : 2 : case EM_TILE64: 328 : 2 : return "Tilera TILE64"; 329 : 2 : case EM_TILEPRO: 330 : 2 : return "Tilera TILEPro"; 331 : 2 : case EM_MICROBLAZE: 332 : 2 : return "Xilinx MicroBlaze"; 333 : 2 : case EM_CUDA: 334 : 2 : return "NVIDIA CUDA"; 335 : 2 : case EM_TILEGX: 336 : 2 : return "Tilera TILE-Gx"; 337 : 2 : case EM_CLOUDSHIELD: 338 : 2 : return "CloudShield"; 339 : 2 : case EM_COREA_1ST: 340 : 2 : return "KIPO-KAIST Core-A 1st gen"; 341 : 2 : case EM_COREA_2ND: 342 : 2 : return "KIPO-KAIST Core-A 2nd gen"; 343 : 2 : case EM_ARCV2: 344 : 2 : return "Synopsys ARCv2 ISA"; 345 : 2 : case EM_OPEN8: 346 : 2 : return "Open8 RISC"; 347 : 2 : case EM_RL78: 348 : 2 : return "Renesas RL78"; 349 : 2 : case EM_VIDEOCORE5: 350 : 2 : return "Broadcom VideoCore V"; 351 : 2 : case EM_78KOR: 352 : 2 : return "Renesas 78KOR"; 353 : 2 : case EM_56800EX: 354 : 2 : return "Freescale 56800EX DSC"; 355 : 2 : case EM_BA1: 356 : 2 : return "Beyond BA1"; 357 : 2 : case EM_BA2: 358 : 2 : return "Beyond BA2"; 359 : 2 : case EM_XCORE: 360 : 2 : return "XMOS xCORE"; 361 : 2 : case EM_MCHP_PIC: 362 : 2 : return "Microchip 8-bit PIC"; 363 : 2 : case EM_INTELGT: 364 : 2 : return "Intel Graphics Technology"; 365 : 2 : case EM_KM32: 366 : 2 : return "KM211 KM32"; 367 : 2 : case EM_KMX32: 368 : 2 : return "KM211 KMX32"; 369 : 2 : case EM_EMX16: 370 : 2 : return "KM211 KMX16"; 371 : 2 : case EM_EMX8: 372 : 2 : return "KM211 KMX8"; 373 : 2 : case EM_KVARC: 374 : 2 : return "KM211 KVARC"; 375 : 2 : case EM_CDP: 376 : 2 : return "Paneve CDP"; 377 : 2 : case EM_COGE: 378 : 2 : return "Cognitive Smart Memory Processor"; 379 : 2 : case EM_COOL: 380 : 2 : return "Bluechip CoolEngine"; 381 : 2 : case EM_NORC: 382 : 2 : return "Nanoradio Optimized RISC"; 383 : 2 : case EM_CSR_KALIMBA: 384 : 2 : return "CSR Kalimba"; 385 : 2 : case EM_Z80: 386 : 2 : return "Zilog Z80"; 387 : 2 : case EM_VISIUM: 388 : 2 : return "CDS VISIUMcore"; 389 : 2 : case EM_FT32: 390 : 2 : return "FTDI Chip FT32"; 391 : 2 : case EM_MOXIE: 392 : 2 : return "Moxie"; 393 : 2 : case EM_AMDGPU: 394 : 2 : return "AMD GPU"; 395 : 2 : case EM_RISCV: 396 : 2 : return "RISC-V"; 397 : 2 : case EM_BPF: 398 : 2 : return "BPF"; 399 : 2 : case EM_CSKY: 400 : 2 : return "C-SKY"; 401 : 2 : case EM_LOONGARCH: 402 : 2 : return "LoongArch"; 403 : : 404 : 2 : case EM_ALPHA: 405 : 2 : return "Alpha"; 406 : : 407 : 0 : default: 408 : 0 : return NULL; 409 : : } 410 : : }