• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //===- MsgHandling.cpp ----------------------------------------------------===//
2 //
3 //                     The MCLinker Project
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 #include <mcld/LD/DiagnosticEngine.h>
10 #include <mcld/LD/DiagnosticLineInfo.h>
11 #include <mcld/LD/DiagnosticPrinter.h>
12 #include <mcld/LD/MsgHandler.h>
13 #include <mcld/Support/MsgHandling.h>
14 #include <llvm/Support/ManagedStatic.h>
15 #include <llvm/Support/raw_ostream.h>
16 
17 using namespace mcld;
18 
19 //===----------------------------------------------------------------------===//
20 // static variables
21 //===----------------------------------------------------------------------===//
22 static llvm::ManagedStatic<DiagnosticEngine> g_pEngine;
23 
24 void
InitializeDiagnosticEngine(const mcld::MCLDInfo & pLDInfo,DiagnosticLineInfo * pLineInfo,DiagnosticPrinter * pPrinter)25 mcld::InitializeDiagnosticEngine(const mcld::MCLDInfo& pLDInfo,
26                                  DiagnosticLineInfo* pLineInfo,
27                                  DiagnosticPrinter* pPrinter)
28 {
29   g_pEngine->reset(pLDInfo);
30   if (NULL != pLineInfo)
31     g_pEngine->setLineInfo(*pLineInfo);
32 
33   if (NULL != pPrinter)
34     g_pEngine->setPrinter(*pPrinter, false);
35   else {
36     DiagnosticPrinter* printer = new DiagnosticPrinter();
37     g_pEngine->setPrinter(*printer, true);
38   }
39 }
40 
getDiagnosticEngine()41 DiagnosticEngine& mcld::getDiagnosticEngine()
42 {
43   return *g_pEngine;
44 }
45 
46