[llvm] r371157 - [llvm-readobj][yaml2obj] Support SHT_LLVM_SYMPART, SHT_LLVM_PART_EHDR and SHT_LLVM_PART_PHDR
Fangrui Song via llvm-commits
llvm-commits at lists.llvm.org
Thu Sep 5 17:53:28 PDT 2019
Author: maskray
Date: Thu Sep 5 17:53:28 2019
New Revision: 371157
URL: http://llvm.org/viewvc/llvm-project?rev=371157&view=rev
Log:
[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
Modified:
llvm/trunk/lib/Object/ELF.cpp
llvm/trunk/lib/ObjectYAML/ELFYAML.cpp
llvm/trunk/test/tools/llvm-readobj/elf-section-types.test
llvm/trunk/tools/llvm-readobj/ELFDumper.cpp
Modified: llvm/trunk/lib/Object/ELF.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Object/ELF.cpp?rev=371157&r1=371156&r2=371157&view=diff
==============================================================================
--- llvm/trunk/lib/Object/ELF.cpp (original)
+++ llvm/trunk/lib/Object/ELF.cpp Thu Sep 5 17:53:28 2019
@@ -255,6 +255,8 @@ StringRef llvm::object::getELFSectionTyp
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);
Modified: llvm/trunk/lib/ObjectYAML/ELFYAML.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ObjectYAML/ELFYAML.cpp?rev=371157&r1=371156&r2=371157&view=diff
==============================================================================
--- llvm/trunk/lib/ObjectYAML/ELFYAML.cpp (original)
+++ llvm/trunk/lib/ObjectYAML/ELFYAML.cpp Thu Sep 5 17:53:28 2019
@@ -463,6 +463,9 @@ void ScalarEnumerationTraits<ELFYAML::EL
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);
Modified: llvm/trunk/test/tools/llvm-readobj/elf-section-types.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-readobj/elf-section-types.test?rev=371157&r1=371156&r2=371157&view=diff
==============================================================================
--- llvm/trunk/test/tools/llvm-readobj/elf-section-types.test (original)
+++ llvm/trunk/test/tools/llvm-readobj/elf-section-types.test Thu Sep 5 17:53:28 2019
@@ -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
Modified: llvm/trunk/tools/llvm-readobj/ELFDumper.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-readobj/ELFDumper.cpp?rev=371157&r1=371156&r2=371157&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-readobj/ELFDumper.cpp (original)
+++ llvm/trunk/tools/llvm-readobj/ELFDumper.cpp Thu Sep 5 17:53:28 2019
@@ -3111,6 +3111,12 @@ static std::string getSectionTypeString(
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";
More information about the llvm-commits
mailing list