15460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//===- MCLDInfo.cpp -------------------------------------------------------===// 25460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// 35460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// The MCLinker Project 45460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// 55460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// This file is distributed under the University of Illinois Open Source 65460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// License. See LICENSE.TXT for details. 75460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// 85460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//===----------------------------------------------------------------------===// 9affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <mcld/Config/Config.h> 105460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include <mcld/MC/MCLDInfo.h> 115460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include <mcld/MC/InputFactory.h> 125460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include <mcld/MC/AttributeFactory.h> 135460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include <mcld/MC/ContextFactory.h> 14affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <mcld/LD/NamePool.h> 15affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <mcld/LD/StaticResolver.h> 16affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <mcld/Support/FileSystem.h> 175460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include <string> 185460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 195460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaousing namespace mcld; 205460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 215460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//========================== 225460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// MCLDInfo 235460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoMCLDInfo::MCLDInfo(const std::string& pTripleString, 245460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao size_t pAttrNum, 255460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao size_t pInputNum) 265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao : m_Options(), 27affc150dc44fab1911775a49636d0ce85333b634Zonr Chang m_Scripts(), 28affc150dc44fab1911775a49636d0ce85333b634Zonr Chang m_pBitcode(NULL), 29affc150dc44fab1911775a49636d0ce85333b634Zonr Chang m_Triple(pTripleString) 305460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 315460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao m_pAttrFactory = new AttributeFactory(pAttrNum); 325460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao m_pCntxtFactory = new ContextFactory(pInputNum); 335460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao m_pInputFactory = new InputFactory(pInputNum, *m_pAttrFactory); 345460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao m_pInputTree = new InputTree(*m_pInputFactory); 355460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao m_pOutput = new mcld::Output(); 36affc150dc44fab1911775a49636d0ce85333b634Zonr Chang m_pResolver = new StaticResolver(); 37affc150dc44fab1911775a49636d0ce85333b634Zonr Chang m_pNamePool = new NamePool(*m_pResolver, 1024); 385460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 395460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 405460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoMCLDInfo::~MCLDInfo() 415460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 425460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao delete m_pOutput; 435460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao delete m_pAttrFactory; 445460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao delete m_pCntxtFactory; 455460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao delete m_pInputFactory; 465460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao delete m_pInputTree; 47affc150dc44fab1911775a49636d0ce85333b634Zonr Chang delete m_pResolver; 48affc150dc44fab1911775a49636d0ce85333b634Zonr Chang delete m_pNamePool; 495460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 505460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 515460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaovoid MCLDInfo::setBitcode(const Input& pInput) 525460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 535460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao m_pBitcode = const_cast<Input*>(&pInput); 545460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 555460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 565460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoInput& MCLDInfo::bitcode() 575460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 585460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert((0 != m_pBitcode) && "default bitcode is not set"); 595460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *m_pBitcode; 605460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 615460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 625460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaoconst Input& MCLDInfo::bitcode() const 635460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 645460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao assert((0 != m_pBitcode) && "default bitcode is not set"); 655460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *m_pBitcode; 665460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 675460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 685460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaoconst char* MCLDInfo::version() 695460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 70affc150dc44fab1911775a49636d0ce85333b634Zonr Chang return MCLD_VERSION; 715460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 72