ELFYAML.cpp revision 274264ce2ba93d26702f7ebfe6aea121df44113f
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"
155918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva
165918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silvanamespace llvm {
175918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silvanamespace yaml {
185918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva
195918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silvavoid
205918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean SilvaScalarEnumerationTraits<ELFYAML::ELF_ET>::enumeration(IO &IO,
215918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva                                                      ELFYAML::ELF_ET &Value) {
225918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva#define ECase(X) IO.enumCase(Value, #X, ELF::X);
235918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(ET_NONE)
245918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(ET_REL)
255918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(ET_EXEC)
265918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(ET_DYN)
275918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(ET_CORE)
285918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva#undef ECase
295918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva}
305918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva
315918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silvavoid
325918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean SilvaScalarEnumerationTraits<ELFYAML::ELF_EM>::enumeration(IO &IO,
335918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva                                                      ELFYAML::ELF_EM &Value) {
345918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva#define ECase(X) IO.enumCase(Value, #X, ELF::X);
355918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_NONE)
365918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_M32)
375918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_SPARC)
385918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_386)
395918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_68K)
405918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_88K)
415918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_486)
425918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_860)
435918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_MIPS)
445918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_S370)
455918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_MIPS_RS3_LE)
465918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_PARISC)
475918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_VPP500)
485918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_SPARC32PLUS)
495918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_960)
505918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_PPC)
515918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_PPC64)
525918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_S390)
535918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_SPU)
545918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_V800)
555918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_FR20)
565918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_RH32)
575918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_RCE)
585918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_ARM)
595918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_ALPHA)
605918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_SH)
615918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_SPARCV9)
625918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_TRICORE)
635918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_ARC)
645918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_H8_300)
655918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_H8_300H)
665918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_H8S)
675918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_H8_500)
685918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_IA_64)
695918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_MIPS_X)
705918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_COLDFIRE)
715918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_68HC12)
725918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_MMA)
735918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_PCP)
745918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_NCPU)
755918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_NDR1)
765918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_STARCORE)
775918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_ME16)
785918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_ST100)
795918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_TINYJ)
805918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_X86_64)
815918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_PDSP)
825918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_PDP10)
835918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_PDP11)
845918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_FX66)
855918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_ST9PLUS)
865918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_ST7)
875918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_68HC16)
885918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_68HC11)
895918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_68HC08)
905918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_68HC05)
915918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_SVX)
925918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_ST19)
935918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_VAX)
945918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_CRIS)
955918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_JAVELIN)
965918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_FIREPATH)
975918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_ZSP)
985918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_MMIX)
995918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_HUANY)
1005918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_PRISM)
1015918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_AVR)
1025918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_FR30)
1035918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_D10V)
1045918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_D30V)
1055918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_V850)
1065918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_M32R)
1075918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_MN10300)
1085918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_MN10200)
1095918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_PJ)
1105918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_OPENRISC)
1115918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_ARC_COMPACT)
1125918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_XTENSA)
1135918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_VIDEOCORE)
1145918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_TMM_GPP)
1155918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_NS32K)
1165918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_TPC)
1175918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_SNP1K)
1185918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_ST200)
1195918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_IP2K)
1205918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_MAX)
1215918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_CR)
1225918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_F2MC16)
1235918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_MSP430)
1245918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_BLACKFIN)
1255918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_SE_C33)
1265918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_SEP)
1275918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_ARCA)
1285918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_UNICORE)
1295918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_EXCESS)
1305918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_DXP)
1315918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_ALTERA_NIOS2)
1325918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_CRX)
1335918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_XGATE)
1345918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_C166)
1355918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_M16C)
1365918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_DSPIC30F)
1375918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_CE)
1385918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_M32C)
1395918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_TSK3000)
1405918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_RS08)
1415918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_SHARC)
1425918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_ECOG2)
1435918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_SCORE7)
1445918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_DSP24)
1455918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_VIDEOCORE3)
1465918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_LATTICEMICO32)
1475918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_SE_C17)
1485918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_TI_C6000)
1495918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_TI_C2000)
1505918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_TI_C5500)
1515918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_MMDSP_PLUS)
1525918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_CYPRESS_M8C)
1535918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_R32C)
1545918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_TRIMEDIA)
1555918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_HEXAGON)
1565918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_8051)
1575918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_STXP7X)
1585918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_NDS32)
1595918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_ECOG1)
1605918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_ECOG1X)
1615918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_MAXQ30)
1625918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_XIMO16)
1635918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_MANIK)
1645918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_CRAYNV2)
1655918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_RX)
1665918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_METAG)
1675918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_MCST_ELBRUS)
1685918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_ECOG16)
1695918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_CR16)
1705918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_ETPU)
1715918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_SLE9X)
1725918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_L10M)
1735918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_K10M)
1745918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_AARCH64)
1755918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_AVR32)
1765918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_STM8)
1775918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_TILE64)
1785918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_TILEPRO)
1795918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_MICROBLAZE)
1805918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_CUDA)
1815918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_TILEGX)
1825918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_CLOUDSHIELD)
1835918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_COREA_1ST)
1845918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_COREA_2ND)
1855918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_ARC_COMPACT2)
1865918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_OPEN8)
1875918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_RL78)
1885918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_VIDEOCORE5)
1895918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_78KOR)
1905918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_56800EX)
1915918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(EM_MBLAZE)
1925918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva#undef ECase
1935918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva}
1945918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva
1955918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silvavoid ScalarEnumerationTraits<ELFYAML::ELF_ELFCLASS>::enumeration(
1965918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva    IO &IO, ELFYAML::ELF_ELFCLASS &Value) {
1975918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva#define ECase(X) IO.enumCase(Value, #X, ELF::X);
1985918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  // Since the semantics of ELFCLASSNONE is "invalid", just don't accept it
1995918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  // here.
2005918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(ELFCLASS32)
2015918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(ELFCLASS64)
2025918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva#undef ECase
2035918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva}
2045918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva
2055918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silvavoid ScalarEnumerationTraits<ELFYAML::ELF_ELFDATA>::enumeration(
2065918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva    IO &IO, ELFYAML::ELF_ELFDATA &Value) {
2075918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva#define ECase(X) IO.enumCase(Value, #X, ELF::X);
2085918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  // Since the semantics of ELFDATANONE is "invalid", just don't accept it
2095918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  // here.
2105918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(ELFDATA2LSB)
2115918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva  ECase(ELFDATA2MSB)
2125918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva#undef ECase
2135918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva}
2145918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva
215274264ce2ba93d26702f7ebfe6aea121df44113fSean Silvavoid ScalarEnumerationTraits<ELFYAML::ELF_SHT>::enumeration(
216274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva    IO &IO, ELFYAML::ELF_SHT &Value) {
217274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva#define ECase(X) IO.enumCase(Value, #X, ELF::X);
218274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva  ECase(SHT_NULL)
219274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva  ECase(SHT_PROGBITS)
220274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva  ECase(SHT_SYMTAB)
221274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva  ECase(SHT_STRTAB)
222274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva  ECase(SHT_RELA)
223274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva  ECase(SHT_HASH)
224274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva  ECase(SHT_DYNAMIC)
225274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva  ECase(SHT_NOTE)
226274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva  ECase(SHT_NOBITS)
227274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva  ECase(SHT_REL)
228274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva  ECase(SHT_SHLIB)
229274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva  ECase(SHT_DYNSYM)
230274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva  ECase(SHT_INIT_ARRAY)
231274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva  ECase(SHT_FINI_ARRAY)
232274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva  ECase(SHT_PREINIT_ARRAY)
233274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva  ECase(SHT_GROUP)
234274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva  ECase(SHT_SYMTAB_SHNDX)
235274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva#undef ECase
236274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva}
237274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva
238274264ce2ba93d26702f7ebfe6aea121df44113fSean Silvavoid ScalarBitSetTraits<ELFYAML::ELF_SHF>::bitset(IO &IO,
239274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva                                                  ELFYAML::ELF_SHF &Value) {
240274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva#define BCase(X) IO.bitSetCase(Value, #X, ELF::X);
241274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva  BCase(SHF_WRITE)
242274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva  BCase(SHF_ALLOC)
243274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva  BCase(SHF_EXECINSTR)
244274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva  BCase(SHF_MERGE)
245274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva  BCase(SHF_STRINGS)
246274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva  BCase(SHF_INFO_LINK)
247274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva  BCase(SHF_LINK_ORDER)
248274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva  BCase(SHF_OS_NONCONFORMING)
249274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva  BCase(SHF_GROUP)
250274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva  BCase(SHF_TLS)
251274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva#undef BCase
252274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva}
253274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva
2542fd163fcd19358703d0898c1e7924c536f57baa7Sean Silvavoid MappingTraits<ELFYAML::FileHeader>::mapping(IO &IO,
2552fd163fcd19358703d0898c1e7924c536f57baa7Sean Silva                                                 ELFYAML::FileHeader &FileHdr) {
256457c8ebfd070eb7ee840ec97142f975974cfc834Sean Silva  IO.mapRequired("Class", FileHdr.Class);
257457c8ebfd070eb7ee840ec97142f975974cfc834Sean Silva  IO.mapRequired("Data", FileHdr.Data);
258457c8ebfd070eb7ee840ec97142f975974cfc834Sean Silva  IO.mapRequired("Type", FileHdr.Type);
259457c8ebfd070eb7ee840ec97142f975974cfc834Sean Silva  IO.mapRequired("Machine", FileHdr.Machine);
260457c8ebfd070eb7ee840ec97142f975974cfc834Sean Silva  IO.mapOptional("Entry", FileHdr.Entry, Hex64(0));
2615918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva}
2625918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva
263274264ce2ba93d26702f7ebfe6aea121df44113fSean Silvavoid MappingTraits<ELFYAML::Section>::mapping(IO &IO,
264274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva                                              ELFYAML::Section &Section) {
265274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva  IO.mapOptional("Name", Section.Name, StringRef());
266274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva  IO.mapRequired("Type", Section.Type);
267274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva  IO.mapOptional("Flags", Section.Flags, ELFYAML::ELF_SHF(0));
268274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva}
269274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva
2705918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silvavoid MappingTraits<ELFYAML::Object>::mapping(IO &IO, ELFYAML::Object &Object) {
271457c8ebfd070eb7ee840ec97142f975974cfc834Sean Silva  IO.mapRequired("FileHeader", Object.Header);
272274264ce2ba93d26702f7ebfe6aea121df44113fSean Silva  IO.mapOptional("Sections", Object.Sections);
2735918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva}
2745918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva
2755918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva} // end namespace yaml
2765918b7a03d4d6a52e18f7c102250c9cfd6ae52ddSean Silva} // end namespace llvm
277