Skip to content

Commit

Permalink
[llvm-readobj][yaml2obj] Support SHT_LLVM_SYMPART, SHT_LLVM_PART_EHDR…
Browse files Browse the repository at this point in the history
… 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
  • Loading branch information
MaskRay committed Sep 6, 2019
1 parent ee093ba commit 9d2504b
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 0 deletions.
2 changes: 2 additions & 0 deletions llvm/lib/Object/ELF.cpp
Expand Up @@ -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);
Expand Down
3 changes: 3 additions & 0 deletions llvm/lib/ObjectYAML/ELFYAML.cpp
Expand Up @@ -463,6 +463,9 @@ void ScalarEnumerationTraits<ELFYAML::ELF_SHT>::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);
Expand Down
20 changes: 20 additions & 0 deletions llvm/test/tools/llvm-readobj/elf-section-types.test
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
6 changes: 6 additions & 0 deletions llvm/tools/llvm-readobj/ELFDumper.cpp
Expand Up @@ -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";
Expand Down

0 comments on commit 9d2504b

Please sign in to comment.