15460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//===- LDContext.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//===----------------------------------------------------------------------===// 95460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include <mcld/LD/LDContext.h> 105460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include <mcld/LD/LDSection.h> 115460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include <mcld/LD/LDSymbol.h> 125460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include <llvm/ADT/StringRef.h> 135460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 145460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaousing namespace mcld; 155460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 165460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//========================== 175460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// LDReader 185460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoLDContext::LDContext() 195460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 205460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 215460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 225460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoLDContext::~LDContext() 235460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 245460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 255460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoLDSection* LDContext::getSection(unsigned int pIdx) 275460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 285460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao if (pIdx >= m_SectionTable.size()) 295460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return NULL; 305460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return m_SectionTable[pIdx]; 315460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 325460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 335460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaoconst LDSection* LDContext::getSection(unsigned int pIdx) const 345460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 355460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao if (pIdx >= m_SectionTable.size()) 365460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return NULL; 375460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return m_SectionTable[pIdx]; 385460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 395460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 405460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoLDSection* LDContext::getSection(const std::string& pName) 415460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 425460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao sect_iterator sect_iter, sect_end = sectEnd(); 435460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao for (sect_iter = sectBegin(); sect_iter != sect_end; ++sect_iter) { 445460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao if(NULL != *sect_iter && (*sect_iter)->name() == pName) 455460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *sect_iter; 465460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 475460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return NULL; 485460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 495460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 505460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaoconst LDSection* LDContext::getSection(const std::string& pName) const 515460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 525460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const_sect_iterator sect_iter, sect_end = sectEnd(); 535460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao for (sect_iter = sectBegin(); sect_iter != sect_end; ++sect_iter) { 545460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao if(NULL != *sect_iter && (*sect_iter)->name() == pName) 555460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return *sect_iter; 565460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao } 575460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return NULL; 585460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 595460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 605460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaosize_t LDContext::getSectionIdx(const std::string& pName) const 615460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 625460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao size_t result = 1; 635460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao size_t size = m_SectionTable.size(); 645460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao for (; result != size; ++result) 655460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao if (m_SectionTable[result]->name() == pName) 665460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return result; 675460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return 0; 685460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 695460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 705460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoLDSymbol* LDContext::getSymbol(unsigned int pIdx) 715460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 725460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao if (pIdx >= m_SymTab.size()) 735460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return NULL; 745460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return m_SymTab[pIdx]; 755460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 765460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 775460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaoconst LDSymbol* LDContext::getSymbol(unsigned int pIdx) const 785460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 795460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao if (pIdx >= m_SymTab.size()) 805460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return NULL; 815460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return m_SymTab[pIdx]; 825460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 835460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 845460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 855460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoLDSymbol* LDContext::getSymbol(const llvm::StringRef& pName) 865460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 875460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao size_t sym = 1; 885460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao size_t size = m_SymTab.size(); 895460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao for (; sym < size; ++sym) 905460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao if (m_SymTab[sym]->name() == pName) 915460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return m_SymTab[sym]; 925460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return NULL; 935460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 945460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 955460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaoconst LDSymbol* LDContext::getSymbol(const llvm::StringRef& pName) const 965460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 975460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao size_t sym = 1; 985460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao size_t size = m_SymTab.size(); 995460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao for (; sym < size; ++sym) 1005460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao if (m_SymTab[sym]->name() == pName) 1015460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return m_SymTab[sym]; 1025460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return NULL; 1035460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 104