From 457856c03f2f0edb2e218fc91851623a1e6dbdbb Mon Sep 17 00:00:00 2001 From: Sean Callanan Date: Sat, 9 Apr 2011 00:37:25 +0000 Subject: [PATCH] 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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129177 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/MC/MCDisassembler/EDDisassembler.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/lib/MC/MCDisassembler/EDDisassembler.cpp b/lib/MC/MCDisassembler/EDDisassembler.cpp index e36b3a4e59a..91c5284892a 100644 --- a/lib/MC/MCDisassembler/EDDisassembler.cpp +++ b/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(context); + diag.Print("", disassembler->ErrorStream); + } +} + int EDDisassembler::parseInst(SmallVectorImpl &operands, SmallVectorImpl &tokens, const std::string &str) { @@ -356,6 +365,7 @@ int EDDisassembler::parseInst(SmallVectorImpl &operands, SMLoc instLoc; SourceMgr sourceMgr; + sourceMgr.setDiagHandler(diag_handler, static_cast(this)); sourceMgr.AddNewSourceBuffer(buf, SMLoc()); // ownership of buf handed over MCContext context(*AsmInfo, NULL); OwningPtr streamer(createNullStreamer(context)); -- 2.34.1