diff options
author | Fangrui Song <maskray@google.com> | 2019-06-18 14:01:03 +0000 |
---|---|---|
committer | Fangrui Song <maskray@google.com> | 2019-06-18 14:01:03 +0000 |
commit | 677423997d6a31e9037e41dca990508d561ad42d (patch) | |
tree | 937142b384747082e475d4785998f0da7affb497 /llvm/tools/llvm-readobj/llvm-readobj.cpp | |
parent | d204987ada42108e1d86c0418c2993998377f623 (diff) | |
download | bcm5719-llvm-677423997d6a31e9037e41dca990508d561ad42d.tar.gz bcm5719-llvm-677423997d6a31e9037e41dca990508d561ad42d.zip |
[llvm-readobj] Allow --hex-dump/--string-dump to dump multiple sections
1) `-x foo` currently dumps one `foo`. This change makes it dump all `foo`.
2) `-x foo -x foo` currently dumps `foo` twice. This change makes it dump `foo` once.
In addition, if foo has section index 9, `-x foo -x 9` dumps `foo` once.
3) Give a warning instead of an error if `foo` does not exist.
The new behaviors match GNU readelf.
Also, print a new line as a separator between two section dumps.
GNU readelf uses two lines, but one seems good enough.
Reviewed By: grimar, jhenderson
Differential Revision: https://reviews.llvm.org/D63475
llvm-svn: 363683
Diffstat (limited to 'llvm/tools/llvm-readobj/llvm-readobj.cpp')
-rw-r--r-- | llvm/tools/llvm-readobj/llvm-readobj.cpp | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/llvm/tools/llvm-readobj/llvm-readobj.cpp b/llvm/tools/llvm-readobj/llvm-readobj.cpp index e44cbae6f85..c040541f82a 100644 --- a/llvm/tools/llvm-readobj/llvm-readobj.cpp +++ b/llvm/tools/llvm-readobj/llvm-readobj.cpp @@ -495,13 +495,9 @@ static void dumpObject(const ObjectFile *Obj, ScopedPrinter &Writer) { if (opts::ProgramHeaders || opts::SectionMapping == cl::BOU_TRUE) Dumper->printProgramHeaders(opts::ProgramHeaders, opts::SectionMapping); if (!opts::StringDump.empty()) - llvm::for_each(opts::StringDump, [&Dumper, Obj](StringRef SectionName) { - Dumper->printSectionAsString(Obj, SectionName); - }); + Dumper->printSectionsAsString(Obj, opts::StringDump); if (!opts::HexDump.empty()) - llvm::for_each(opts::HexDump, [&Dumper, Obj](StringRef SectionName) { - Dumper->printSectionAsHex(Obj, SectionName); - }); + Dumper->printSectionsAsHex(Obj, opts::HexDump); if (opts::HashTable) Dumper->printHashTable(); if (opts::GnuHashTable) |