[llvm] r327341 - [llvm-readobj] Extend the output of -elf-section-groups
Alexander Shaposhnikov via llvm-commits
llvm-commits at lists.llvm.org
Mon Mar 12 15:40:09 PDT 2018
Author: alexshap
Date: Mon Mar 12 15:40:09 2018
New Revision: 327341
URL: http://llvm.org/viewvc/llvm-project?rev=327341&view=rev
Log:
[llvm-readobj] Extend the output of -elf-section-groups
This diff extends the output of -elf-section-groups
(llvm style, gnu style is unchanged since it's meant to be
compatible with binutils readelf) with sh_link and sh_info.
This change will enable us to use llvm-readobj -elf-section-groups
for testing llvm-objcopy's support for .group sections.
Test plan: make check-all
Differential revision: https://reviews.llvm.org/D44280
Modified:
llvm/trunk/test/tools/llvm-readobj/broken-group.test
llvm/trunk/test/tools/llvm-readobj/elf-groups.test
llvm/trunk/tools/llvm-readobj/ELFDumper.cpp
Modified: llvm/trunk/test/tools/llvm-readobj/broken-group.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-readobj/broken-group.test?rev=327341&r1=327340&r2=327341&view=diff
==============================================================================
--- llvm/trunk/test/tools/llvm-readobj/broken-group.test (original)
+++ llvm/trunk/test/tools/llvm-readobj/broken-group.test Mon Mar 12 15:40:09 2018
@@ -20,6 +20,8 @@
# LLVM-STDOUT-NEXT: Group {
# LLVM-STDOUT-NEXT: Name: .group
# LLVM-STDOUT-NEXT: Index: 2
+# LLVM-STDOUT-NEXT: Link: 5
+# LLVM-STDOUT-NEXT: Info: 1
# LLVM-STDOUT-NEXT: Type: COMDAT
# LLVM-STDOUT-NEXT: Signature: bar
# LLVM-STDOUT-NEXT: Section(s) in group [
@@ -29,6 +31,8 @@
# LLVM-STDOUT-NEXT: Group {
# LLVM-STDOUT-NEXT: Name: .group1
# LLVM-STDOUT-NEXT: Index: 4
+# LLVM-STDOUT-NEXT: Link: 5
+# LLVM-STDOUT-NEXT: Info: 2
# LLVM-STDOUT-NEXT: Type: COMDAT
# LLVM-STDOUT-NEXT: Signature: zed
# LLVM-STDOUT-NEXT: Section(s) in group [
Modified: llvm/trunk/test/tools/llvm-readobj/elf-groups.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-readobj/elf-groups.test?rev=327341&r1=327340&r2=327341&view=diff
==============================================================================
--- llvm/trunk/test/tools/llvm-readobj/elf-groups.test (original)
+++ llvm/trunk/test/tools/llvm-readobj/elf-groups.test Mon Mar 12 15:40:09 2018
@@ -21,6 +21,8 @@ CHECK: Groups {
CHECK-NEXT: Group {
CHECK-NEXT: Name: .group (92)
CHECK-NEXT: Index: 1
+CHECK-NEXT: Link: 23
+CHECK-NEXT: Info: 17
CHECK-NEXT: Type: COMDAT (0x1)
CHECK-NEXT: Signature: _Z3fooIcEvT_
CHECK-NEXT: Section(s) in group [
@@ -31,6 +33,8 @@ CHECK-NEXT: }
CHECK-NEXT: Group {
CHECK-NEXT: Name: .group (92)
CHECK-NEXT: Index: 2
+CHECK-NEXT: Link: 23
+CHECK-NEXT: Info: 18
CHECK-NEXT: Type: COMDAT (0x1)
CHECK-NEXT: Signature: _Z3fooIiEvT_
CHECK-NEXT: Section(s) in group [
Modified: llvm/trunk/tools/llvm-readobj/ELFDumper.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-readobj/ELFDumper.cpp?rev=327341&r1=327340&r2=327341&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-readobj/ELFDumper.cpp (original)
+++ llvm/trunk/tools/llvm-readobj/ELFDumper.cpp Mon Mar 12 15:40:09 2018
@@ -2482,6 +2482,8 @@ struct GroupSection {
StringRef Signature;
uint64_t ShName;
uint64_t Index;
+ uint32_t Link;
+ uint32_t Info;
uint32_t Type;
std::vector<GroupMember> Members;
};
@@ -2508,7 +2510,14 @@ std::vector<GroupSection> getGroups(cons
StringRef Name = unwrapOrError(Obj->getSectionName(&Sec));
StringRef Signature = StrTable.data() + Sym->st_name;
- Ret.push_back({Name, Signature, Sec.sh_name, I - 1, Data[0], {}});
+ Ret.push_back({Name,
+ Signature,
+ Sec.sh_name,
+ I - 1,
+ Sec.sh_link,
+ Sec.sh_info,
+ Data[0],
+ {}});
std::vector<GroupMember> &GM = Ret.back().Members;
for (uint32_t Ndx : Data.slice(1)) {
@@ -3780,6 +3789,8 @@ void LLVMStyle<ELFT>::printGroupSections
DictScope D(W, "Group");
W.printNumber("Name", G.Name, G.ShName);
W.printNumber("Index", G.Index);
+ W.printNumber("Link", G.Link);
+ W.printNumber("Info", G.Info);
W.printHex("Type", getGroupType(G.Type), G.Type);
W.startLine() << "Signature: " << G.Signature << "\n";
More information about the llvm-commits
mailing list