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