From d4dcb55c7050fd908af2378fa551078d859d994f Mon Sep 17 00:00:00 2001 From: Fangrui Song Date: Tue, 29 Jun 2021 11:56:26 -0700 Subject: [llvm-readobj] Make -s and -t match llvm-readelf llvm-readobj is an internal testing tool for binary formats. Its output and command line options do not need to be stable. It isn't supposed to be part of a build process. llvm-readelf was created as a user-facing utility and its interface intends to be compatible with GNU readelf (unless there are good reasons not to). The two tools have mostly compatible options. -s and -t are noticeable exceptions due to history. I think the cost of keeping the inconsistency overweighs the little history-compatible benefit and hinders transition from cl::opt to OptTable, so let's change it. Reviewed By: jhenderson Differential Revision: https://reviews.llvm.org/D105055 --- llvm/tools/llvm-readobj/llvm-readobj.cpp | 27 +++++++-------------------- 1 file changed, 7 insertions(+), 20 deletions(-) (limited to 'llvm/tools/llvm-readobj/llvm-readobj.cpp') diff --git a/llvm/tools/llvm-readobj/llvm-readobj.cpp b/llvm/tools/llvm-readobj/llvm-readobj.cpp index 86f9a0a..8d07688 100644 --- a/llvm/tools/llvm-readobj/llvm-readobj.cpp +++ b/llvm/tools/llvm-readobj/llvm-readobj.cpp @@ -142,6 +142,10 @@ namespace opts { // Also -t in llvm-readelf mode. cl::opt SectionDetails("section-details", cl::desc("Display the section details")); + static cl::alias SectionDetailsShort("t", + cl::desc("Alias for --section-details"), + cl::aliasopt(SectionDetails), + cl::NotHidden); // --symbols // Also -s in llvm-readelf mode, or -t in llvm-readobj mode. @@ -151,6 +155,9 @@ namespace opts { "symbol table when using GNU output style for ELF")); cl::alias SymbolsGNU("syms", cl::desc("Alias for --symbols"), cl::aliasopt(Symbols)); + static cl::alias SymbolsShort("s", cl::desc("Alias for --symbols"), + cl::aliasopt(Symbols), cl::NotHidden, + cl::Grouping); // --dyn-symbols, --dyn-syms // Also --dt in llvm-readobj mode. @@ -694,16 +701,6 @@ static void dumpInput(StringRef File, ScopedPrinter &Writer) { /// Registers aliases that should only be allowed by readobj. static void registerReadobjAliases() { - // -s has meant --sections for a very long time in llvm-readobj despite - // meaning --symbols in readelf. - static cl::alias SectionsShort("s", cl::desc("Alias for --section-headers"), - cl::aliasopt(opts::SectionHeaders), - cl::NotHidden); - - // llvm-readelf reserves it for --section-details. - static cl::alias SymbolsShort("t", cl::desc("Alias for --symbols"), - cl::aliasopt(opts::Symbols), cl::NotHidden); - // The following two-letter aliases are only provided for readobj, as readelf // allows single-letter args to be grouped together. static cl::alias SectionRelocationsShort( @@ -721,16 +718,6 @@ static void registerReadobjAliases() { /// Registers aliases that should only be allowed by readelf. static void registerReadelfAliases() { - // -s is here because for readobj it means --sections. - static cl::alias SymbolsShort("s", cl::desc("Alias for --symbols"), - 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(); -- cgit v1.1