//===- MCLDInfo.cpp -------------------------------------------------------===// // // The MCLinker Project // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #include <mcld/Config/Config.h> #include <mcld/MC/MCLDInfo.h> #include <mcld/MC/InputFactory.h> #include <mcld/MC/AttributeFactory.h> #include <mcld/MC/ContextFactory.h> #include <mcld/LD/NamePool.h> #include <mcld/LD/StaticResolver.h> #include <mcld/Support/FileSystem.h> #include <string> using namespace mcld; //========================== // MCLDInfo MCLDInfo::MCLDInfo(const std::string& pTripleString, size_t pAttrNum, size_t pInputNum) : m_Options(), m_Scripts(), m_pBitcode(NULL), m_Triple(pTripleString) { m_pAttrFactory = new AttributeFactory(pAttrNum); m_pCntxtFactory = new ContextFactory(pInputNum); m_pInputFactory = new InputFactory(pInputNum, *m_pAttrFactory); m_pInputTree = new InputTree(*m_pInputFactory); m_pOutput = new mcld::Output(); m_pResolver = new StaticResolver(); m_pNamePool = new NamePool(*m_pResolver, 1024); } MCLDInfo::~MCLDInfo() { delete m_pOutput; delete m_pAttrFactory; delete m_pCntxtFactory; delete m_pInputFactory; delete m_pInputTree; delete m_pResolver; delete m_pNamePool; } void MCLDInfo::setBitcode(const Input& pInput) { m_pBitcode = const_cast<Input*>(&pInput); } Input& MCLDInfo::bitcode() { assert((0 != m_pBitcode) && "default bitcode is not set"); return *m_pBitcode; } const Input& MCLDInfo::bitcode() const { assert((0 != m_pBitcode) && "default bitcode is not set"); return *m_pBitcode; } const char* MCLDInfo::version() { return MCLD_VERSION; }