1 //===- MCLDFile.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/MC/MCLDFile.h" 10 #include "mcld/LD/LDContext.h" 11 #include "mcld/Support/FileSystem.h" 12 #include "mcld/Support/MemoryArea.h" 13 #include <cstring> 14 #include <cstdlib> 15 16 using namespace mcld; 17 18 //===----------------------------------------------------------------------===// 19 // MCLDFile 20 MCLDFile::MCLDFile() 21 : m_Type(Unknown), m_pContext(0), m_Path(), m_Name(), m_pMemArea(0) { 22 } 23 24 MCLDFile::MCLDFile(llvm::StringRef pName) 25 : m_Type(Unknown), m_pContext(0), m_Path(), m_Name(pName.data()), m_pMemArea(0) { 26 } 27 28 MCLDFile::MCLDFile(llvm::StringRef pName, 29 const sys::fs::Path& pPath, 30 unsigned int pType) 31 : m_Type(pType), m_pContext(0), m_Path(pPath), m_Name(pName.data()), m_pMemArea(0) { 32 } 33 34 MCLDFile::~MCLDFile() 35 { 36 } 37 38 void MCLDFile::setSOName(const std::string& pName) 39 { 40 size_t pos = pName.find_last_of(sys::fs::separator); 41 if (std::string::npos == pos) 42 m_Name = pName; 43 else 44 m_Name = pName.substr(pos + 1); 45 } 46 47