diff --git a/llvm/test/tools/llvm-objdump/option-grouping.test b/llvm/test/tools/llvm-objdump/option-grouping.test new file mode 100644 --- /dev/null +++ b/llvm/test/tools/llvm-objdump/option-grouping.test @@ -0,0 +1,2 @@ +// RUN: llvm-objdump -DRafdghprstux %p/Inputs/private-headers-x86_64.elf 2>&1 | FileCheck %s +// CHECK-NOT: Unknown command line argument diff --git a/llvm/tools/llvm-objdump/MachODump.cpp b/llvm/tools/llvm-objdump/MachODump.cpp --- a/llvm/tools/llvm-objdump/MachODump.cpp +++ b/llvm/tools/llvm-objdump/MachODump.cpp @@ -59,7 +59,7 @@ using namespace object; static cl::opt - UseDbg("g", + UseDbg("g", cl::Grouping, cl::desc("Print line information from debug info if available")); static cl::opt DSYMFile("dsym", diff --git a/llvm/tools/llvm-objdump/llvm-objdump.cpp b/llvm/tools/llvm-objdump/llvm-objdump.cpp --- a/llvm/tools/llvm-objdump/llvm-objdump.cpp +++ b/llvm/tools/llvm-objdump/llvm-objdump.cpp @@ -79,7 +79,8 @@ llvm::AllHeaders("all-headers", cl::desc("Display all available header information")); static cl::alias AllHeadersShort("x", cl::desc("Alias for --all-headers"), - cl::NotHidden, cl::aliasopt(AllHeaders)); + cl::NotHidden, cl::Grouping, + cl::aliasopt(AllHeaders)); static cl::list InputFilenames(cl::Positional, cl::desc(""),cl::ZeroOrMore); @@ -88,19 +89,22 @@ llvm::Disassemble("disassemble", cl::desc("Display assembler mnemonics for the machine instructions")); static cl::alias Disassembled("d", cl::desc("Alias for --disassemble"), - cl::NotHidden, cl::aliasopt(Disassemble)); + cl::NotHidden, cl::Grouping, + cl::aliasopt(Disassemble)); cl::opt llvm::DisassembleAll("disassemble-all", cl::desc("Display assembler mnemonics for the machine instructions")); static cl::alias DisassembleAlld("D", cl::desc("Alias for --disassemble-all"), - cl::NotHidden, cl::aliasopt(DisassembleAll)); + cl::NotHidden, cl::Grouping, + cl::aliasopt(DisassembleAll)); cl::opt llvm::Demangle("demangle", cl::desc("Demangle symbols names"), cl::init(false)); static cl::alias DemangleShort("C", cl::desc("Alias for --demangle"), - cl::NotHidden, cl::aliasopt(llvm::Demangle)); + cl::NotHidden, cl::Grouping, + cl::aliasopt(llvm::Demangle)); static cl::list DisassembleFunctions("df", @@ -112,14 +116,14 @@ llvm::Relocations("reloc", cl::desc("Display the relocation entries in the file")); static cl::alias RelocationsShort("r", cl::desc("Alias for --reloc"), - cl::NotHidden, + cl::NotHidden, cl::Grouping, cl::aliasopt(llvm::Relocations)); cl::opt llvm::DynamicRelocations("dynamic-reloc", cl::desc("Display the dynamic relocation entries in the file")); static cl::alias DynamicRelocationsd("R", cl::desc("Alias for --dynamic-reloc"), - cl::NotHidden, + cl::NotHidden, cl::Grouping, cl::aliasopt(DynamicRelocations)); cl::opt @@ -127,12 +131,12 @@ cl::desc("Display the content of each section")); static cl::alias SectionContentsShort("s", cl::desc("Alias for --full-contents"), - cl::NotHidden, + cl::NotHidden, cl::Grouping, cl::aliasopt(SectionContents)); cl::opt llvm::SymbolTable("syms", cl::desc("Display the symbol table")); static cl::alias SymbolTableShort("t", cl::desc("Alias for --syms"), - cl::NotHidden, + cl::NotHidden, cl::Grouping, cl::aliasopt(llvm::SymbolTable)); cl::opt @@ -157,7 +161,7 @@ static cl::opt MachOOpt("macho", cl::desc("Use MachO specific object file parser")); static cl::alias MachOm("m", cl::desc("Alias for --macho"), cl::NotHidden, - cl::aliasopt(MachOOpt)); + cl::Grouping, cl::aliasopt(MachOOpt)); cl::opt llvm::TripleName("triple", cl::desc("Target triple to disassemble for, " @@ -182,7 +186,7 @@ cl::aliasopt(SectionHeaders)); static cl::alias SectionHeadersShorter("h", cl::desc("Alias for --section-headers"), - cl::NotHidden, + cl::NotHidden, cl::Grouping, cl::aliasopt(SectionHeaders)); static cl::opt @@ -193,7 +197,7 @@ llvm::FilterSections("section", cl::desc("Operate on the specified sections only. " "With -macho dump segment,section")); cl::alias static FilterSectionsj("j", cl::desc("Alias for --section"), - cl::NotHidden, + cl::NotHidden, cl::Grouping, cl::aliasopt(llvm::FilterSections)); cl::list @@ -213,7 +217,8 @@ llvm::UnwindInfo("unwind-info", cl::desc("Display unwind information")); static cl::alias UnwindInfoShort("u", cl::desc("Alias for --unwind-info"), - cl::NotHidden, cl::aliasopt(UnwindInfo)); + cl::NotHidden, cl::Grouping, + cl::aliasopt(UnwindInfo)); cl::opt llvm::PrivateHeaders("private-headers", @@ -226,7 +231,7 @@ static cl::alias PrivateHeadersShort("p", cl::desc("Alias for --private-headers"), - cl::NotHidden, + cl::NotHidden, cl::Grouping, cl::aliasopt(PrivateHeaders)); cl::opt llvm::FileHeaders( @@ -234,14 +239,16 @@ cl::desc("Display the contents of the overall file header")); static cl::alias FileHeadersShort("f", cl::desc("Alias for --file-headers"), - cl::NotHidden, cl::aliasopt(FileHeaders)); + cl::NotHidden, cl::Grouping, + cl::aliasopt(FileHeaders)); cl::opt llvm::ArchiveHeaders("archive-headers", cl::desc("Display archive header information")); cl::alias ArchiveHeadersShort("a", cl::desc("Alias for --archive-headers"), - cl::NotHidden, cl::aliasopt(ArchiveHeaders)); + cl::NotHidden, cl::Grouping, + cl::aliasopt(ArchiveHeaders)); cl::opt llvm::PrintImmHex("print-imm-hex", @@ -260,14 +267,15 @@ "Display source inlined with disassembly. Implies disassemble object")); cl::alias PrintSourceShort("S", cl::desc("Alias for -source"), cl::NotHidden, - cl::aliasopt(PrintSource)); + cl::Grouping, cl::aliasopt(PrintSource)); cl::opt PrintLines("line-numbers", cl::desc("Display source line numbers with " "disassembly. Implies disassemble object")); cl::alias PrintLinesShort("l", cl::desc("Alias for -line-numbers"), - cl::NotHidden, cl::aliasopt(PrintLines)); + cl::NotHidden, cl::Grouping, + cl::aliasopt(PrintLines)); cl::opt StartAddress("start-address", cl::desc("Disassemble beginning at address"), @@ -282,7 +290,7 @@ cl::desc("Do not skip blocks of zeroes when disassembling")); cl::alias DisassembleZeroesShort("z", cl::desc("Alias for --disassemble-zeroes"), - cl::NotHidden, + cl::NotHidden, cl::Grouping, cl::aliasopt(DisassembleZeroes)); static StringRef ToolName;