15918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva//===- ELFYAML.cpp - ELF YAMLIO implementation ----------------------------===// 25918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva// 35918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva// The LLVM Compiler Infrastructure 45918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva// 55918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva// This file is distributed under the University of Illinois Open Source 65918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva// License. See LICENSE.TXT for details. 75918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva// 85918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva//===----------------------------------------------------------------------===// 95918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva// 105918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva// This file defines classes for handling the YAML representation of ELF. 115918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva// 125918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva//===----------------------------------------------------------------------===// 135918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva 145918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva#include "llvm/Object/ELFYAML.h" 15dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines#include "llvm/Support/Casting.h" 165918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva 175918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silvanamespace llvm { 18dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines 19dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen HinesELFYAML::Section::~Section() {} 20dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines 215918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silvanamespace yaml { 225918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva 235918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silvavoid 245918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean SilvaScalarEnumerationTraits<ELFYAML::ELF_ET>::enumeration(IO &IO, 255918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ELFYAML::ELF_ET &Value) { 265918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva#define ECase(X) IO.enumCase(Value, #X, ELF::X); 275918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(ET_NONE) 285918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(ET_REL) 295918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(ET_EXEC) 305918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(ET_DYN) 315918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(ET_CORE) 325918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva#undef ECase 335918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva} 345918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva 355918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silvavoid 365918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean SilvaScalarEnumerationTraits<ELFYAML::ELF_EM>::enumeration(IO &IO, 375918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ELFYAML::ELF_EM &Value) { 385918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva#define ECase(X) IO.enumCase(Value, #X, ELF::X); 395918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_NONE) 405918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_M32) 415918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_SPARC) 425918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_386) 435918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_68K) 445918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_88K) 455918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_486) 465918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_860) 475918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_MIPS) 485918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_S370) 495918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_MIPS_RS3_LE) 505918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_PARISC) 515918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_VPP500) 525918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_SPARC32PLUS) 535918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_960) 545918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_PPC) 555918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_PPC64) 565918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_S390) 575918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_SPU) 585918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_V800) 595918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_FR20) 605918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_RH32) 615918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_RCE) 625918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_ARM) 635918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_ALPHA) 645918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_SH) 655918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_SPARCV9) 665918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_TRICORE) 675918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_ARC) 685918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_H8_300) 695918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_H8_300H) 705918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_H8S) 715918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_H8_500) 725918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_IA_64) 735918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_MIPS_X) 745918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_COLDFIRE) 755918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_68HC12) 765918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_MMA) 775918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_PCP) 785918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_NCPU) 795918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_NDR1) 805918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_STARCORE) 815918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_ME16) 825918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_ST100) 835918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_TINYJ) 845918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_X86_64) 855918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_PDSP) 865918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_PDP10) 875918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_PDP11) 885918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_FX66) 895918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_ST9PLUS) 905918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_ST7) 915918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_68HC16) 925918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_68HC11) 935918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_68HC08) 945918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_68HC05) 955918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_SVX) 965918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_ST19) 975918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_VAX) 985918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_CRIS) 995918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_JAVELIN) 1005918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_FIREPATH) 1015918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_ZSP) 1025918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_MMIX) 1035918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_HUANY) 1045918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_PRISM) 1055918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_AVR) 1065918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_FR30) 1075918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_D10V) 1085918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_D30V) 1095918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_V850) 1105918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_M32R) 1115918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_MN10300) 1125918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_MN10200) 1135918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_PJ) 1145918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_OPENRISC) 1155918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_ARC_COMPACT) 1165918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_XTENSA) 1175918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_VIDEOCORE) 1185918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_TMM_GPP) 1195918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_NS32K) 1205918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_TPC) 1215918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_SNP1K) 1225918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_ST200) 1235918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_IP2K) 1245918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_MAX) 1255918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_CR) 1265918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_F2MC16) 1275918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_MSP430) 1285918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_BLACKFIN) 1295918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_SE_C33) 1305918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_SEP) 1315918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_ARCA) 1325918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_UNICORE) 1335918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_EXCESS) 1345918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_DXP) 1355918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_ALTERA_NIOS2) 1365918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_CRX) 1375918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_XGATE) 1385918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_C166) 1395918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_M16C) 1405918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_DSPIC30F) 1415918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_CE) 1425918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_M32C) 1435918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_TSK3000) 1445918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_RS08) 1455918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_SHARC) 1465918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_ECOG2) 1475918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_SCORE7) 1485918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_DSP24) 1495918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_VIDEOCORE3) 1505918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_LATTICEMICO32) 1515918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_SE_C17) 1525918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_TI_C6000) 1535918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_TI_C2000) 1545918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_TI_C5500) 1555918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_MMDSP_PLUS) 1565918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_CYPRESS_M8C) 1575918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_R32C) 1585918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_TRIMEDIA) 1595918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_HEXAGON) 1605918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_8051) 1615918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_STXP7X) 1625918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_NDS32) 1635918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_ECOG1) 1645918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_ECOG1X) 1655918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_MAXQ30) 1665918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_XIMO16) 1675918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_MANIK) 1685918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_CRAYNV2) 1695918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_RX) 1705918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_METAG) 1715918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_MCST_ELBRUS) 1725918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_ECOG16) 1735918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_CR16) 1745918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_ETPU) 1755918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_SLE9X) 1765918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_L10M) 1775918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_K10M) 1785918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_AARCH64) 1795918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_AVR32) 1805918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_STM8) 1815918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_TILE64) 1825918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_TILEPRO) 1835918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_CUDA) 1845918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_TILEGX) 1855918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_CLOUDSHIELD) 1865918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_COREA_1ST) 1875918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_COREA_2ND) 1885918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_ARC_COMPACT2) 1895918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_OPEN8) 1905918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_RL78) 1915918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_VIDEOCORE5) 1925918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_78KOR) 1935918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(EM_56800EX) 1945918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva#undef ECase 1955918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva} 1965918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva 1975918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silvavoid ScalarEnumerationTraits<ELFYAML::ELF_ELFCLASS>::enumeration( 1985918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva IO &IO, ELFYAML::ELF_ELFCLASS &Value) { 1995918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva#define ECase(X) IO.enumCase(Value, #X, ELF::X); 2005918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva // Since the semantics of ELFCLASSNONE is "invalid", just don't accept it 2015918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva // here. 2025918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(ELFCLASS32) 2035918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(ELFCLASS64) 2045918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva#undef ECase 2055918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva} 2065918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva 2075918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silvavoid ScalarEnumerationTraits<ELFYAML::ELF_ELFDATA>::enumeration( 2085918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva IO &IO, ELFYAML::ELF_ELFDATA &Value) { 2095918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva#define ECase(X) IO.enumCase(Value, #X, ELF::X); 2105918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva // Since the semantics of ELFDATANONE is "invalid", just don't accept it 2115918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva // here. 2125918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(ELFDATA2LSB) 2135918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva ECase(ELFDATA2MSB) 2145918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva#undef ECase 2155918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva} 2165918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva 217ea94e114b436996805012f4395b0a9182aed2334Sean Silvavoid ScalarEnumerationTraits<ELFYAML::ELF_ELFOSABI>::enumeration( 218ea94e114b436996805012f4395b0a9182aed2334Sean Silva IO &IO, ELFYAML::ELF_ELFOSABI &Value) { 219ea94e114b436996805012f4395b0a9182aed2334Sean Silva#define ECase(X) IO.enumCase(Value, #X, ELF::X); 220ea94e114b436996805012f4395b0a9182aed2334Sean Silva ECase(ELFOSABI_NONE) 221ea94e114b436996805012f4395b0a9182aed2334Sean Silva ECase(ELFOSABI_HPUX) 222ea94e114b436996805012f4395b0a9182aed2334Sean Silva ECase(ELFOSABI_NETBSD) 223ea94e114b436996805012f4395b0a9182aed2334Sean Silva ECase(ELFOSABI_GNU) 224ea94e114b436996805012f4395b0a9182aed2334Sean Silva ECase(ELFOSABI_GNU) 225ea94e114b436996805012f4395b0a9182aed2334Sean Silva ECase(ELFOSABI_HURD) 226ea94e114b436996805012f4395b0a9182aed2334Sean Silva ECase(ELFOSABI_SOLARIS) 227ea94e114b436996805012f4395b0a9182aed2334Sean Silva ECase(ELFOSABI_AIX) 228ea94e114b436996805012f4395b0a9182aed2334Sean Silva ECase(ELFOSABI_IRIX) 229ea94e114b436996805012f4395b0a9182aed2334Sean Silva ECase(ELFOSABI_FREEBSD) 230ea94e114b436996805012f4395b0a9182aed2334Sean Silva ECase(ELFOSABI_TRU64) 231ea94e114b436996805012f4395b0a9182aed2334Sean Silva ECase(ELFOSABI_MODESTO) 232ea94e114b436996805012f4395b0a9182aed2334Sean Silva ECase(ELFOSABI_OPENBSD) 233ea94e114b436996805012f4395b0a9182aed2334Sean Silva ECase(ELFOSABI_OPENVMS) 234ea94e114b436996805012f4395b0a9182aed2334Sean Silva ECase(ELFOSABI_NSK) 235ea94e114b436996805012f4395b0a9182aed2334Sean Silva ECase(ELFOSABI_AROS) 236ea94e114b436996805012f4395b0a9182aed2334Sean Silva ECase(ELFOSABI_FENIXOS) 237ea94e114b436996805012f4395b0a9182aed2334Sean Silva ECase(ELFOSABI_C6000_ELFABI) 238ea94e114b436996805012f4395b0a9182aed2334Sean Silva ECase(ELFOSABI_C6000_LINUX) 239ea94e114b436996805012f4395b0a9182aed2334Sean Silva ECase(ELFOSABI_ARM) 240ea94e114b436996805012f4395b0a9182aed2334Sean Silva ECase(ELFOSABI_STANDALONE) 241ea94e114b436996805012f4395b0a9182aed2334Sean Silva#undef ECase 242ea94e114b436996805012f4395b0a9182aed2334Sean Silva} 243ea94e114b436996805012f4395b0a9182aed2334Sean Silva 24436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesvoid ScalarBitSetTraits<ELFYAML::ELF_EF>::bitset(IO &IO, 24536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines ELFYAML::ELF_EF &Value) { 246dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines const auto *Object = static_cast<ELFYAML::Object *>(IO.getContext()); 247dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines assert(Object && "The IO context is not initialized"); 24836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines#define BCase(X) IO.bitSetCase(Value, #X, ELF::X); 249dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines#define BCaseMask(X, M) IO.maskedBitSetCase(Value, #X, ELF::X, ELF::M); 250dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines switch (Object->Header.Machine) { 251dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines case ELF::EM_ARM: 252dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines BCase(EF_ARM_SOFT_FLOAT) 253dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines BCase(EF_ARM_VFP_FLOAT) 254dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines BCaseMask(EF_ARM_EABI_UNKNOWN, EF_ARM_EABIMASK) 255dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines BCaseMask(EF_ARM_EABI_VER1, EF_ARM_EABIMASK) 256dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines BCaseMask(EF_ARM_EABI_VER2, EF_ARM_EABIMASK) 257dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines BCaseMask(EF_ARM_EABI_VER3, EF_ARM_EABIMASK) 258dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines BCaseMask(EF_ARM_EABI_VER4, EF_ARM_EABIMASK) 259dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines BCaseMask(EF_ARM_EABI_VER5, EF_ARM_EABIMASK) 260dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines break; 261dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines case ELF::EM_MIPS: 262dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines BCase(EF_MIPS_NOREORDER) 263dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines BCase(EF_MIPS_PIC) 264dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines BCase(EF_MIPS_CPIC) 265dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines BCase(EF_MIPS_ABI2) 266dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines BCase(EF_MIPS_32BITMODE) 267dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines BCase(EF_MIPS_ABI_O32) 268dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines BCase(EF_MIPS_MICROMIPS) 269dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines BCase(EF_MIPS_ARCH_ASE_M16) 270dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines BCaseMask(EF_MIPS_ARCH_1, EF_MIPS_ARCH) 271dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines BCaseMask(EF_MIPS_ARCH_2, EF_MIPS_ARCH) 272dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines BCaseMask(EF_MIPS_ARCH_3, EF_MIPS_ARCH) 273dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines BCaseMask(EF_MIPS_ARCH_4, EF_MIPS_ARCH) 274dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines BCaseMask(EF_MIPS_ARCH_5, EF_MIPS_ARCH) 275dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines BCaseMask(EF_MIPS_ARCH_32, EF_MIPS_ARCH) 276dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines BCaseMask(EF_MIPS_ARCH_64, EF_MIPS_ARCH) 277dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines BCaseMask(EF_MIPS_ARCH_32R2, EF_MIPS_ARCH) 278dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines BCaseMask(EF_MIPS_ARCH_64R2, EF_MIPS_ARCH) 279dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines BCaseMask(EF_MIPS_ARCH_32R6, EF_MIPS_ARCH) 280dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines BCaseMask(EF_MIPS_ARCH_64R6, EF_MIPS_ARCH) 281dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines break; 282dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines case ELF::EM_HEXAGON: 283dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines BCase(EF_HEXAGON_MACH_V2) 284dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines BCase(EF_HEXAGON_MACH_V3) 285dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines BCase(EF_HEXAGON_MACH_V4) 286dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines BCase(EF_HEXAGON_MACH_V5) 287dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines BCase(EF_HEXAGON_ISA_V2) 288dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines BCase(EF_HEXAGON_ISA_V3) 289dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines BCase(EF_HEXAGON_ISA_V4) 290dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines BCase(EF_HEXAGON_ISA_V5) 291dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines break; 292dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines default: 293dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines llvm_unreachable("Unsupported architecture"); 294dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines } 29536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines#undef BCase 296dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines#undef BCaseMask 29736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines} 29836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 299274264ce2ba93d26702f7ebfe6aea121df44113fSean Silvavoid ScalarEnumerationTraits<ELFYAML::ELF_SHT>::enumeration( 300274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva IO &IO, ELFYAML::ELF_SHT &Value) { 301274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva#define ECase(X) IO.enumCase(Value, #X, ELF::X); 302274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva ECase(SHT_NULL) 303274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva ECase(SHT_PROGBITS) 304068463b714bd53fffd41322a5654b4f359c2166cSean Silva // No SHT_SYMTAB. Use the top-level `Symbols` key instead. 305068463b714bd53fffd41322a5654b4f359c2166cSean Silva // FIXME: Issue a diagnostic with this information. 306274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva ECase(SHT_STRTAB) 307274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva ECase(SHT_RELA) 308274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva ECase(SHT_HASH) 309274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva ECase(SHT_DYNAMIC) 310274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva ECase(SHT_NOTE) 311274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva ECase(SHT_NOBITS) 312274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva ECase(SHT_REL) 313274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva ECase(SHT_SHLIB) 314274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva ECase(SHT_DYNSYM) 315274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva ECase(SHT_INIT_ARRAY) 316274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva ECase(SHT_FINI_ARRAY) 317274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva ECase(SHT_PREINIT_ARRAY) 318274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva ECase(SHT_GROUP) 319274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva ECase(SHT_SYMTAB_SHNDX) 320dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(SHT_LOOS) 321dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(SHT_GNU_ATTRIBUTES) 322dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(SHT_GNU_HASH) 323dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(SHT_GNU_verdef) 324dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(SHT_GNU_verneed) 325dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(SHT_GNU_versym) 326dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(SHT_HIOS) 327dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(SHT_LOPROC) 328dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(SHT_ARM_EXIDX) 329dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(SHT_ARM_PREEMPTMAP) 330dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(SHT_ARM_ATTRIBUTES) 331dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(SHT_ARM_DEBUGOVERLAY) 332dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(SHT_ARM_OVERLAYSECTION) 333dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(SHT_HEX_ORDERED) 334dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(SHT_X86_64_UNWIND) 335dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(SHT_MIPS_REGINFO) 336dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(SHT_MIPS_OPTIONS) 337274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva#undef ECase 338274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva} 339274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva 340274264ce2ba93d26702f7ebfe6aea121df44113fSean Silvavoid ScalarBitSetTraits<ELFYAML::ELF_SHF>::bitset(IO &IO, 341274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva ELFYAML::ELF_SHF &Value) { 342274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva#define BCase(X) IO.bitSetCase(Value, #X, ELF::X); 343274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva BCase(SHF_WRITE) 344274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva BCase(SHF_ALLOC) 345766f25306af343fb2784350cb4d8cd9ca180f0d3Benjamin Kramer BCase(SHF_EXCLUDE) 346274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva BCase(SHF_EXECINSTR) 347274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva BCase(SHF_MERGE) 348274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva BCase(SHF_STRINGS) 349274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva BCase(SHF_INFO_LINK) 350274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva BCase(SHF_LINK_ORDER) 351274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva BCase(SHF_OS_NONCONFORMING) 352274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva BCase(SHF_GROUP) 353274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva BCase(SHF_TLS) 354274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva#undef BCase 355274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva} 356274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva 3575ba1225fb074f8035668637292d994d4c39757d1Sean Silvavoid ScalarEnumerationTraits<ELFYAML::ELF_STT>::enumeration( 3585ba1225fb074f8035668637292d994d4c39757d1Sean Silva IO &IO, ELFYAML::ELF_STT &Value) { 3595ba1225fb074f8035668637292d994d4c39757d1Sean Silva#define ECase(X) IO.enumCase(Value, #X, ELF::X); 3605ba1225fb074f8035668637292d994d4c39757d1Sean Silva ECase(STT_NOTYPE) 3615ba1225fb074f8035668637292d994d4c39757d1Sean Silva ECase(STT_OBJECT) 3625ba1225fb074f8035668637292d994d4c39757d1Sean Silva ECase(STT_FUNC) 3635ba1225fb074f8035668637292d994d4c39757d1Sean Silva ECase(STT_SECTION) 3645ba1225fb074f8035668637292d994d4c39757d1Sean Silva ECase(STT_FILE) 3655ba1225fb074f8035668637292d994d4c39757d1Sean Silva ECase(STT_COMMON) 3665ba1225fb074f8035668637292d994d4c39757d1Sean Silva ECase(STT_TLS) 3675ba1225fb074f8035668637292d994d4c39757d1Sean Silva ECase(STT_GNU_IFUNC) 3685ba1225fb074f8035668637292d994d4c39757d1Sean Silva#undef ECase 3695ba1225fb074f8035668637292d994d4c39757d1Sean Silva} 3705ba1225fb074f8035668637292d994d4c39757d1Sean Silva 371cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hinesvoid ScalarEnumerationTraits<ELFYAML::ELF_STV>::enumeration( 372cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines IO &IO, ELFYAML::ELF_STV &Value) { 373cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines#define ECase(X) IO.enumCase(Value, #X, ELF::X); 374cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines ECase(STV_DEFAULT) 375cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines ECase(STV_INTERNAL) 376cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines ECase(STV_HIDDEN) 377cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines ECase(STV_PROTECTED) 378cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines#undef ECase 379cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines} 380cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 381dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hinesvoid ScalarEnumerationTraits<ELFYAML::ELF_REL>::enumeration( 382dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines IO &IO, ELFYAML::ELF_REL &Value) { 383dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines const auto *Object = static_cast<ELFYAML::Object *>(IO.getContext()); 384dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines assert(Object && "The IO context is not initialized"); 385dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines#define ECase(X) IO.enumCase(Value, #X, ELF::X); 386dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines switch (Object->Header.Machine) { 387dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines case ELF::EM_X86_64: 388dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_X86_64_NONE) 389dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_X86_64_64) 390dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_X86_64_PC32) 391dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_X86_64_GOT32) 392dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_X86_64_PLT32) 393dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_X86_64_COPY) 394dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_X86_64_GLOB_DAT) 395dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_X86_64_JUMP_SLOT) 396dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_X86_64_RELATIVE) 397dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_X86_64_GOTPCREL) 398dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_X86_64_32) 399dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_X86_64_32S) 400dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_X86_64_16) 401dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_X86_64_PC16) 402dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_X86_64_8) 403dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_X86_64_PC8) 404dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_X86_64_DTPMOD64) 405dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_X86_64_DTPOFF64) 406dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_X86_64_TPOFF64) 407dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_X86_64_TLSGD) 408dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_X86_64_TLSLD) 409dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_X86_64_DTPOFF32) 410dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_X86_64_GOTTPOFF) 411dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_X86_64_TPOFF32) 412dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_X86_64_PC64) 413dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_X86_64_GOTOFF64) 414dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_X86_64_GOTPC32) 415dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_X86_64_GOT64) 416dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_X86_64_GOTPCREL64) 417dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_X86_64_GOTPC64) 418dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_X86_64_GOTPLT64) 419dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_X86_64_PLTOFF64) 420dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_X86_64_SIZE32) 421dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_X86_64_SIZE64) 422dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_X86_64_GOTPC32_TLSDESC) 423dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_X86_64_TLSDESC_CALL) 424dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_X86_64_TLSDESC) 425dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_X86_64_IRELATIVE) 426dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines break; 427dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines case ELF::EM_MIPS: 428dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_NONE) 429dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_16) 430dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_32) 431dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_REL32) 432dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_26) 433dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_HI16) 434dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_LO16) 435dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_GPREL16) 436dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_LITERAL) 437dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_GOT16) 438dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_PC16) 439dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_CALL16) 440dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_GPREL32) 441dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_UNUSED1) 442dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_UNUSED2) 443dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_SHIFT5) 444dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_SHIFT6) 445dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_64) 446dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_GOT_DISP) 447dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_GOT_PAGE) 448dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_GOT_OFST) 449dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_GOT_HI16) 450dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_GOT_LO16) 451dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_SUB) 452dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_INSERT_A) 453dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_INSERT_B) 454dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_DELETE) 455dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_HIGHER) 456dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_HIGHEST) 457dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_CALL_HI16) 458dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_CALL_LO16) 459dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_SCN_DISP) 460dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_REL16) 461dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_ADD_IMMEDIATE) 462dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_PJUMP) 463dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_RELGOT) 464dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_JALR) 465dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_TLS_DTPMOD32) 466dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_TLS_DTPREL32) 467dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_TLS_DTPMOD64) 468dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_TLS_DTPREL64) 469dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_TLS_GD) 470dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_TLS_LDM) 471dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_TLS_DTPREL_HI16) 472dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_TLS_DTPREL_LO16) 473dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_TLS_GOTTPREL) 474dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_TLS_TPREL32) 475dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_TLS_TPREL64) 476dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_TLS_TPREL_HI16) 477dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_TLS_TPREL_LO16) 478dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_GLOB_DAT) 479dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_PC21_S2) 480dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_PC26_S2) 481dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_PC18_S3) 482dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_PC19_S2) 483dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_PCHI16) 484dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_PCLO16) 485dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS16_GOT16) 486dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS16_HI16) 487dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS16_LO16) 488dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_COPY) 489dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_JUMP_SLOT) 490dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MICROMIPS_26_S1) 491dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MICROMIPS_HI16) 492dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MICROMIPS_LO16) 493dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MICROMIPS_GOT16) 494dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MICROMIPS_PC16_S1) 495dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MICROMIPS_CALL16) 496dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MICROMIPS_GOT_DISP) 497dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MICROMIPS_GOT_PAGE) 498dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MICROMIPS_GOT_OFST) 499dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MICROMIPS_TLS_GD) 500dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MICROMIPS_TLS_LDM) 501dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MICROMIPS_TLS_DTPREL_HI16) 502dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MICROMIPS_TLS_DTPREL_LO16) 503dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MICROMIPS_TLS_TPREL_HI16) 504dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MICROMIPS_TLS_TPREL_LO16) 505dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_NUM) 506dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_MIPS_PC32) 507dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines break; 508dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines case ELF::EM_HEXAGON: 509dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_NONE) 510dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_B22_PCREL) 511dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_B15_PCREL) 512dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_B7_PCREL) 513dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_LO16) 514dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_HI16) 515dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_32) 516dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_16) 517dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_8) 518dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_GPREL16_0) 519dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_GPREL16_1) 520dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_GPREL16_2) 521dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_GPREL16_3) 522dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_HL16) 523dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_B13_PCREL) 524dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_B9_PCREL) 525dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_B32_PCREL_X) 526dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_32_6_X) 527dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_B22_PCREL_X) 528dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_B15_PCREL_X) 529dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_B13_PCREL_X) 530dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_B9_PCREL_X) 531dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_B7_PCREL_X) 532dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_16_X) 533dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_12_X) 534dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_11_X) 535dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_10_X) 536dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_9_X) 537dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_8_X) 538dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_7_X) 539dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_6_X) 540dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_32_PCREL) 541dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_COPY) 542dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_GLOB_DAT) 543dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_JMP_SLOT) 544dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_RELATIVE) 545dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_PLT_B22_PCREL) 546dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_GOTREL_LO16) 547dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_GOTREL_HI16) 548dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_GOTREL_32) 549dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_GOT_LO16) 550dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_GOT_HI16) 551dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_GOT_32) 552dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_GOT_16) 553dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_DTPMOD_32) 554dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_DTPREL_LO16) 555dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_DTPREL_HI16) 556dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_DTPREL_32) 557dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_DTPREL_16) 558dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_GD_PLT_B22_PCREL) 559dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_GD_GOT_LO16) 560dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_GD_GOT_HI16) 561dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_GD_GOT_32) 562dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_GD_GOT_16) 563dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_IE_LO16) 564dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_IE_HI16) 565dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_IE_32) 566dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_IE_GOT_LO16) 567dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_IE_GOT_HI16) 568dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_IE_GOT_32) 569dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_IE_GOT_16) 570dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_TPREL_LO16) 571dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_TPREL_HI16) 572dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_TPREL_32) 573dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_TPREL_16) 574dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_6_PCREL_X) 575dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_GOTREL_32_6_X) 576dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_GOTREL_16_X) 577dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_GOTREL_11_X) 578dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_GOT_32_6_X) 579dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_GOT_16_X) 580dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_GOT_11_X) 581dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_DTPREL_32_6_X) 582dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_DTPREL_16_X) 583dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_DTPREL_11_X) 584dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_GD_GOT_32_6_X) 585dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_GD_GOT_16_X) 586dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_GD_GOT_11_X) 587dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_IE_32_6_X) 588dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_IE_16_X) 589dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_IE_GOT_32_6_X) 590dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_IE_GOT_16_X) 591dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_IE_GOT_11_X) 592dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_TPREL_32_6_X) 593dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_TPREL_16_X) 594dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_HEX_TPREL_11_X) 595dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines break; 596dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines case ELF::EM_386: 597dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_386_NONE) 598dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_386_32) 599dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_386_PC32) 600dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_386_GOT32) 601dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_386_PLT32) 602dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_386_COPY) 603dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_386_GLOB_DAT) 604dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_386_JUMP_SLOT) 605dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_386_RELATIVE) 606dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_386_GOTOFF) 607dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_386_GOTPC) 608dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_386_32PLT) 609dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_386_TLS_TPOFF) 610dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_386_TLS_IE) 611dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_386_TLS_GOTIE) 612dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_386_TLS_LE) 613dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_386_TLS_GD) 614dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_386_TLS_LDM) 615dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_386_16) 616dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_386_PC16) 617dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_386_8) 618dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_386_PC8) 619dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_386_TLS_GD_32) 620dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_386_TLS_GD_PUSH) 621dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_386_TLS_GD_CALL) 622dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_386_TLS_GD_POP) 623dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_386_TLS_LDM_32) 624dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_386_TLS_LDM_PUSH) 625dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_386_TLS_LDM_CALL) 626dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_386_TLS_LDM_POP) 627dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_386_TLS_LDO_32) 628dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_386_TLS_IE_32) 629dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_386_TLS_LE_32) 630dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_386_TLS_DTPMOD32) 631dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_386_TLS_DTPOFF32) 632dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_386_TLS_TPOFF32) 633dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_386_TLS_GOTDESC) 634dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_386_TLS_DESC_CALL) 635dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_386_TLS_DESC) 636dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_386_IRELATIVE) 637dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ECase(R_386_NUM) 638dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines break; 639dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines default: 640dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines llvm_unreachable("Unsupported architecture"); 641dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines } 642dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines#undef ECase 643dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines} 644dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines 6452fd163fcd19358703d0898c1e7924c536f57baa7Sean Silvavoid MappingTraits<ELFYAML::FileHeader>::mapping(IO &IO, 6462fd163fcd19358703d0898c1e7924c536f57baa7Sean Silva ELFYAML::FileHeader &FileHdr) { 647457c8ebfd070eb7ee840ec97142f975974cfc834Sean Silva IO.mapRequired("Class", FileHdr.Class); 648457c8ebfd070eb7ee840ec97142f975974cfc834Sean Silva IO.mapRequired("Data", FileHdr.Data); 649ea94e114b436996805012f4395b0a9182aed2334Sean Silva IO.mapOptional("OSABI", FileHdr.OSABI, ELFYAML::ELF_ELFOSABI(0)); 650457c8ebfd070eb7ee840ec97142f975974cfc834Sean Silva IO.mapRequired("Type", FileHdr.Type); 651457c8ebfd070eb7ee840ec97142f975974cfc834Sean Silva IO.mapRequired("Machine", FileHdr.Machine); 65236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines IO.mapOptional("Flags", FileHdr.Flags, ELFYAML::ELF_EF(0)); 653457c8ebfd070eb7ee840ec97142f975974cfc834Sean Silva IO.mapOptional("Entry", FileHdr.Entry, Hex64(0)); 6545918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva} 6555918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva 656afcf60fe15999ea07193118f447a34f41171e433Sean Silvavoid MappingTraits<ELFYAML::Symbol>::mapping(IO &IO, ELFYAML::Symbol &Symbol) { 657afcf60fe15999ea07193118f447a34f41171e433Sean Silva IO.mapOptional("Name", Symbol.Name, StringRef()); 6585ba1225fb074f8035668637292d994d4c39757d1Sean Silva IO.mapOptional("Type", Symbol.Type, ELFYAML::ELF_STT(0)); 6596525e92b32c52772f7d750ada7084245655629e6Sean Silva IO.mapOptional("Section", Symbol.Section, StringRef()); 660e38f640b22979994b42fb2f2aafc44cc39c20e8eSean Silva IO.mapOptional("Value", Symbol.Value, Hex64(0)); 661e38f640b22979994b42fb2f2aafc44cc39c20e8eSean Silva IO.mapOptional("Size", Symbol.Size, Hex64(0)); 662cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines IO.mapOptional("Visibility", Symbol.Visibility, ELFYAML::ELF_STV(0)); 663afcf60fe15999ea07193118f447a34f41171e433Sean Silva} 664afcf60fe15999ea07193118f447a34f41171e433Sean Silva 6654235ba32f2610ee2ed1e0c4bfca5c67835e9f97dSean Silvavoid MappingTraits<ELFYAML::LocalGlobalWeakSymbols>::mapping( 6664235ba32f2610ee2ed1e0c4bfca5c67835e9f97dSean Silva IO &IO, ELFYAML::LocalGlobalWeakSymbols &Symbols) { 6674235ba32f2610ee2ed1e0c4bfca5c67835e9f97dSean Silva IO.mapOptional("Local", Symbols.Local); 6684235ba32f2610ee2ed1e0c4bfca5c67835e9f97dSean Silva IO.mapOptional("Global", Symbols.Global); 6694235ba32f2610ee2ed1e0c4bfca5c67835e9f97dSean Silva IO.mapOptional("Weak", Symbols.Weak); 6704235ba32f2610ee2ed1e0c4bfca5c67835e9f97dSean Silva} 6714235ba32f2610ee2ed1e0c4bfca5c67835e9f97dSean Silva 672dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hinesstatic void commonSectionMapping(IO &IO, ELFYAML::Section &Section) { 673274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva IO.mapOptional("Name", Section.Name, StringRef()); 674274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva IO.mapRequired("Type", Section.Type); 675274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva IO.mapOptional("Flags", Section.Flags, ELFYAML::ELF_SHF(0)); 67645b812d1a79f3f8642821e65a25d92e3d741a095Sean Silva IO.mapOptional("Address", Section.Address, Hex64(0)); 677dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines IO.mapOptional("Link", Section.Link, StringRef()); 67897d37e818153c6c5f844ddebaab26be324dbe41cSean Silva IO.mapOptional("AddressAlign", Section.AddressAlign, Hex64(0)); 679274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva} 680274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva 681dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hinesstatic void sectionMapping(IO &IO, ELFYAML::RawContentSection &Section) { 682dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines commonSectionMapping(IO, Section); 683dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines IO.mapOptional("Content", Section.Content); 684dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines IO.mapOptional("Size", Section.Size, Hex64(Section.Content.binary_size())); 685dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines} 686dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines 687dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hinesstatic void sectionMapping(IO &IO, ELFYAML::RelocationSection &Section) { 688dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines commonSectionMapping(IO, Section); 689cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines IO.mapOptional("Info", Section.Info, StringRef()); 690dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines IO.mapOptional("Relocations", Section.Relocations); 691dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines} 692dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines 693dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hinesvoid MappingTraits<std::unique_ptr<ELFYAML::Section>>::mapping( 694dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines IO &IO, std::unique_ptr<ELFYAML::Section> &Section) { 695dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ELFYAML::ELF_SHT sectionType; 696dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines if (IO.outputting()) 697dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines sectionType = Section->Type; 698dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines else 699dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines IO.mapRequired("Type", sectionType); 700dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines 701dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines switch (sectionType) { 702dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines case ELF::SHT_REL: 703dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines case ELF::SHT_RELA: 704dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines if (!IO.outputting()) 705dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines Section.reset(new ELFYAML::RelocationSection()); 706dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines sectionMapping(IO, *cast<ELFYAML::RelocationSection>(Section.get())); 707dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines break; 708dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines default: 709dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines if (!IO.outputting()) 710dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines Section.reset(new ELFYAML::RawContentSection()); 711dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines sectionMapping(IO, *cast<ELFYAML::RawContentSection>(Section.get())); 712dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines } 713dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines} 714dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines 715dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen HinesStringRef MappingTraits<std::unique_ptr<ELFYAML::Section>>::validate( 716dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines IO &io, std::unique_ptr<ELFYAML::Section> &Section) { 717dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines const auto *RawSection = dyn_cast<ELFYAML::RawContentSection>(Section.get()); 718dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines if (!RawSection || RawSection->Size >= RawSection->Content.binary_size()) 719dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines return StringRef(); 720dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines return "Section size must be greater or equal to the content size"; 721dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines} 722dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines 723dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hinesvoid MappingTraits<ELFYAML::Relocation>::mapping(IO &IO, 724dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ELFYAML::Relocation &Rel) { 725dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines IO.mapRequired("Offset", Rel.Offset); 726dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines IO.mapRequired("Symbol", Rel.Symbol); 727dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines IO.mapRequired("Type", Rel.Type); 728dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines IO.mapOptional("Addend", Rel.Addend); 729dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines} 730dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines 7315918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silvavoid MappingTraits<ELFYAML::Object>::mapping(IO &IO, ELFYAML::Object &Object) { 732dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines assert(!IO.getContext() && "The IO context is initialized already"); 733dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines IO.setContext(&Object); 734457c8ebfd070eb7ee840ec97142f975974cfc834Sean Silva IO.mapRequired("FileHeader", Object.Header); 735274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva IO.mapOptional("Sections", Object.Sections); 736068463b714bd53fffd41322a5654b4f359c2166cSean Silva IO.mapOptional("Symbols", Object.Symbols); 737dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines IO.setContext(nullptr); 7385918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva} 7395918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva 7405918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva} // end namespace yaml 7415918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva} // end namespace llvm 742