[llvm] r337462 - [llvm-readobj] - Do not report invalid amount of sections.
George Rimar via llvm-commits
llvm-commits at lists.llvm.org
Thu Jul 19 07:52:57 PDT 2018
Author: grimar
Date: Thu Jul 19 07:52:57 2018
New Revision: 337462
URL: http://llvm.org/viewvc/llvm-project?rev=337462&view=rev
Log:
[llvm-readobj] - Do not report invalid amount of sections.
When output style is GNU and amount of sections is >= SHN_LORESERVE,
llvm-readobj reports zero number of sections instead of actual value.
The patch fixes that.
Differential revision: https://reviews.llvm.org/D49544
Modified:
llvm/trunk/test/tools/llvm-readobj/many-sections.s
llvm/trunk/tools/llvm-readobj/ELFDumper.cpp
Modified: llvm/trunk/test/tools/llvm-readobj/many-sections.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-readobj/many-sections.s?rev=337462&r1=337461&r2=337462&view=diff
==============================================================================
--- llvm/trunk/test/tools/llvm-readobj/many-sections.s (original)
+++ llvm/trunk/test/tools/llvm-readobj/many-sections.s Thu Jul 19 07:52:57 2018
@@ -11,10 +11,11 @@
## space, but its e_shnum, e_shstrndx, sh_size and sh_link fields are set
## according to the above description, so that we can test the dumper.
-# RUN: llvm-readobj -file-headers -elf-output-style GNU \
+# RUN: llvm-readobj -file-headers -sections -elf-output-style GNU \
# RUN: %p/Inputs/many-sections.elf-x86_64 | FileCheck %s --check-prefix=GNU1
# GNU1: Number of section headers: 0 (5)
# GNU1: Section header string table index: 65535 (3)
+# GNU1: There are 5 section headers, starting at offset 0xb8
# RUN: llvm-readobj -file-headers -elf-output-style LLVM \
# RUN: %p/Inputs/many-sections.elf-x86_64 | FileCheck %s --check-prefix=LLVM1
Modified: llvm/trunk/tools/llvm-readobj/ELFDumper.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-readobj/ELFDumper.cpp?rev=337462&r1=337461&r2=337462&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-readobj/ELFDumper.cpp (original)
+++ llvm/trunk/tools/llvm-readobj/ELFDumper.cpp Thu Jul 19 07:52:57 2018
@@ -2904,7 +2904,9 @@ template <class ELFT> void GNUStyle<ELFT
Bias = 8;
Width = 8;
}
- OS << "There are " << to_string(Obj->getHeader()->e_shnum)
+
+ ArrayRef<Elf_Shdr> Sections = unwrapOrError(Obj->sections());
+ OS << "There are " << to_string(Sections.size())
<< " section headers, starting at offset "
<< "0x" << to_hexString(Obj->getHeader()->e_shoff, false) << ":\n\n";
OS << "Section Headers:\n";
@@ -2923,7 +2925,7 @@ template <class ELFT> void GNUStyle<ELFT
printField(f);
OS << "\n";
- for (const Elf_Shdr &Sec : unwrapOrError(Obj->sections())) {
+ for (const Elf_Shdr &Sec : Sections) {
Number = to_string(SectionIndex);
Fields[0].Str = Number;
Fields[1].Str = unwrapOrError(Obj->getSectionName(&Sec));
More information about the llvm-commits
mailing list