diff options
author | Igor Kudrin <ikudrin@accesssoftek.com> | 2019-02-26 12:15:14 +0000 |
---|---|---|
committer | Igor Kudrin <ikudrin@accesssoftek.com> | 2019-02-26 12:15:14 +0000 |
commit | 2d3faad706c81814abc5e4080df38c4bccde1d48 (patch) | |
tree | 9a11b749881378558b3eabd238ac516e787b8b01 /llvm/tools/llvm-objdump/llvm-objdump.cpp | |
parent | e42be1eae230d0ff3f650fcea7826da4842e7371 (diff) | |
download | llvm-2d3faad706c81814abc5e4080df38c4bccde1d48.zip llvm-2d3faad706c81814abc5e4080df38c4bccde1d48.tar.gz llvm-2d3faad706c81814abc5e4080df38c4bccde1d48.tar.bz2 |
[llvm-objdump] Implement -Mreg-names-raw/-std options.
The --disassembler-options, or -M, are used to customize
the disassembler and affect its output.
The two implemented options allow selecting register names on ARM:
* With -Mreg-names-raw, the disassembler uses rNN for all registers.
* With -Mreg-names-std it prints sp, lr and pc for r13, r14 and r15,
which is the default behavior of llvm-objdump.
Differential Revision: https://reviews.llvm.org/D57680
llvm-svn: 354870
Diffstat (limited to 'llvm/tools/llvm-objdump/llvm-objdump.cpp')
-rw-r--r-- | llvm/tools/llvm-objdump/llvm-objdump.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/llvm/tools/llvm-objdump/llvm-objdump.cpp b/llvm/tools/llvm-objdump/llvm-objdump.cpp index e9d1545..914789f 100644 --- a/llvm/tools/llvm-objdump/llvm-objdump.cpp +++ b/llvm/tools/llvm-objdump/llvm-objdump.cpp @@ -293,6 +293,15 @@ cl::alias DisassembleZeroesShort("z", cl::NotHidden, cl::Grouping, cl::aliasopt(DisassembleZeroes)); +static cl::list<std::string> + DisassemblerOptions("disassembler-options", + cl::desc("Pass target specific disassembler options"), + cl::value_desc("options"), cl::CommaSeparated); +static cl::alias + DisassemblerOptionsShort("M", cl::desc("Alias for --disassembler-options"), + cl::NotHidden, cl::Prefix, cl::CommaSeparated, + cl::aliasopt(DisassemblerOptions)); + static StringRef ToolName; typedef std::vector<std::tuple<uint64_t, StringRef, uint8_t>> SectionSymbolsTy; @@ -1473,6 +1482,10 @@ static void disassembleObject(const ObjectFile *Obj, bool InlineRelocs) { PrettyPrinter &PIP = selectPrettyPrinter(Triple(TripleName)); SourcePrinter SP(Obj, TheTarget->getName()); + for (StringRef Opt : DisassemblerOptions) + if (!IP->applyTargetSpecificCLOption(Opt)) + error("Unrecognized disassembler option: " + Opt); + disassembleObject(TheTarget, Obj, Ctx, DisAsm.get(), MIA.get(), IP.get(), STI.get(), PIP, SP, InlineRelocs); } |