aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/MC/MCDisassembler/EDDisassembler.cpp
diff options
context:
space:
mode:
authorSean Callanan <scallanan@apple.com>2011-04-09 00:37:25 +0000
committerSean Callanan <scallanan@apple.com>2011-04-09 00:37:25 +0000
commit1426351c83b827db3ee5196ce87315baf3558a5a (patch)
treeb5a6cfbf7fbfb8f026b7da75959da56a5df13744 /llvm/lib/MC/MCDisassembler/EDDisassembler.cpp
parentd85ae78c4879788681802f862b132224def6979b (diff)
downloadllvm-1426351c83b827db3ee5196ce87315baf3558a5a.zip
llvm-1426351c83b827db3ee5196ce87315baf3558a5a.tar.gz
llvm-1426351c83b827db3ee5196ce87315baf3558a5a.tar.bz2
Redirected errors from the AsmParser to the proper
error stream, in cases where the AsmParser is being invoked by EDDisassembler. Before, they were being sent to errs() because no error handler was installed in the SourceMgr. llvm-svn: 129177
Diffstat (limited to 'llvm/lib/MC/MCDisassembler/EDDisassembler.cpp')
-rw-r--r--llvm/lib/MC/MCDisassembler/EDDisassembler.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/llvm/lib/MC/MCDisassembler/EDDisassembler.cpp b/llvm/lib/MC/MCDisassembler/EDDisassembler.cpp
index e36b3a4e..91c5284 100644
--- a/llvm/lib/MC/MCDisassembler/EDDisassembler.cpp
+++ b/llvm/lib/MC/MCDisassembler/EDDisassembler.cpp
@@ -334,6 +334,15 @@ int EDDisassembler::printInst(std::string &str, MCInst &inst) {
return 0;
}
+static void diag_handler(const SMDiagnostic &diag,
+ void *context)
+{
+ if (context) {
+ EDDisassembler *disassembler = static_cast<EDDisassembler*>(context);
+ diag.Print("", disassembler->ErrorStream);
+ }
+}
+
int EDDisassembler::parseInst(SmallVectorImpl<MCParsedAsmOperand*> &operands,
SmallVectorImpl<AsmToken> &tokens,
const std::string &str) {
@@ -356,6 +365,7 @@ int EDDisassembler::parseInst(SmallVectorImpl<MCParsedAsmOperand*> &operands,
SMLoc instLoc;
SourceMgr sourceMgr;
+ sourceMgr.setDiagHandler(diag_handler, static_cast<void*>(this));
sourceMgr.AddNewSourceBuffer(buf, SMLoc()); // ownership of buf handed over
MCContext context(*AsmInfo, NULL);
OwningPtr<MCStreamer> streamer(createNullStreamer(context));