X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FObject%2FELFYAML.cpp;h=2f35cf9b103647d7275e17cd0c742baf09250503;hb=3767c7446edea95277509477a9bb3048ef2e0b95;hp=7fa775633ab4e180053626b7903950aebd00caf6;hpb=e38f640b22979994b42fb2f2aafc44cc39c20e8e;p=oota-llvm.git diff --git a/lib/Object/ELFYAML.cpp b/lib/Object/ELFYAML.cpp index 7fa775633ab..2f35cf9b103 100644 --- a/lib/Object/ELFYAML.cpp +++ b/lib/Object/ELFYAML.cpp @@ -176,7 +176,6 @@ ScalarEnumerationTraits::enumeration(IO &IO, ECase(EM_STM8) ECase(EM_TILE64) ECase(EM_TILEPRO) - ECase(EM_MICROBLAZE) ECase(EM_CUDA) ECase(EM_TILEGX) ECase(EM_CLOUDSHIELD) @@ -188,7 +187,6 @@ ScalarEnumerationTraits::enumeration(IO &IO, ECase(EM_VIDEOCORE5) ECase(EM_78KOR) ECase(EM_56800EX) - ECase(EM_MBLAZE) #undef ECase } @@ -244,7 +242,8 @@ void ScalarEnumerationTraits::enumeration( #define ECase(X) IO.enumCase(Value, #X, ELF::X); ECase(SHT_NULL) ECase(SHT_PROGBITS) - ECase(SHT_SYMTAB) + // No SHT_SYMTAB. Use the top-level `Symbols` key instead. + // FIXME: Issue a diagnostic with this information. ECase(SHT_STRTAB) ECase(SHT_RELA) ECase(SHT_HASH) @@ -267,6 +266,7 @@ void ScalarBitSetTraits::bitset(IO &IO, #define BCase(X) IO.bitSetCase(Value, #X, ELF::X); BCase(SHF_WRITE) BCase(SHF_ALLOC) + BCase(SHF_EXCLUDE) BCase(SHF_EXECINSTR) BCase(SHF_MERGE) BCase(SHF_STRINGS) @@ -278,15 +278,6 @@ void ScalarBitSetTraits::bitset(IO &IO, #undef BCase } -void ScalarEnumerationTraits::enumeration( - IO &IO, ELFYAML::ELF_STB &Value) { -#define ECase(X) IO.enumCase(Value, #X, ELF::X); - ECase(STB_LOCAL) - ECase(STB_GLOBAL) - ECase(STB_WEAK) -#undef ECase -} - void ScalarEnumerationTraits::enumeration( IO &IO, ELFYAML::ELF_STT &Value) { #define ECase(X) IO.enumCase(Value, #X, ELF::X); @@ -313,13 +304,19 @@ void MappingTraits::mapping(IO &IO, void MappingTraits::mapping(IO &IO, ELFYAML::Symbol &Symbol) { IO.mapOptional("Name", Symbol.Name, StringRef()); - IO.mapOptional("Binding", Symbol.Binding, ELFYAML::ELF_STB(0)); IO.mapOptional("Type", Symbol.Type, ELFYAML::ELF_STT(0)); IO.mapOptional("Section", Symbol.Section, StringRef()); IO.mapOptional("Value", Symbol.Value, Hex64(0)); IO.mapOptional("Size", Symbol.Size, Hex64(0)); } +void MappingTraits::mapping( + IO &IO, ELFYAML::LocalGlobalWeakSymbols &Symbols) { + IO.mapOptional("Local", Symbols.Local); + IO.mapOptional("Global", Symbols.Global); + IO.mapOptional("Weak", Symbols.Weak); +} + void MappingTraits::mapping(IO &IO, ELFYAML::Section &Section) { IO.mapOptional("Name", Section.Name, StringRef()); @@ -329,17 +326,12 @@ void MappingTraits::mapping(IO &IO, IO.mapOptional("Content", Section.Content); IO.mapOptional("Link", Section.Link); IO.mapOptional("AddressAlign", Section.AddressAlign, Hex64(0)); - // TODO: Error if `Type` is SHT_SYMTAB and this is not present, or if - // `Type` is *not* SHT_SYMTAB and this *is* present. (By SHT_SYMTAB I - // also mean SHT_DYNSYM, but for simplicity right now we just do - // SHT_SYMTAB). Want to be able to share the predicate with consumers of - // this structure. - IO.mapOptional("Symbols", Section.Symbols); } void MappingTraits::mapping(IO &IO, ELFYAML::Object &Object) { IO.mapRequired("FileHeader", Object.Header); IO.mapOptional("Sections", Object.Sections); + IO.mapOptional("Symbols", Object.Symbols); } } // end namespace yaml