diff options
author | James Molloy <james.molloy@arm.com> | 2011-09-07 17:24:38 +0000 |
---|---|---|
committer | James Molloy <james.molloy@arm.com> | 2011-09-07 17:24:38 +0000 |
commit | b950585cc5a0d665e9accfe5ce490cd269756f2e (patch) | |
tree | 70f25e269b3e66fe882501df4ae7caeacf154eee /tools/llvm-objdump/llvm-objdump.cpp | |
parent | 758ba1f4edfe2a2876c91022f921180a6dbece01 (diff) |
Refactor instprinter and mcdisassembler to take a SubtargetInfo. Add -mattr= handling to llvm-mc. Reviewed by Owen Anderson.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139237 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/llvm-objdump/llvm-objdump.cpp')
-rw-r--r-- | tools/llvm-objdump/llvm-objdump.cpp | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/tools/llvm-objdump/llvm-objdump.cpp b/tools/llvm-objdump/llvm-objdump.cpp index a8102f497e..3d33eb774c 100644 --- a/tools/llvm-objdump/llvm-objdump.cpp +++ b/tools/llvm-objdump/llvm-objdump.cpp @@ -25,6 +25,7 @@ #include "llvm/MC/MCInstrAnalysis.h" #include "llvm/MC/MCInstrDesc.h" #include "llvm/MC/MCInstrInfo.h" +#include "llvm/MC/MCSubtargetInfo.h" #include "llvm/Support/CommandLine.h" #include "llvm/Support/Debug.h" #include "llvm/Support/Format.h" @@ -217,7 +218,14 @@ static void DisassembleInput(const StringRef &Filename) { return; } - OwningPtr<const MCDisassembler> DisAsm(TheTarget->createMCDisassembler()); + OwningPtr<const MCSubtargetInfo> STI(TheTarget->createMCSubtargetInfo(TripleName, "", "")); + + if (!STI) { + errs() << "error: no subtarget info for target " << TripleName << "\n"; + return; + } + + OwningPtr<const MCDisassembler> DisAsm(TheTarget->createMCDisassembler(*STI)); if (!DisAsm) { errs() << "error: no disassembler for target " << TripleName << "\n"; return; @@ -225,7 +233,7 @@ static void DisassembleInput(const StringRef &Filename) { int AsmPrinterVariant = AsmInfo->getAssemblerDialect(); OwningPtr<MCInstPrinter> IP(TheTarget->createMCInstPrinter( - AsmPrinterVariant, *AsmInfo)); + AsmPrinterVariant, *AsmInfo, *STI)); if (!IP) { errs() << "error: no instruction printer for target " << TripleName << '\n'; return; |