diff options
author | Georgii Rymar <grimar@accesssoftek.com> | 2020-10-13 10:46:04 +0300 |
---|---|---|
committer | Georgii Rymar <grimar@accesssoftek.com> | 2020-10-27 13:29:39 +0300 |
commit | f855a553339aa78225a309a6f9b5fcae767de8da (patch) | |
tree | adb47b78982ddd58f0684449530c2f219113bcd6 /llvm/tools/llvm-readobj/llvm-readobj.cpp | |
parent | a3aea0193d8cb164742890c2b92ee797a1432420 (diff) | |
download | llvm-f855a553339aa78225a309a6f9b5fcae767de8da.zip llvm-f855a553339aa78225a309a6f9b5fcae767de8da.tar.gz llvm-f855a553339aa78225a309a6f9b5fcae767de8da.tar.bz2 |
[llvm-readelf] - Implement --section-details option.
--section-details/-t is a GNU readelf option that produce
an output that is an alternative to --sections.
Differential revision: https://reviews.llvm.org/D89304
Diffstat (limited to 'llvm/tools/llvm-readobj/llvm-readobj.cpp')
-rw-r--r-- | llvm/tools/llvm-readobj/llvm-readobj.cpp | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/llvm/tools/llvm-readobj/llvm-readobj.cpp b/llvm/tools/llvm-readobj/llvm-readobj.cpp index 1546ce79..a307735 100644 --- a/llvm/tools/llvm-readobj/llvm-readobj.cpp +++ b/llvm/tools/llvm-readobj/llvm-readobj.cpp @@ -137,6 +137,11 @@ namespace opts { cl::opt<bool> DynRelocs("dyn-relocations", cl::desc("Display the dynamic relocation entries in the file")); + // --section-details + // Also -t in llvm-readelf mode. + cl::opt<bool> SectionDetails("section-details", + cl::desc("Display the section details")); + // --symbols // Also -s in llvm-readelf mode, or -t in llvm-readobj mode. cl::opt<bool> @@ -480,8 +485,14 @@ static void dumpObject(const ObjectFile &Obj, ScopedPrinter &Writer, if (opts::FileHeaders) Dumper->printFileHeaders(); - if (opts::SectionHeaders) - Dumper->printSectionHeaders(); + + if (opts::SectionDetails || opts::SectionHeaders) { + if (opts::Output == opts::GNU && opts::SectionDetails) + Dumper->printSectionDetails(); + else + Dumper->printSectionHeaders(); + } + if (opts::HashSymbols) Dumper->printHashSymbols(); if (opts::ProgramHeaders || opts::SectionMapping == cl::BOU_TRUE) @@ -656,8 +667,7 @@ static void registerReadobjAliases() { cl::aliasopt(opts::SectionHeaders), cl::NotHidden); - // Only register -t in llvm-readobj, as readelf reserves it for - // --section-details (not implemented yet). + // llvm-readelf reserves it for --section-details. static cl::alias SymbolsShort("t", cl::desc("Alias for --symbols"), cl::aliasopt(opts::Symbols), cl::NotHidden); @@ -683,6 +693,11 @@ static void registerReadelfAliases() { cl::aliasopt(opts::Symbols), cl::NotHidden, cl::Grouping); + // -t is here because for readobj it is an alias for --symbols. + static cl::alias SectionDetailsShort( + "t", cl::desc("Alias for --section-details"), + cl::aliasopt(opts::SectionDetails), cl::NotHidden); + // Allow all single letter flags to be grouped together. for (auto &OptEntry : cl::getRegisteredOptions()) { StringRef ArgName = OptEntry.getKey(); |