MsgHandling.cpp revision 67e37f1be98c926645219cfb47fab9e90d8c725c
1affc150dc44fab1911775a49636d0ce85333b634Zonr Chang//===- MsgHandling.cpp ----------------------------------------------------===//
2affc150dc44fab1911775a49636d0ce85333b634Zonr Chang//
3affc150dc44fab1911775a49636d0ce85333b634Zonr Chang//                     The MCLinker Project
4affc150dc44fab1911775a49636d0ce85333b634Zonr Chang//
5affc150dc44fab1911775a49636d0ce85333b634Zonr Chang// This file is distributed under the University of Illinois Open Source
6affc150dc44fab1911775a49636d0ce85333b634Zonr Chang// License. See LICENSE.TXT for details.
7affc150dc44fab1911775a49636d0ce85333b634Zonr Chang//
8affc150dc44fab1911775a49636d0ce85333b634Zonr Chang//===----------------------------------------------------------------------===//
9affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <mcld/LD/DiagnosticEngine.h>
10affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <mcld/LD/DiagnosticLineInfo.h>
11affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <mcld/LD/DiagnosticPrinter.h>
12affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <mcld/LD/MsgHandler.h>
13affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <mcld/Support/MsgHandling.h>
14affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <llvm/Support/ManagedStatic.h>
15affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <llvm/Support/raw_ostream.h>
16affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
17affc150dc44fab1911775a49636d0ce85333b634Zonr Changusing namespace mcld;
18affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
19affc150dc44fab1911775a49636d0ce85333b634Zonr Chang//===----------------------------------------------------------------------===//
2067e37f1be98c926645219cfb47fab9e90d8c725cShih-wei Liao// static variables
2167e37f1be98c926645219cfb47fab9e90d8c725cShih-wei Liao//===----------------------------------------------------------------------===//
2267e37f1be98c926645219cfb47fab9e90d8c725cShih-wei Liaostatic llvm::ManagedStatic<DiagnosticEngine> g_pEngine;
23affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
2467e37f1be98c926645219cfb47fab9e90d8c725cShih-wei Liaovoid
2567e37f1be98c926645219cfb47fab9e90d8c725cShih-wei Liaomcld::InitializeDiagnosticEngine(const mcld::MCLDInfo& pLDInfo,
2667e37f1be98c926645219cfb47fab9e90d8c725cShih-wei Liao                                 DiagnosticLineInfo* pLineInfo,
2767e37f1be98c926645219cfb47fab9e90d8c725cShih-wei Liao                                 DiagnosticPrinter* pPrinter)
28affc150dc44fab1911775a49636d0ce85333b634Zonr Chang{
2967e37f1be98c926645219cfb47fab9e90d8c725cShih-wei Liao  g_pEngine->reset(pLDInfo);
3067e37f1be98c926645219cfb47fab9e90d8c725cShih-wei Liao  if (NULL != pLineInfo)
3167e37f1be98c926645219cfb47fab9e90d8c725cShih-wei Liao    g_pEngine->setLineInfo(*pLineInfo);
3267e37f1be98c926645219cfb47fab9e90d8c725cShih-wei Liao
3367e37f1be98c926645219cfb47fab9e90d8c725cShih-wei Liao  if (NULL != pPrinter)
3467e37f1be98c926645219cfb47fab9e90d8c725cShih-wei Liao    g_pEngine->setPrinter(*pPrinter, false);
3567e37f1be98c926645219cfb47fab9e90d8c725cShih-wei Liao  else {
3667e37f1be98c926645219cfb47fab9e90d8c725cShih-wei Liao    DiagnosticPrinter* printer = new DiagnosticPrinter();
3767e37f1be98c926645219cfb47fab9e90d8c725cShih-wei Liao    g_pEngine->setPrinter(*printer, true);
38affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  }
39affc150dc44fab1911775a49636d0ce85333b634Zonr Chang}
40affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
41affc150dc44fab1911775a49636d0ce85333b634Zonr ChangDiagnosticEngine& mcld::getDiagnosticEngine()
42affc150dc44fab1911775a49636d0ce85333b634Zonr Chang{
4367e37f1be98c926645219cfb47fab9e90d8c725cShih-wei Liao  return *g_pEngine;
44affc150dc44fab1911775a49636d0ce85333b634Zonr Chang}
45affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
46