X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FObject%2FELFYAML.cpp;h=6340841e5ee67f8f4bae7148522a10e7a663338a;hb=184c0f8b2f6dfcca8137b019190fef52a3ff10e2;hp=4c52f9c0be076b497d31959add867c2d5169ac44;hpb=ce538c783448d6b8d848212286b5a4e500bc9956;p=oota-llvm.git diff --git a/lib/Object/ELFYAML.cpp b/lib/Object/ELFYAML.cpp index 4c52f9c0be0..6340841e5ee 100644 --- a/lib/Object/ELFYAML.cpp +++ b/lib/Object/ELFYAML.cpp @@ -298,6 +298,8 @@ void ScalarBitSetTraits::bitset(IO &IO, void ScalarEnumerationTraits::enumeration( IO &IO, ELFYAML::ELF_SHT &Value) { + const auto *Object = static_cast(IO.getContext()); + assert(Object && "The IO context is not initialized"); #define ECase(X) IO.enumCase(Value, #X, ELF::X); ECase(SHT_NULL) ECase(SHT_PROGBITS) @@ -325,15 +327,29 @@ void ScalarEnumerationTraits::enumeration( ECase(SHT_GNU_versym) ECase(SHT_HIOS) ECase(SHT_LOPROC) - ECase(SHT_ARM_EXIDX) - ECase(SHT_ARM_PREEMPTMAP) - ECase(SHT_ARM_ATTRIBUTES) - ECase(SHT_ARM_DEBUGOVERLAY) - ECase(SHT_ARM_OVERLAYSECTION) - ECase(SHT_HEX_ORDERED) - ECase(SHT_X86_64_UNWIND) - ECase(SHT_MIPS_REGINFO) - ECase(SHT_MIPS_OPTIONS) + switch (Object->Header.Machine) { + case ELF::EM_ARM: + ECase(SHT_ARM_EXIDX) + ECase(SHT_ARM_PREEMPTMAP) + ECase(SHT_ARM_ATTRIBUTES) + ECase(SHT_ARM_DEBUGOVERLAY) + ECase(SHT_ARM_OVERLAYSECTION) + break; + case ELF::EM_HEXAGON: + ECase(SHT_HEX_ORDERED) + break; + case ELF::EM_X86_64: + ECase(SHT_X86_64_UNWIND) + break; + case ELF::EM_MIPS: + ECase(SHT_MIPS_REGINFO) + ECase(SHT_MIPS_OPTIONS) + ECase(SHT_MIPS_ABIFLAGS) + break; + default: + // Nothing to do. + break; + } #undef ECase } @@ -368,6 +384,16 @@ void ScalarEnumerationTraits::enumeration( #undef ECase } +void ScalarEnumerationTraits::enumeration( + IO &IO, ELFYAML::ELF_STV &Value) { +#define ECase(X) IO.enumCase(Value, #X, ELF::X); + ECase(STV_DEFAULT) + ECase(STV_INTERNAL) + ECase(STV_HIDDEN) + ECase(STV_PROTECTED) +#undef ECase +} + void ScalarEnumerationTraits::enumeration( IO &IO, ELFYAML::ELF_REL &Value) { const auto *Object = static_cast(IO.getContext()); @@ -649,6 +675,7 @@ void MappingTraits::mapping(IO &IO, ELFYAML::Symbol &Symbol) { IO.mapOptional("Section", Symbol.Section, StringRef()); IO.mapOptional("Value", Symbol.Value, Hex64(0)); IO.mapOptional("Size", Symbol.Size, Hex64(0)); + IO.mapOptional("Visibility", Symbol.Visibility, ELFYAML::ELF_STV(0)); } void MappingTraits::mapping(