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 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()); } }