mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-09-24 23:28:41 +00:00
[yaml2obj][ELF] Make symbol table top-level key.
Although in reality the symbol table in ELF resides in a section, the standard requires that there be no more than one SHT_SYMTAB. To enforce this constraint, it is cleaner to group all the symbols under a top-level `Symbols` key on the object file. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184627 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -244,7 +244,8 @@ void ScalarEnumerationTraits<ELFYAML::ELF_SHT>::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)
|
||||
@@ -326,17 +327,12 @@ void MappingTraits<ELFYAML::Section>::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<ELFYAML::Object>::mapping(IO &IO, ELFYAML::Object &Object) {
|
||||
IO.mapRequired("FileHeader", Object.Header);
|
||||
IO.mapOptional("Sections", Object.Sections);
|
||||
IO.mapOptional("Symbols", Object.Symbols);
|
||||
}
|
||||
|
||||
} // end namespace yaml
|
||||
|
Reference in New Issue
Block a user