current commit
260929.11 · deps: update lief to 1.0.0
/* Copyright 2017 - 2026 R. Thomas
 * Copyright 2017 - 2026 Quarkslab
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
#include "LIEF/ELF/EnumToString.hpp"
#include "frozen.hpp"


namespace LIEF::ELF {

const char* to_string(ARCH e) {
#define ENTRY(X) std::pair(ARCH::X, #X)
  STRING_MAP enums2str{
      ENTRY(NONE),         ENTRY(M32),
      ENTRY(SPARC),        ENTRY(I386),
      ENTRY(M68K),         ENTRY(M88K),
      ENTRY(IAMCU),        ENTRY(I860),
      ENTRY(MIPS),         ENTRY(S370),
      ENTRY(MIPS_RS3_LE),  ENTRY(PARISC),
      ENTRY(VPP500),       ENTRY(SPARC32PLUS),
      ENTRY(I60),          ENTRY(PPC),
      ENTRY(PPC64),        ENTRY(S390),
      ENTRY(SPU),          ENTRY(V800),
      ENTRY(FR20),         ENTRY(RH32),
      ENTRY(RCE),          ENTRY(ARM),
      ENTRY(ALPHA),        ENTRY(SH),
      ENTRY(SPARCV9),      ENTRY(TRICORE),
      ENTRY(ARC),          ENTRY(H8_300),
      ENTRY(H8_300H),      ENTRY(H8S),
      ENTRY(H8_500),       ENTRY(IA_64),
      ENTRY(MIPS_X),       ENTRY(COLDFIRE),
      ENTRY(M68HC12),      ENTRY(MMA),
      ENTRY(PCP),          ENTRY(NCPU),
      ENTRY(NDR1),         ENTRY(STARCORE),
      ENTRY(ME16),         ENTRY(ST100),
      ENTRY(TINYJ),        ENTRY(X86_64),
      ENTRY(PDSP),         ENTRY(PDP10),
      ENTRY(PDP11),        ENTRY(FX66),
      ENTRY(ST9PLUS),      ENTRY(ST7),
      ENTRY(M68HC16),      ENTRY(M68HC11),
      ENTRY(M68HC08),      ENTRY(M68HC05),
      ENTRY(SVX),          ENTRY(ST19),
      ENTRY(VAX),          ENTRY(CRIS),
      ENTRY(JAVELIN),      ENTRY(FIREPATH),
      ENTRY(ZSP),          ENTRY(MMIX),
      ENTRY(HUANY),        ENTRY(PRISM),
      ENTRY(AVR),          ENTRY(FR30),
      ENTRY(D10V),         ENTRY(D30V),
      ENTRY(V850),         ENTRY(M32R),
      ENTRY(MN10300),      ENTRY(MN10200),
      ENTRY(PJ),           ENTRY(OPENRISC),
      ENTRY(ARC_COMPACT),  ENTRY(XTENSA),
      ENTRY(VIDEOCORE),    ENTRY(TMM_GPP),
      ENTRY(NS32K),        ENTRY(TPC),
      ENTRY(SNP1K),        ENTRY(ST200),
      ENTRY(IP2K),         ENTRY(MAX),
      ENTRY(CR),           ENTRY(F2MC16),
      ENTRY(MSP430),       ENTRY(BLACKFIN),
      ENTRY(SE_C33),       ENTRY(SEP),
      ENTRY(ARCA),         ENTRY(UNICORE),
      ENTRY(EXCESS),       ENTRY(DXP),
      ENTRY(ALTERA_NIOS2), ENTRY(CRX),
      ENTRY(XGATE),        ENTRY(C166),
      ENTRY(M16C),         ENTRY(DSPIC30F),
      ENTRY(CE),           ENTRY(M32C),
      ENTRY(TSK3000),      ENTRY(RS08),
      ENTRY(SHARC),        ENTRY(ECOG2),
      ENTRY(SCORE7),       ENTRY(DSP24),
      ENTRY(VIDEOCORE3),   ENTRY(LATTICEMICO32),
      ENTRY(SE_C17),       ENTRY(TI_C6000),
      ENTRY(TI_C2000),     ENTRY(TI_C5500),
      ENTRY(MMDSP_PLUS),   ENTRY(CYPRESS_M8C),
      ENTRY(R32C),         ENTRY(TRIMEDIA),
      ENTRY(HEXAGON),      ENTRY(M8051),
      ENTRY(STXP7X),       ENTRY(NDS32),
      ENTRY(ECOG1),        ENTRY(ECOG1X),
      ENTRY(MAXQ30),       ENTRY(XIMO16),
      ENTRY(MANIK),        ENTRY(CRAYNV2),
      ENTRY(RX),           ENTRY(METAG),
      ENTRY(MCST_ELBRUS),  ENTRY(ECOG16),
      ENTRY(CR16),         ENTRY(ETPU),
      ENTRY(SLE9X),        ENTRY(L10M),
      ENTRY(K10M),         ENTRY(AARCH64),
      ENTRY(AVR32),        ENTRY(STM8),
      ENTRY(TILE64),       ENTRY(TILEPRO),
      ENTRY(CUDA),         ENTRY(TILEGX),
      ENTRY(CLOUDSHIELD),  ENTRY(COREA_1ST),
      ENTRY(COREA_2ND),    ENTRY(ARC_COMPACT2),
      ENTRY(OPEN8),        ENTRY(RL78),
      ENTRY(VIDEOCORE5),   ENTRY(M78KOR),
      ENTRY(M56800EX),     ENTRY(BA1),
      ENTRY(BA2),          ENTRY(XCORE),
      ENTRY(MCHP_PIC),     ENTRY(INTEL205),
      ENTRY(INTEL206),     ENTRY(INTEL207),
      ENTRY(INTEL208),     ENTRY(INTEL209),
      ENTRY(KM32),         ENTRY(KMX32),
      ENTRY(KMX16),        ENTRY(KMX8),
      ENTRY(KVARC),        ENTRY(CDP),
      ENTRY(COGE),         ENTRY(COOL),
      ENTRY(NORC),         ENTRY(CSR_KALIMBA),
      ENTRY(AMDGPU),       ENTRY(RISCV),
      ENTRY(BPF),          ENTRY(CSKY),
      ENTRY(LOONGARCH),    ENTRY(ALPHA_ALT),
  };
#undef ENTRY

  const auto it = enums2str.find(e);
  return it == enums2str.end() ? "UNDEFINED" : it->second;
}

} // namespace LIEF::ELF