1//===- MCLDInfo.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/Config/Config.h> 10#include <mcld/MC/MCLDInfo.h> 11#include <mcld/MC/InputFactory.h> 12#include <mcld/MC/AttributeFactory.h> 13#include <mcld/MC/ContextFactory.h> 14#include <mcld/LD/NamePool.h> 15#include <mcld/LD/StaticResolver.h> 16#include <mcld/Support/FileSystem.h> 17#include <string> 18 19using namespace mcld; 20 21//========================== 22// MCLDInfo 23MCLDInfo::MCLDInfo(const std::string& pTripleString, 24 size_t pAttrNum, 25 size_t pInputNum) 26 : m_Options(), 27 m_Scripts(), 28 m_pBitcode(NULL), 29 m_Triple(pTripleString) 30{ 31 m_pAttrFactory = new AttributeFactory(pAttrNum); 32 m_pCntxtFactory = new ContextFactory(pInputNum); 33 m_pInputFactory = new InputFactory(pInputNum, *m_pAttrFactory); 34 m_pInputTree = new InputTree(*m_pInputFactory); 35 m_pOutput = new mcld::Output(); 36 m_pResolver = new StaticResolver(); 37 m_pNamePool = new NamePool(*m_pResolver, 1024); 38} 39 40MCLDInfo::~MCLDInfo() 41{ 42 delete m_pOutput; 43 delete m_pAttrFactory; 44 delete m_pCntxtFactory; 45 delete m_pInputFactory; 46 delete m_pInputTree; 47 delete m_pResolver; 48 delete m_pNamePool; 49} 50 51void MCLDInfo::setBitcode(const Input& pInput) 52{ 53 m_pBitcode = const_cast<Input*>(&pInput); 54} 55 56Input& MCLDInfo::bitcode() 57{ 58 assert((0 != m_pBitcode) && "default bitcode is not set"); 59 return *m_pBitcode; 60} 61 62const Input& MCLDInfo::bitcode() const 63{ 64 assert((0 != m_pBitcode) && "default bitcode is not set"); 65 return *m_pBitcode; 66} 67 68const char* MCLDInfo::version() 69{ 70 return MCLD_VERSION; 71} 72