[PATCH] D49372: [llvm-objdump] - Stop reporting bogus section IDs.

George Rimar via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Jul 16 06:46:27 PDT 2018


grimar created this revision.
grimar added a reviewer: ruiu.

Imagine we have a file with few sections, and one of them is .foo
with index N != 0.

Problem is that when llvm-objdump is given a -section=.foo parameter
it lists .foo as a section at index 0. That makes impossible to write
test cases which needs to find the index of the particular section,
while ignoring dumping of others.

The patch fixes that.


https://reviews.llvm.org/D49372

Files:
  test/tools/llvm-objdump/X86/section-index.s
  tools/llvm-objdump/llvm-objdump.cpp


Index: tools/llvm-objdump/llvm-objdump.cpp
===================================================================
--- tools/llvm-objdump/llvm-objdump.cpp
+++ tools/llvm-objdump/llvm-objdump.cpp
@@ -1815,7 +1815,6 @@
 void llvm::PrintSectionHeaders(const ObjectFile *Obj) {
   outs() << "Sections:\n"
             "Idx Name          Size      Address          Type\n";
-  unsigned i = 0;
   for (const SectionRef &Section : ToolSectionFilter(*Obj)) {
     StringRef Name;
     error(Section.getName(Name));
@@ -1826,9 +1825,9 @@
     bool BSS = Section.isBSS();
     std::string Type = (std::string(Text ? "TEXT " : "") +
                         (Data ? "DATA " : "") + (BSS ? "BSS" : ""));
-    outs() << format("%3d %-13s %08" PRIx64 " %016" PRIx64 " %s\n", i,
-                     Name.str().c_str(), Size, Address, Type.c_str());
-    ++i;
+    outs() << format("%3d %-13s %08" PRIx64 " %016" PRIx64 " %s\n",
+                     Section.getIndex(), Name.str().c_str(), Size, Address,
+                     Type.c_str());
   }
 }
 
Index: test/tools/llvm-objdump/X86/section-index.s
===================================================================
--- test/tools/llvm-objdump/X86/section-index.s
+++ test/tools/llvm-objdump/X86/section-index.s
@@ -0,0 +1,22 @@
+# RUN: llvm-mc %s -filetype=obj -triple=x86_64-pc-linux -o %t
+
+# RUN: llvm-objdump -section-headers %t | FileCheck %s
+# CHECK:     Idx Name
+# CHECK:      3  .foo
+# CHECK-NEXT: 4  .bar
+# CHECK-NEXT: 5  .zed
+
+## Check we report the valid section index for .bar
+# RUN: llvm-objdump -section-headers -section=.bar %t \
+# RUN:   | FileCheck %s --check-prefix=BAR
+# BAR:      Idx Name
+# BAR-NEXT:  4  .bar
+
+.section .foo, "ax", %progbits
+nop
+
+.section .bar, "ax", %progbits
+nop
+
+.section .zed, "ax", %progbits
+nop


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D49372.155666.patch
Type: text/x-patch
Size: 1797 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180716/cad96cde/attachment.bin>


More information about the llvm-commits mailing list