//===- MsgHandling.cpp ----------------------------------------------------===// // // The MCLinker Project // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #include <mcld/LD/DiagnosticEngine.h> #include <mcld/LD/DiagnosticLineInfo.h> #include <mcld/LD/DiagnosticPrinter.h> #include <mcld/LD/MsgHandler.h> #include <mcld/Support/MsgHandling.h> #include <llvm/Support/ManagedStatic.h> #include <llvm/Support/raw_ostream.h> using namespace mcld; //===----------------------------------------------------------------------===// // static variables //===----------------------------------------------------------------------===// static llvm::ManagedStatic<DiagnosticEngine> g_pEngine; void mcld::InitializeDiagnosticEngine(const mcld::MCLDInfo& pLDInfo, DiagnosticLineInfo* pLineInfo, DiagnosticPrinter* pPrinter) { g_pEngine->reset(pLDInfo); if (NULL != pLineInfo) g_pEngine->setLineInfo(*pLineInfo); if (NULL != pPrinter) g_pEngine->setPrinter(*pPrinter, false); else { DiagnosticPrinter* printer = new DiagnosticPrinter(); g_pEngine->setPrinter(*printer, true); } } DiagnosticEngine& mcld::getDiagnosticEngine() { return *g_pEngine; }