From: Fangrui Song Date: Fri, 6 Sep 2019 00:53:28 +0000 (+0000) Subject: [llvm-readobj][yaml2obj] Support SHT_LLVM_SYMPART, SHT_LLVM_PART_EHDR and SHT_LLVM_PA... X-Git-Tag: llvmorg-11-init~9880 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9d2504b6d805c08f333143e27b2f09a9e839554a;p=platform%2Fupstream%2Fllvm.git [llvm-readobj][yaml2obj] Support SHT_LLVM_SYMPART, SHT_LLVM_PART_EHDR and SHT_LLVM_PART_PHDR See http://lists.llvm.org/pipermail/llvm-dev/2019-February/130583.html and D60242 for the lld partition feature. This patch: * Teaches yaml2obj to parse the 3 section types. * Teaches llvm-readobj/llvm-readelf to dump the 3 section types. There is no test for SHT_LLVM_DEPENDENT_LIBRARIES in llvm-readobj. Add it as well. Reviewed By: thakis Differential Revision: https://reviews.llvm.org/D67228 llvm-svn: 371157 --- diff --git a/llvm/lib/Object/ELF.cpp b/llvm/lib/Object/ELF.cpp index 8660b1a..d491288 100644 --- a/llvm/lib/Object/ELF.cpp +++ b/llvm/lib/Object/ELF.cpp @@ -255,6 +255,8 @@ StringRef llvm::object::getELFSectionTypeName(uint32_t Machine, unsigned Type) { STRINGIFY_ENUM_CASE(ELF, SHT_LLVM_ADDRSIG); STRINGIFY_ENUM_CASE(ELF, SHT_LLVM_DEPENDENT_LIBRARIES); STRINGIFY_ENUM_CASE(ELF, SHT_LLVM_SYMPART); + STRINGIFY_ENUM_CASE(ELF, SHT_LLVM_PART_EHDR); + STRINGIFY_ENUM_CASE(ELF, SHT_LLVM_PART_PHDR); STRINGIFY_ENUM_CASE(ELF, SHT_GNU_ATTRIBUTES); STRINGIFY_ENUM_CASE(ELF, SHT_GNU_HASH); STRINGIFY_ENUM_CASE(ELF, SHT_GNU_verdef); diff --git a/llvm/lib/ObjectYAML/ELFYAML.cpp b/llvm/lib/ObjectYAML/ELFYAML.cpp index 30d4c05..9214a0d 100644 --- a/llvm/lib/ObjectYAML/ELFYAML.cpp +++ b/llvm/lib/ObjectYAML/ELFYAML.cpp @@ -463,6 +463,9 @@ void ScalarEnumerationTraits::enumeration( ECase(SHT_LLVM_CALL_GRAPH_PROFILE); ECase(SHT_LLVM_ADDRSIG); ECase(SHT_LLVM_DEPENDENT_LIBRARIES); + ECase(SHT_LLVM_SYMPART); + ECase(SHT_LLVM_PART_EHDR); + ECase(SHT_LLVM_PART_PHDR); ECase(SHT_GNU_ATTRIBUTES); ECase(SHT_GNU_HASH); ECase(SHT_GNU_verdef); diff --git a/llvm/test/tools/llvm-readobj/elf-section-types.test b/llvm/test/tools/llvm-readobj/elf-section-types.test index 9b3e350..2c4e921 100644 --- a/llvm/test/tools/llvm-readobj/elf-section-types.test +++ b/llvm/test/tools/llvm-readobj/elf-section-types.test @@ -51,6 +51,14 @@ # LLVM: Type: SHT_LLVM_CALL_GRAPH_PROFILE # LLVM: Name: llvm_addrsig # LLVM: Type: SHT_LLVM_ADDRSIG +# LLVM: Name: .deplibs +# LLVM: Type: SHT_LLVM_DEPENDENT_LIBRARIES +# LLVM: Name: .llvm_sympart.f +# LLVM: Type: SHT_LLVM_SYMPART +# LLVM: Name: part1 +# LLVM: Type: SHT_LLVM_PART_EHDR +# LLVM: Name: .phdrs +# LLVM: Type: SHT_LLVM_PART_PHDR # LLVM: Name: gnu_attributes # LLVM: Type: SHT_GNU_ATTRIBUTES # LLVM: Name: gnu_hash @@ -107,6 +115,10 @@ # GNU-NEXT: linker_options LLVM_LINKER_OPTIONS # GNU-NEXT: llvm_call_graph_profile LLVM_CALL_GRAPH_PROFILE # GNU-NEXT: llvm_addrsig LLVM_ADDRSIG +# GNU-NEXT: .deplibs LLVM_DEPENDENT_LIBRARIES +# GNU-NEXT: .llvm_sympart.f LLVM_SYMPART +# GNU-NEXT: part1 LLVM_PART_EHDR +# GNU-NEXT: .phdrs LLVM_PART_PHDR # GNU-NEXT: gnu_attributes ATTRIBUTES # GNU-NEXT: gnu_hash GNU_HASH # GNU-NEXT: gnu_verdef VERDEF @@ -183,6 +195,14 @@ Sections: Type: SHT_LLVM_CALL_GRAPH_PROFILE - Name: llvm_addrsig Type: SHT_LLVM_ADDRSIG + - Name: .deplibs + Type: SHT_LLVM_DEPENDENT_LIBRARIES + - Name: .llvm_sympart.f + Type: SHT_LLVM_SYMPART + - Name: part1 + Type: SHT_LLVM_PART_EHDR + - Name: .phdrs + Type: SHT_LLVM_PART_PHDR - Name: gnu_attributes Type: SHT_GNU_ATTRIBUTES - Name: gnu_hash diff --git a/llvm/tools/llvm-readobj/ELFDumper.cpp b/llvm/tools/llvm-readobj/ELFDumper.cpp index bc17360..eb3239e 100644 --- a/llvm/tools/llvm-readobj/ELFDumper.cpp +++ b/llvm/tools/llvm-readobj/ELFDumper.cpp @@ -3111,6 +3111,12 @@ static std::string getSectionTypeString(unsigned Arch, unsigned Type) { return "LLVM_ADDRSIG"; case SHT_LLVM_DEPENDENT_LIBRARIES: return "LLVM_DEPENDENT_LIBRARIES"; + case SHT_LLVM_SYMPART: + return "LLVM_SYMPART"; + case SHT_LLVM_PART_EHDR: + return "LLVM_PART_EHDR"; + case SHT_LLVM_PART_PHDR: + return "LLVM_PART_PHDR"; // FIXME: Parse processor specific GNU attributes case SHT_GNU_ATTRIBUTES: return "ATTRIBUTES";