diff --git a/llvm/docs/CommandGuide/llvm-readobj.rst b/llvm/docs/CommandGuide/llvm-readobj.rst --- a/llvm/docs/CommandGuide/llvm-readobj.rst +++ b/llvm/docs/CommandGuide/llvm-readobj.rst @@ -95,7 +95,7 @@ Display the relocation entries in the file. -.. option:: --sections, --section-headers, -s, -S +.. option:: --sections, --section-headers, -S Display all sections. @@ -123,7 +123,7 @@ Display the specified section(s) as a list of strings. ``section`` may be a section index or section name. -.. option:: --symbols, --syms, -t +.. option:: --symbols, --syms, -s Display the symbol table. diff --git a/llvm/docs/ReleaseNotes.rst b/llvm/docs/ReleaseNotes.rst --- a/llvm/docs/ReleaseNotes.rst +++ b/llvm/docs/ReleaseNotes.rst @@ -164,6 +164,10 @@ ``--x86-asm-syntax`` is a deprecated internal option which will be removed in LLVM 14.0.0. (`D101695 `_) +* The ``-s`` (``--syms``) and ``-t`` (``--section-details``) options of + ``llvm-readobj`` have been changed to match ``llvm-readelf``. + (`D105055 `_) + Changes to LLDB --------------------------------- diff --git a/llvm/test/tools/llvm-readobj/ELF/merged.test b/llvm/test/tools/llvm-readobj/ELF/merged.test --- a/llvm/test/tools/llvm-readobj/ELF/merged.test +++ b/llvm/test/tools/llvm-readobj/ELF/merged.test @@ -52,7 +52,7 @@ ## llvm-readobj does not support merged args, because it also supports some old ## flags (-st, -sd, etc.), and it would be confusing if only some merged args ## were supported. -# RUN: not llvm-readobj -aeWhSrnudlVgIs %t.o 2>&1 | FileCheck %s --check-prefix=UNKNOWN +# RUN: not llvm-readobj -aeWhSrnudlVgIS %t.o 2>&1 | FileCheck %s --check-prefix=UNKNOWN # CHECK-NOT: Unknown command line argument # UNKNOWN: for the --section-headers option: may only occur zero or one times! diff --git a/llvm/test/tools/llvm-readobj/ELF/sections.test b/llvm/test/tools/llvm-readobj/ELF/sections.test --- a/llvm/test/tools/llvm-readobj/ELF/sections.test +++ b/llvm/test/tools/llvm-readobj/ELF/sections.test @@ -10,16 +10,12 @@ # RUN: llvm-readobj --sections %t64 > %t64.llvm.sections # RUN: llvm-readobj -S %t64 > %t64.llvm.upper.s # RUN: cmp %t64.llvm.sections %t64.llvm.upper.s -# RUN: llvm-readobj -s %t64 > %t64.llvm.lower.s -# RUN: cmp %t64.llvm.sections %t64.llvm.lower.s # RUN: llvm-readobj --section-headers %t64 > %t64.llvm.section-headers # RUN: cmp %t64.llvm.sections %t64.llvm.section-headers # RUN: llvm-readobj --sections %t32 > %t32.llvm.sections # RUN: llvm-readobj -S %t32 > %t32.llvm.upper.s # RUN: cmp %t32.llvm.sections %t32.llvm.upper.s -# RUN: llvm-readobj -s %t32 > %t32.llvm.lower.s -# RUN: cmp %t32.llvm.sections %t32.llvm.lower.s # RUN: llvm-readobj --section-headers %t32 > %t32.llvm.section-headers # RUN: cmp %t32.llvm.sections %t32.llvm.section-headers diff --git a/llvm/test/tools/llvm-readobj/ELF/symbols.test b/llvm/test/tools/llvm-readobj/ELF/symbols.test --- a/llvm/test/tools/llvm-readobj/ELF/symbols.test +++ b/llvm/test/tools/llvm-readobj/ELF/symbols.test @@ -70,17 +70,13 @@ # RUN: llvm-readobj --symbols %t64 > %t.symbols # RUN: llvm-readobj --syms %t64 > %t.syms # RUN: cmp %t.symbols %t.syms -# RUN: llvm-readobj -t %t64 > %t.t -# RUN: cmp %t.symbols %t.t -# RUN: llvm-readelf -s --elf-output-style=LLVM %t64 > %t.lowers -# RUN: cmp %t.symbols %t.lowers +# RUN: llvm-readobj -s %t64 | diff %t.symbols - +# RUN: llvm-readelf -s --elf-output-style=LLVM %t64 | diff %t.symbols - # RUN: llvm-readelf --symbols %t64 > %t.symbols.gnu # RUN: llvm-readelf --syms %t64 > %t.syms.gnu # RUN: cmp %t.symbols.gnu %t.syms.gnu - -## -s is an llvm-readobj option to dump sections. -# RUN: llvm-readobj -s --elf-output-style=GNU %t64 | FileCheck %s --implicit-check-not="Symbol table" +# RUN: llvm-readelf -s %t64 | diff %t.symbols.gnu - ## Case 3: Test that both regular and dynamic symbols are dumped when `--symbols` and `--dyn-symbols` ## are specified together. Note that the order is different for different styles. diff --git a/llvm/test/tools/llvm-readobj/basic.test b/llvm/test/tools/llvm-readobj/basic.test --- a/llvm/test/tools/llvm-readobj/basic.test +++ b/llvm/test/tools/llvm-readobj/basic.test @@ -54,8 +54,6 @@ OBJ: llvm-readobj{{.*}} [options] ELF: llvm-readelf{{.*}} [options] HELP: OPTIONS: -OBJ: -s - Alias for --section-headers -OBJ: -t - Alias for --symbols -ELF: -s - Alias for --symbols -ELF: -t - Alias for --section-details +HELP -s - Alias for --symbols +HELP -t - Alias for --section-details HELP: @FILE diff --git a/llvm/test/tools/yaml2obj/ELF/duplicate-symbol-names.yaml b/llvm/test/tools/yaml2obj/ELF/duplicate-symbol-names.yaml --- a/llvm/test/tools/yaml2obj/ELF/duplicate-symbol-names.yaml +++ b/llvm/test/tools/yaml2obj/ELF/duplicate-symbol-names.yaml @@ -2,7 +2,7 @@ ## containing symbols with duplicate names (but different name suffixes). # RUN: yaml2obj --docnum=1 %s -o %t1 -# RUN: llvm-readobj -t %t1 | FileCheck %s --check-prefix=CASE1 +# RUN: llvm-readobj --syms %t1 | FileCheck %s --check-prefix=CASE1 # CASE1: Name: localfoo (1) # CASE1: Name: localfoo (1) diff --git a/llvm/tools/llvm-readobj/llvm-readobj.cpp b/llvm/tools/llvm-readobj/llvm-readobj.cpp --- a/llvm/tools/llvm-readobj/llvm-readobj.cpp +++ b/llvm/tools/llvm-readobj/llvm-readobj.cpp @@ -142,6 +142,10 @@ // 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 @@ "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 @@ /// 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 @@ /// 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();