diff options
author | George Rimar <grimar@accesssoftek.com> | 2018-07-19 14:52:57 +0000 |
---|---|---|
committer | George Rimar <grimar@accesssoftek.com> | 2018-07-19 14:52:57 +0000 |
commit | a2b553b4c9f48f0f2e2bb76d55d5a1407bc56eae (patch) | |
tree | bc33114c982764d4c8a30730ee4fe8c46a31da56 /llvm/tools/llvm-readobj/ELFDumper.cpp | |
parent | 28023dbed744a1154f3dbcd76beefb5ebd579237 (diff) | |
download | bcm5719-llvm-a2b553b4c9f48f0f2e2bb76d55d5a1407bc56eae.tar.gz bcm5719-llvm-a2b553b4c9f48f0f2e2bb76d55d5a1407bc56eae.zip |
[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
llvm-svn: 337462
Diffstat (limited to 'llvm/tools/llvm-readobj/ELFDumper.cpp')
-rw-r--r-- | llvm/tools/llvm-readobj/ELFDumper.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/llvm/tools/llvm-readobj/ELFDumper.cpp b/llvm/tools/llvm-readobj/ELFDumper.cpp index 951bc60108f..5da66c4a6d8 100644 --- a/llvm/tools/llvm-readobj/ELFDumper.cpp +++ b/llvm/tools/llvm-readobj/ELFDumper.cpp @@ -2904,7 +2904,9 @@ template <class ELFT> void GNUStyle<ELFT>::printSections(const ELFO *Obj) { 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>::printSections(const ELFO *Obj) { 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)); |