diff options
author | Nico Weber <thakis@chromium.org> | 2021-04-12 22:31:08 -0400 |
---|---|---|
committer | Nico Weber <thakis@chromium.org> | 2021-04-14 20:12:24 -0400 |
commit | 1035123ac50db21bb2f44f78c040a823d7d064b2 (patch) | |
tree | 52dbfee776e4cdcbdcb41b89b7156866049472c5 /llvm/tools/llvm-objdump/llvm-objdump.h | |
parent | dc1ab590a0527533815aeed0100de54a5f4a4829 (diff) | |
download | llvm-1035123ac50db21bb2f44f78c040a823d7d064b2.zip llvm-1035123ac50db21bb2f44f78c040a823d7d064b2.tar.gz llvm-1035123ac50db21bb2f44f78c040a823d7d064b2.tar.bz2 |
[llvm-objdump] Switch command-line parsing from llvm::cl to OptTable
This is similar to D83530, but for llvm-objdump.
The motivation is the desire to add an `llvm-otool` symlink to
llvm-objdump that behaves like macOS's `otool`, using the same
technique the at llvm-objcopy uses to behave like `strip` (etc).
This change for the most part preserves behavior. In some cases,
it increases compatibility with GNU objdump a bit. For example,
the long options now require two dashes, and the long options
taking arguments for the most part now require a `=` in front
of the value. Exceptions are flags where tests passed the
value separately, for these the separate form is kept as
an alias to the = form.
The one-letter short form args are now joined or separate
and long longer accept a =, which also matches GNU objdump.
cl::opt<>s in libraries now have to be explicitly plumbed
through. This patch does that for --x86-asm-syntax=, but
there's hope that we can remove that again.
Differential Revision: https://reviews.llvm.org/D100433
Diffstat (limited to 'llvm/tools/llvm-objdump/llvm-objdump.h')
-rw-r--r-- | llvm/tools/llvm-objdump/llvm-objdump.h | 43 |
1 files changed, 21 insertions, 22 deletions
diff --git a/llvm/tools/llvm-objdump/llvm-objdump.h b/llvm/tools/llvm-objdump/llvm-objdump.h index 884702d..601568d 100644 --- a/llvm/tools/llvm-objdump/llvm-objdump.h +++ b/llvm/tools/llvm-objdump/llvm-objdump.h @@ -13,7 +13,6 @@ #include "llvm/DebugInfo/DIContext.h" #include "llvm/MC/MCDisassembler/MCDisassembler.h" #include "llvm/Object/Archive.h" -#include "llvm/Support/CommandLine.h" #include "llvm/Support/Compiler.h" #include "llvm/Support/DataTypes.h" @@ -31,27 +30,27 @@ class RelocationRef; namespace objdump { -extern cl::opt<bool> ArchiveHeaders; -extern cl::opt<bool> Demangle; -extern cl::opt<bool> Disassemble; -extern cl::opt<bool> DisassembleAll; -extern cl::opt<DIDumpType> DwarfDumpType; -extern cl::list<std::string> FilterSections; -extern cl::list<std::string> MAttrs; -extern cl::opt<std::string> MCPU; -extern cl::opt<bool> NoShowRawInsn; -extern cl::opt<bool> NoLeadingAddr; -extern cl::opt<std::string> Prefix; -extern cl::opt<uint32_t> PrefixStrip; -extern cl::opt<bool> PrintImmHex; -extern cl::opt<bool> PrivateHeaders; -extern cl::opt<bool> Relocations; -extern cl::opt<bool> SectionHeaders; -extern cl::opt<bool> SectionContents; -extern cl::opt<bool> SymbolDescription; -extern cl::opt<bool> SymbolTable; -extern cl::opt<std::string> TripleName; -extern cl::opt<bool> UnwindInfo; +extern bool ArchiveHeaders; +extern bool Demangle; +extern bool Disassemble; +extern bool DisassembleAll; +extern DIDumpType DwarfDumpType; +extern std::vector<std::string> FilterSections; +extern std::vector<std::string> MAttrs; +extern std::string MCPU; +extern bool NoShowRawInsn; +extern bool NoLeadingAddr; +extern std::string Prefix; +extern uint32_t PrefixStrip; +extern bool PrintImmHex; +extern bool PrivateHeaders; +extern bool Relocations; +extern bool SectionHeaders; +extern bool SectionContents; +extern bool SymbolDescription; +extern bool SymbolTable; +extern std::string TripleName; +extern bool UnwindInfo; extern StringSet<> FoundSectionSet; |