xref: /openbsd/gnu/llvm/llvm/lib/BinaryFormat/ELF.cpp (revision d415bd75)
173471bf0Spatrick //===- llvm/BinaryFormat/ELF.cpp - The ELF format ---------------*- C++ -*-===//
273471bf0Spatrick //
373471bf0Spatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
473471bf0Spatrick // See https://llvm.org/LICENSE.txt for license information.
573471bf0Spatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
673471bf0Spatrick //
773471bf0Spatrick //===----------------------------------------------------------------------===//
873471bf0Spatrick 
973471bf0Spatrick #include "llvm/BinaryFormat/ELF.h"
10*d415bd75Srobert #include "llvm/ADT/DenseMapInfo.h"
1173471bf0Spatrick #include "llvm/ADT/StringSwitch.h"
1273471bf0Spatrick 
1373471bf0Spatrick using namespace llvm;
1473471bf0Spatrick using namespace ELF;
1573471bf0Spatrick 
1673471bf0Spatrick /// Convert an architecture name into ELF's e_machine value.
convertArchNameToEMachine(StringRef Arch)1773471bf0Spatrick uint16_t ELF::convertArchNameToEMachine(StringRef Arch) {
1873471bf0Spatrick   std::string LowerArch = Arch.lower();
1973471bf0Spatrick   return StringSwitch<uint16_t>(LowerArch)
2073471bf0Spatrick       .Case("none", EM_NONE)
2173471bf0Spatrick       .Case("m32", EM_M32)
2273471bf0Spatrick       .Case("sparc", EM_SPARC)
2373471bf0Spatrick       .Case("386", EM_386)
2473471bf0Spatrick       .Case("68k", EM_68K)
2573471bf0Spatrick       .Case("88k", EM_88K)
2673471bf0Spatrick       .Case("iamcu", EM_IAMCU)
2773471bf0Spatrick       .Case("860", EM_860)
2873471bf0Spatrick       .Case("mips", EM_MIPS)
2973471bf0Spatrick       .Case("s370", EM_S370)
3073471bf0Spatrick       .Case("mips_rs3_le", EM_MIPS_RS3_LE)
3173471bf0Spatrick       .Case("parisc", EM_PARISC)
3273471bf0Spatrick       .Case("vpp500", EM_VPP500)
3373471bf0Spatrick       .Case("sparc32plus", EM_SPARC32PLUS)
3473471bf0Spatrick       .Case("960", EM_960)
3573471bf0Spatrick       .Case("ppc", EM_PPC)
3673471bf0Spatrick       .Case("ppc64", EM_PPC64)
3773471bf0Spatrick       .Case("s390", EM_S390)
3873471bf0Spatrick       .Case("spu", EM_SPU)
3973471bf0Spatrick       .Case("v800", EM_V800)
4073471bf0Spatrick       .Case("fr20", EM_FR20)
4173471bf0Spatrick       .Case("rh32", EM_RH32)
4273471bf0Spatrick       .Case("rce", EM_RCE)
4373471bf0Spatrick       .Case("arm", EM_ARM)
4473471bf0Spatrick       .Case("alpha", EM_ALPHA)
4573471bf0Spatrick       .Case("sh", EM_SH)
4673471bf0Spatrick       .Case("sparcv9", EM_SPARCV9)
4773471bf0Spatrick       .Case("tricore", EM_TRICORE)
4873471bf0Spatrick       .Case("arc", EM_ARC)
4973471bf0Spatrick       .Case("h8_300", EM_H8_300)
5073471bf0Spatrick       .Case("h8_300h", EM_H8_300H)
5173471bf0Spatrick       .Case("h8s", EM_H8S)
5273471bf0Spatrick       .Case("h8_500", EM_H8_500)
5373471bf0Spatrick       .Case("ia_64", EM_IA_64)
5473471bf0Spatrick       .Case("mips_x", EM_MIPS_X)
5573471bf0Spatrick       .Case("coldfire", EM_COLDFIRE)
5673471bf0Spatrick       .Case("68hc12", EM_68HC12)
5773471bf0Spatrick       .Case("mma", EM_MMA)
5873471bf0Spatrick       .Case("pcp", EM_PCP)
5973471bf0Spatrick       .Case("ncpu", EM_NCPU)
6073471bf0Spatrick       .Case("ndr1", EM_NDR1)
6173471bf0Spatrick       .Case("starcore", EM_STARCORE)
6273471bf0Spatrick       .Case("me16", EM_ME16)
6373471bf0Spatrick       .Case("st100", EM_ST100)
6473471bf0Spatrick       .Case("tinyj", EM_TINYJ)
6573471bf0Spatrick       .Case("x86_64", EM_X86_64)
6673471bf0Spatrick       .Case("pdsp", EM_PDSP)
6773471bf0Spatrick       .Case("pdp10", EM_PDP10)
6873471bf0Spatrick       .Case("pdp11", EM_PDP11)
6973471bf0Spatrick       .Case("fx66", EM_FX66)
7073471bf0Spatrick       .Case("st9plus", EM_ST9PLUS)
7173471bf0Spatrick       .Case("st7", EM_ST7)
7273471bf0Spatrick       .Case("68hc16", EM_68HC16)
7373471bf0Spatrick       .Case("68hc11", EM_68HC11)
7473471bf0Spatrick       .Case("68hc08", EM_68HC08)
7573471bf0Spatrick       .Case("68hc05", EM_68HC05)
7673471bf0Spatrick       .Case("svx", EM_SVX)
7773471bf0Spatrick       .Case("st19", EM_ST19)
7873471bf0Spatrick       .Case("vax", EM_VAX)
7973471bf0Spatrick       .Case("cris", EM_CRIS)
8073471bf0Spatrick       .Case("javelin", EM_JAVELIN)
8173471bf0Spatrick       .Case("firepath", EM_FIREPATH)
8273471bf0Spatrick       .Case("zsp", EM_ZSP)
8373471bf0Spatrick       .Case("mmix", EM_MMIX)
8473471bf0Spatrick       .Case("huany", EM_HUANY)
8573471bf0Spatrick       .Case("prism", EM_PRISM)
8673471bf0Spatrick       .Case("avr", EM_AVR)
8773471bf0Spatrick       .Case("fr30", EM_FR30)
8873471bf0Spatrick       .Case("d10v", EM_D10V)
8973471bf0Spatrick       .Case("d30v", EM_D30V)
9073471bf0Spatrick       .Case("v850", EM_V850)
9173471bf0Spatrick       .Case("m32r", EM_M32R)
9273471bf0Spatrick       .Case("mn10300", EM_MN10300)
9373471bf0Spatrick       .Case("mn10200", EM_MN10200)
9473471bf0Spatrick       .Case("pj", EM_PJ)
9573471bf0Spatrick       .Case("openrisc", EM_OPENRISC)
9673471bf0Spatrick       .Case("arc_compact", EM_ARC_COMPACT)
9773471bf0Spatrick       .Case("xtensa", EM_XTENSA)
9873471bf0Spatrick       .Case("videocore", EM_VIDEOCORE)
9973471bf0Spatrick       .Case("tmm_gpp", EM_TMM_GPP)
10073471bf0Spatrick       .Case("ns32k", EM_NS32K)
10173471bf0Spatrick       .Case("tpc", EM_TPC)
10273471bf0Spatrick       .Case("snp1k", EM_SNP1K)
10373471bf0Spatrick       .Case("st200", EM_ST200)
10473471bf0Spatrick       .Case("ip2k", EM_IP2K)
10573471bf0Spatrick       .Case("max", EM_MAX)
10673471bf0Spatrick       .Case("cr", EM_CR)
10773471bf0Spatrick       .Case("f2mc16", EM_F2MC16)
10873471bf0Spatrick       .Case("msp430", EM_MSP430)
10973471bf0Spatrick       .Case("blackfin", EM_BLACKFIN)
11073471bf0Spatrick       .Case("se_c33", EM_SE_C33)
11173471bf0Spatrick       .Case("sep", EM_SEP)
11273471bf0Spatrick       .Case("arca", EM_ARCA)
11373471bf0Spatrick       .Case("unicore", EM_UNICORE)
11473471bf0Spatrick       .Case("excess", EM_EXCESS)
11573471bf0Spatrick       .Case("dxp", EM_DXP)
11673471bf0Spatrick       .Case("altera_nios2", EM_ALTERA_NIOS2)
11773471bf0Spatrick       .Case("crx", EM_CRX)
11873471bf0Spatrick       .Case("xgate", EM_XGATE)
11973471bf0Spatrick       .Case("c166", EM_C166)
12073471bf0Spatrick       .Case("m16c", EM_M16C)
12173471bf0Spatrick       .Case("dspic30f", EM_DSPIC30F)
12273471bf0Spatrick       .Case("ce", EM_CE)
12373471bf0Spatrick       .Case("m32c", EM_M32C)
12473471bf0Spatrick       .Case("tsk3000", EM_TSK3000)
12573471bf0Spatrick       .Case("rs08", EM_RS08)
12673471bf0Spatrick       .Case("sharc", EM_SHARC)
12773471bf0Spatrick       .Case("ecog2", EM_ECOG2)
12873471bf0Spatrick       .Case("score7", EM_SCORE7)
12973471bf0Spatrick       .Case("dsp24", EM_DSP24)
13073471bf0Spatrick       .Case("videocore3", EM_VIDEOCORE3)
13173471bf0Spatrick       .Case("latticemico32", EM_LATTICEMICO32)
13273471bf0Spatrick       .Case("se_c17", EM_SE_C17)
13373471bf0Spatrick       .Case("ti_c6000", EM_TI_C6000)
13473471bf0Spatrick       .Case("ti_c2000", EM_TI_C2000)
13573471bf0Spatrick       .Case("ti_c5500", EM_TI_C5500)
13673471bf0Spatrick       .Case("mmdsp_plus", EM_MMDSP_PLUS)
13773471bf0Spatrick       .Case("cypress_m8c", EM_CYPRESS_M8C)
13873471bf0Spatrick       .Case("r32c", EM_R32C)
13973471bf0Spatrick       .Case("trimedia", EM_TRIMEDIA)
14073471bf0Spatrick       .Case("hexagon", EM_HEXAGON)
14173471bf0Spatrick       .Case("8051", EM_8051)
14273471bf0Spatrick       .Case("stxp7x", EM_STXP7X)
14373471bf0Spatrick       .Case("nds32", EM_NDS32)
14473471bf0Spatrick       .Case("ecog1", EM_ECOG1)
14573471bf0Spatrick       .Case("ecog1x", EM_ECOG1X)
14673471bf0Spatrick       .Case("maxq30", EM_MAXQ30)
14773471bf0Spatrick       .Case("ximo16", EM_XIMO16)
14873471bf0Spatrick       .Case("manik", EM_MANIK)
14973471bf0Spatrick       .Case("craynv2", EM_CRAYNV2)
15073471bf0Spatrick       .Case("rx", EM_RX)
15173471bf0Spatrick       .Case("metag", EM_METAG)
15273471bf0Spatrick       .Case("mcst_elbrus", EM_MCST_ELBRUS)
15373471bf0Spatrick       .Case("ecog16", EM_ECOG16)
15473471bf0Spatrick       .Case("cr16", EM_CR16)
15573471bf0Spatrick       .Case("etpu", EM_ETPU)
15673471bf0Spatrick       .Case("sle9x", EM_SLE9X)
15773471bf0Spatrick       .Case("l10m", EM_L10M)
15873471bf0Spatrick       .Case("k10m", EM_K10M)
15973471bf0Spatrick       .Case("aarch64", EM_AARCH64)
16073471bf0Spatrick       .Case("avr32", EM_AVR32)
16173471bf0Spatrick       .Case("stm8", EM_STM8)
16273471bf0Spatrick       .Case("tile64", EM_TILE64)
16373471bf0Spatrick       .Case("tilepro", EM_TILEPRO)
16473471bf0Spatrick       .Case("cuda", EM_CUDA)
16573471bf0Spatrick       .Case("tilegx", EM_TILEGX)
16673471bf0Spatrick       .Case("cloudshield", EM_CLOUDSHIELD)
16773471bf0Spatrick       .Case("corea_1st", EM_COREA_1ST)
16873471bf0Spatrick       .Case("corea_2nd", EM_COREA_2ND)
16973471bf0Spatrick       .Case("arc_compact2", EM_ARC_COMPACT2)
17073471bf0Spatrick       .Case("open8", EM_OPEN8)
17173471bf0Spatrick       .Case("rl78", EM_RL78)
17273471bf0Spatrick       .Case("videocore5", EM_VIDEOCORE5)
17373471bf0Spatrick       .Case("78kor", EM_78KOR)
17473471bf0Spatrick       .Case("56800ex", EM_56800EX)
17573471bf0Spatrick       .Case("ba1", EM_BA1)
17673471bf0Spatrick       .Case("ba2", EM_BA2)
17773471bf0Spatrick       .Case("xcore", EM_XCORE)
17873471bf0Spatrick       .Case("mchp_pic", EM_MCHP_PIC)
17973471bf0Spatrick       .Case("intel205", EM_INTEL205)
18073471bf0Spatrick       .Case("intel206", EM_INTEL206)
18173471bf0Spatrick       .Case("intel207", EM_INTEL207)
18273471bf0Spatrick       .Case("intel208", EM_INTEL208)
18373471bf0Spatrick       .Case("intel209", EM_INTEL209)
18473471bf0Spatrick       .Case("km32", EM_KM32)
18573471bf0Spatrick       .Case("kmx32", EM_KMX32)
18673471bf0Spatrick       .Case("kmx16", EM_KMX16)
18773471bf0Spatrick       .Case("kmx8", EM_KMX8)
18873471bf0Spatrick       .Case("kvarc", EM_KVARC)
18973471bf0Spatrick       .Case("cdp", EM_CDP)
19073471bf0Spatrick       .Case("coge", EM_COGE)
19173471bf0Spatrick       .Case("cool", EM_COOL)
19273471bf0Spatrick       .Case("norc", EM_NORC)
19373471bf0Spatrick       .Case("csr_kalimba", EM_CSR_KALIMBA)
19473471bf0Spatrick       .Case("amdgpu", EM_AMDGPU)
19573471bf0Spatrick       .Case("riscv", EM_RISCV)
19673471bf0Spatrick       .Case("lanai", EM_LANAI)
19773471bf0Spatrick       .Case("bpf", EM_BPF)
19873471bf0Spatrick       .Case("ve", EM_VE)
19973471bf0Spatrick       .Case("csky", EM_CSKY)
200*d415bd75Srobert       .Case("loongarch", EM_LOONGARCH)
20173471bf0Spatrick       .Default(EM_NONE);
20273471bf0Spatrick }
20373471bf0Spatrick 
20473471bf0Spatrick /// Convert an ELF's e_machine value into an architecture name.
convertEMachineToArchName(uint16_t EMachine)20573471bf0Spatrick StringRef ELF::convertEMachineToArchName(uint16_t EMachine) {
20673471bf0Spatrick   switch (EMachine) {
20773471bf0Spatrick   case EM_NONE:
20873471bf0Spatrick     return "None";
20973471bf0Spatrick   case EM_M32:
21073471bf0Spatrick     return "m32";
21173471bf0Spatrick   case EM_SPARC:
21273471bf0Spatrick     return "sparc";
21373471bf0Spatrick   case EM_386:
21473471bf0Spatrick     return "386";
21573471bf0Spatrick   case EM_68K:
21673471bf0Spatrick     return "68k";
21773471bf0Spatrick   case EM_88K:
21873471bf0Spatrick     return "88k";
21973471bf0Spatrick   case EM_IAMCU:
22073471bf0Spatrick     return "iamcu";
22173471bf0Spatrick   case EM_860:
22273471bf0Spatrick     return "860";
22373471bf0Spatrick   case EM_MIPS:
22473471bf0Spatrick     return "mips";
22573471bf0Spatrick   case EM_S370:
22673471bf0Spatrick     return "s370";
22773471bf0Spatrick   case EM_MIPS_RS3_LE:
22873471bf0Spatrick     return "mips_rs3_le";
22973471bf0Spatrick   case EM_PARISC:
23073471bf0Spatrick     return "parisc";
23173471bf0Spatrick   case EM_VPP500:
23273471bf0Spatrick     return "vpp500";
23373471bf0Spatrick   case EM_SPARC32PLUS:
23473471bf0Spatrick     return "sparc32plus";
23573471bf0Spatrick   case EM_960:
23673471bf0Spatrick     return "960";
23773471bf0Spatrick   case EM_PPC:
23873471bf0Spatrick     return "ppc";
23973471bf0Spatrick   case EM_PPC64:
24073471bf0Spatrick     return "ppc64";
24173471bf0Spatrick   case EM_S390:
24273471bf0Spatrick     return "s390";
24373471bf0Spatrick   case EM_SPU:
24473471bf0Spatrick     return "spu";
24573471bf0Spatrick   case EM_V800:
24673471bf0Spatrick     return "v800";
24773471bf0Spatrick   case EM_FR20:
24873471bf0Spatrick     return "fr20";
24973471bf0Spatrick   case EM_RH32:
25073471bf0Spatrick     return "rh32";
25173471bf0Spatrick   case EM_RCE:
25273471bf0Spatrick     return "rce";
25373471bf0Spatrick   case EM_ARM:
25473471bf0Spatrick     return "arm";
25573471bf0Spatrick   case EM_ALPHA:
25673471bf0Spatrick     return "alpha";
25773471bf0Spatrick   case EM_SH:
25873471bf0Spatrick     return "sh";
25973471bf0Spatrick   case EM_SPARCV9:
26073471bf0Spatrick     return "sparcv9";
26173471bf0Spatrick   case EM_TRICORE:
26273471bf0Spatrick     return "tricore";
26373471bf0Spatrick   case EM_ARC:
26473471bf0Spatrick     return "arc";
26573471bf0Spatrick   case EM_H8_300:
26673471bf0Spatrick     return "h8_300";
26773471bf0Spatrick   case EM_H8_300H:
26873471bf0Spatrick     return "h8_300h";
26973471bf0Spatrick   case EM_H8S:
27073471bf0Spatrick     return "h8s";
27173471bf0Spatrick   case EM_H8_500:
27273471bf0Spatrick     return "h8_500";
27373471bf0Spatrick   case EM_IA_64:
27473471bf0Spatrick     return "ia_64";
27573471bf0Spatrick   case EM_MIPS_X:
27673471bf0Spatrick     return "mips_x";
27773471bf0Spatrick   case EM_COLDFIRE:
27873471bf0Spatrick     return "coldfire";
27973471bf0Spatrick   case EM_68HC12:
28073471bf0Spatrick     return "68hc12";
28173471bf0Spatrick   case EM_MMA:
28273471bf0Spatrick     return "mma";
28373471bf0Spatrick   case EM_PCP:
28473471bf0Spatrick     return "pcp";
28573471bf0Spatrick   case EM_NCPU:
28673471bf0Spatrick     return "ncpu";
28773471bf0Spatrick   case EM_NDR1:
28873471bf0Spatrick     return "ndr1";
28973471bf0Spatrick   case EM_STARCORE:
29073471bf0Spatrick     return "starcore";
29173471bf0Spatrick   case EM_ME16:
29273471bf0Spatrick     return "me16";
29373471bf0Spatrick   case EM_ST100:
29473471bf0Spatrick     return "st100";
29573471bf0Spatrick   case EM_TINYJ:
29673471bf0Spatrick     return "tinyj";
29773471bf0Spatrick   case EM_X86_64:
29873471bf0Spatrick     return "x86_64";
29973471bf0Spatrick   case EM_PDSP:
30073471bf0Spatrick     return "pdsp";
30173471bf0Spatrick   case EM_PDP10:
30273471bf0Spatrick     return "pdp10";
30373471bf0Spatrick   case EM_PDP11:
30473471bf0Spatrick     return "pdp11";
30573471bf0Spatrick   case EM_FX66:
30673471bf0Spatrick     return "fx66";
30773471bf0Spatrick   case EM_ST9PLUS:
30873471bf0Spatrick     return "st9plus";
30973471bf0Spatrick   case EM_ST7:
31073471bf0Spatrick     return "st7";
31173471bf0Spatrick   case EM_68HC16:
31273471bf0Spatrick     return "68hc16";
31373471bf0Spatrick   case EM_68HC11:
31473471bf0Spatrick     return "68hc11";
31573471bf0Spatrick   case EM_68HC08:
31673471bf0Spatrick     return "68hc08";
31773471bf0Spatrick   case EM_68HC05:
31873471bf0Spatrick     return "68hc05";
31973471bf0Spatrick   case EM_SVX:
32073471bf0Spatrick     return "svx";
32173471bf0Spatrick   case EM_ST19:
32273471bf0Spatrick     return "st19";
32373471bf0Spatrick   case EM_VAX:
32473471bf0Spatrick     return "vax";
32573471bf0Spatrick   case EM_CRIS:
32673471bf0Spatrick     return "cris";
32773471bf0Spatrick   case EM_JAVELIN:
32873471bf0Spatrick     return "javelin";
32973471bf0Spatrick   case EM_FIREPATH:
33073471bf0Spatrick     return "firepath";
33173471bf0Spatrick   case EM_ZSP:
33273471bf0Spatrick     return "zsp";
33373471bf0Spatrick   case EM_MMIX:
33473471bf0Spatrick     return "mmix";
33573471bf0Spatrick   case EM_HUANY:
33673471bf0Spatrick     return "huany";
33773471bf0Spatrick   case EM_PRISM:
33873471bf0Spatrick     return "prism";
33973471bf0Spatrick   case EM_AVR:
34073471bf0Spatrick     return "avr";
34173471bf0Spatrick   case EM_FR30:
34273471bf0Spatrick     return "fr30";
34373471bf0Spatrick   case EM_D10V:
34473471bf0Spatrick     return "d10v";
34573471bf0Spatrick   case EM_D30V:
34673471bf0Spatrick     return "d30v";
34773471bf0Spatrick   case EM_V850:
34873471bf0Spatrick     return "v850";
34973471bf0Spatrick   case EM_M32R:
35073471bf0Spatrick     return "m32r";
35173471bf0Spatrick   case EM_MN10300:
35273471bf0Spatrick     return "mn10300";
35373471bf0Spatrick   case EM_MN10200:
35473471bf0Spatrick     return "mn10200";
35573471bf0Spatrick   case EM_PJ:
35673471bf0Spatrick     return "pj";
35773471bf0Spatrick   case EM_OPENRISC:
35873471bf0Spatrick     return "openrisc";
35973471bf0Spatrick   case EM_ARC_COMPACT:
36073471bf0Spatrick     return "arc_compact";
36173471bf0Spatrick   case EM_XTENSA:
36273471bf0Spatrick     return "xtensa";
36373471bf0Spatrick   case EM_VIDEOCORE:
36473471bf0Spatrick     return "videocore";
36573471bf0Spatrick   case EM_TMM_GPP:
36673471bf0Spatrick     return "tmm_gpp";
36773471bf0Spatrick   case EM_NS32K:
36873471bf0Spatrick     return "ns32k";
36973471bf0Spatrick   case EM_TPC:
37073471bf0Spatrick     return "tpc";
37173471bf0Spatrick   case EM_SNP1K:
37273471bf0Spatrick     return "snp1k";
37373471bf0Spatrick   case EM_ST200:
37473471bf0Spatrick     return "st200";
37573471bf0Spatrick   case EM_IP2K:
37673471bf0Spatrick     return "ip2k";
37773471bf0Spatrick   case EM_MAX:
37873471bf0Spatrick     return "max";
37973471bf0Spatrick   case EM_CR:
38073471bf0Spatrick     return "cr";
38173471bf0Spatrick   case EM_F2MC16:
38273471bf0Spatrick     return "f2mc16";
38373471bf0Spatrick   case EM_MSP430:
38473471bf0Spatrick     return "msp430";
38573471bf0Spatrick   case EM_BLACKFIN:
38673471bf0Spatrick     return "blackfin";
38773471bf0Spatrick   case EM_SE_C33:
38873471bf0Spatrick     return "se_c33";
38973471bf0Spatrick   case EM_SEP:
39073471bf0Spatrick     return "sep";
39173471bf0Spatrick   case EM_ARCA:
39273471bf0Spatrick     return "arca";
39373471bf0Spatrick   case EM_UNICORE:
39473471bf0Spatrick     return "unicore";
39573471bf0Spatrick   case EM_EXCESS:
39673471bf0Spatrick     return "excess";
39773471bf0Spatrick   case EM_DXP:
39873471bf0Spatrick     return "dxp";
39973471bf0Spatrick   case EM_ALTERA_NIOS2:
40073471bf0Spatrick     return "altera_nios2";
40173471bf0Spatrick   case EM_CRX:
40273471bf0Spatrick     return "crx";
40373471bf0Spatrick   case EM_XGATE:
40473471bf0Spatrick     return "xgate";
40573471bf0Spatrick   case EM_C166:
40673471bf0Spatrick     return "c166";
40773471bf0Spatrick   case EM_M16C:
40873471bf0Spatrick     return "m16c";
40973471bf0Spatrick   case EM_DSPIC30F:
41073471bf0Spatrick     return "dspic30f";
41173471bf0Spatrick   case EM_CE:
41273471bf0Spatrick     return "ce";
41373471bf0Spatrick   case EM_M32C:
41473471bf0Spatrick     return "m32c";
41573471bf0Spatrick   case EM_TSK3000:
41673471bf0Spatrick     return "tsk3000";
41773471bf0Spatrick   case EM_RS08:
41873471bf0Spatrick     return "rs08";
41973471bf0Spatrick   case EM_SHARC:
42073471bf0Spatrick     return "sharc";
42173471bf0Spatrick   case EM_ECOG2:
42273471bf0Spatrick     return "ecog2";
42373471bf0Spatrick   case EM_SCORE7:
42473471bf0Spatrick     return "score7";
42573471bf0Spatrick   case EM_DSP24:
42673471bf0Spatrick     return "dsp24";
42773471bf0Spatrick   case EM_VIDEOCORE3:
42873471bf0Spatrick     return "videocore3";
42973471bf0Spatrick   case EM_LATTICEMICO32:
43073471bf0Spatrick     return "latticemico32";
43173471bf0Spatrick   case EM_SE_C17:
43273471bf0Spatrick     return "se_c17";
43373471bf0Spatrick   case EM_TI_C6000:
43473471bf0Spatrick     return "ti_c6000";
43573471bf0Spatrick   case EM_TI_C2000:
43673471bf0Spatrick     return "ti_c2000";
43773471bf0Spatrick   case EM_TI_C5500:
43873471bf0Spatrick     return "ti_c5500";
43973471bf0Spatrick   case EM_MMDSP_PLUS:
44073471bf0Spatrick     return "mmdsp_plus";
44173471bf0Spatrick   case EM_CYPRESS_M8C:
44273471bf0Spatrick     return "cypress_m8c";
44373471bf0Spatrick   case EM_R32C:
44473471bf0Spatrick     return "r32c";
44573471bf0Spatrick   case EM_TRIMEDIA:
44673471bf0Spatrick     return "trimedia";
44773471bf0Spatrick   case EM_HEXAGON:
44873471bf0Spatrick     return "hexagon";
44973471bf0Spatrick   case EM_8051:
45073471bf0Spatrick     return "8051";
45173471bf0Spatrick   case EM_STXP7X:
45273471bf0Spatrick     return "stxp7x";
45373471bf0Spatrick   case EM_NDS32:
45473471bf0Spatrick     return "nds32";
45573471bf0Spatrick   case EM_ECOG1:
45673471bf0Spatrick     return "ecog1";
45773471bf0Spatrick   case EM_MAXQ30:
45873471bf0Spatrick     return "maxq30";
45973471bf0Spatrick   case EM_XIMO16:
46073471bf0Spatrick     return "ximo16";
46173471bf0Spatrick   case EM_MANIK:
46273471bf0Spatrick     return "manik";
46373471bf0Spatrick   case EM_CRAYNV2:
46473471bf0Spatrick     return "craynv2";
46573471bf0Spatrick   case EM_RX:
46673471bf0Spatrick     return "rx";
46773471bf0Spatrick   case EM_METAG:
46873471bf0Spatrick     return "metag";
46973471bf0Spatrick   case EM_MCST_ELBRUS:
47073471bf0Spatrick     return "mcst_elbrus";
47173471bf0Spatrick   case EM_ECOG16:
47273471bf0Spatrick     return "ecog16";
47373471bf0Spatrick   case EM_CR16:
47473471bf0Spatrick     return "cr16";
47573471bf0Spatrick   case EM_ETPU:
47673471bf0Spatrick     return "etpu";
47773471bf0Spatrick   case EM_SLE9X:
47873471bf0Spatrick     return "sle9x";
47973471bf0Spatrick   case EM_L10M:
48073471bf0Spatrick     return "l10m";
48173471bf0Spatrick   case EM_K10M:
48273471bf0Spatrick     return "k10m";
48373471bf0Spatrick   case EM_AARCH64:
48473471bf0Spatrick     return "AArch64";
48573471bf0Spatrick   case EM_AVR32:
48673471bf0Spatrick     return "avr32";
48773471bf0Spatrick   case EM_STM8:
48873471bf0Spatrick     return "stm8";
48973471bf0Spatrick   case EM_TILE64:
49073471bf0Spatrick     return "tile64";
49173471bf0Spatrick   case EM_TILEPRO:
49273471bf0Spatrick     return "tilepro";
49373471bf0Spatrick   case EM_CUDA:
49473471bf0Spatrick     return "cuda";
49573471bf0Spatrick   case EM_TILEGX:
49673471bf0Spatrick     return "tilegx";
49773471bf0Spatrick   case EM_CLOUDSHIELD:
49873471bf0Spatrick     return "cloudshield";
49973471bf0Spatrick   case EM_COREA_1ST:
50073471bf0Spatrick     return "corea_1st";
50173471bf0Spatrick   case EM_COREA_2ND:
50273471bf0Spatrick     return "corea_2nd";
50373471bf0Spatrick   case EM_ARC_COMPACT2:
50473471bf0Spatrick     return "arc_compact2";
50573471bf0Spatrick   case EM_OPEN8:
50673471bf0Spatrick     return "open8";
50773471bf0Spatrick   case EM_RL78:
50873471bf0Spatrick     return "rl78";
50973471bf0Spatrick   case EM_VIDEOCORE5:
51073471bf0Spatrick     return "videocore5";
51173471bf0Spatrick   case EM_78KOR:
51273471bf0Spatrick     return "78kor";
51373471bf0Spatrick   case EM_56800EX:
51473471bf0Spatrick     return "56800ex";
51573471bf0Spatrick   case EM_BA1:
51673471bf0Spatrick     return "ba1";
51773471bf0Spatrick   case EM_BA2:
51873471bf0Spatrick     return "ba2";
51973471bf0Spatrick   case EM_XCORE:
52073471bf0Spatrick     return "xcore";
52173471bf0Spatrick   case EM_MCHP_PIC:
52273471bf0Spatrick     return "mchp_pic";
52373471bf0Spatrick   case EM_INTEL205:
52473471bf0Spatrick     return "intel205";
52573471bf0Spatrick   case EM_INTEL206:
52673471bf0Spatrick     return "intel206";
52773471bf0Spatrick   case EM_INTEL207:
52873471bf0Spatrick     return "intel207";
52973471bf0Spatrick   case EM_INTEL208:
53073471bf0Spatrick     return "intel208";
53173471bf0Spatrick   case EM_INTEL209:
53273471bf0Spatrick     return "intel209";
53373471bf0Spatrick   case EM_KM32:
53473471bf0Spatrick     return "km32";
53573471bf0Spatrick   case EM_KMX32:
53673471bf0Spatrick     return "kmx32";
53773471bf0Spatrick   case EM_KMX16:
53873471bf0Spatrick     return "kmx16";
53973471bf0Spatrick   case EM_KMX8:
54073471bf0Spatrick     return "kmx8";
54173471bf0Spatrick   case EM_KVARC:
54273471bf0Spatrick     return "kvarc";
54373471bf0Spatrick   case EM_CDP:
54473471bf0Spatrick     return "cdp";
54573471bf0Spatrick   case EM_COGE:
54673471bf0Spatrick     return "coge";
54773471bf0Spatrick   case EM_COOL:
54873471bf0Spatrick     return "cool";
54973471bf0Spatrick   case EM_NORC:
55073471bf0Spatrick     return "norc";
55173471bf0Spatrick   case EM_CSR_KALIMBA:
55273471bf0Spatrick     return "csr_kalimba";
55373471bf0Spatrick   case EM_AMDGPU:
55473471bf0Spatrick     return "amdgpu";
55573471bf0Spatrick   case EM_RISCV:
55673471bf0Spatrick     return "riscv";
55773471bf0Spatrick   case EM_LANAI:
55873471bf0Spatrick     return "lanai";
55973471bf0Spatrick   case EM_BPF:
56073471bf0Spatrick     return "bpf";
56173471bf0Spatrick   case EM_VE:
56273471bf0Spatrick     return "ve";
56373471bf0Spatrick   case EM_CSKY:
56473471bf0Spatrick     return "csky";
565*d415bd75Srobert   case EM_LOONGARCH:
566*d415bd75Srobert     return "loongarch";
56773471bf0Spatrick   default:
56873471bf0Spatrick     return "None";
56973471bf0Spatrick   }
57073471bf0Spatrick }
571