1//===- MCLDInput.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/MCLDInput.h> 10#include <mcld/MC/Attribute.h> 11#include <mcld/LD/LDContext.h> 12#include <mcld/Support/MemoryArea.h> 13 14using namespace mcld; 15 16//===----------------------------------------------------------------------===// 17// mcld::Input 18//===----------------------------------------------------------------------===// 19Input::Input(llvm::StringRef pName) 20 : m_Type(Unknown), 21 m_Name(pName.data()), 22 m_Path(), 23 m_pAttr(NULL), 24 m_bNeeded(false), 25 m_fileOffset(0), 26 m_pMemArea(NULL), 27 m_pContext(NULL) { 28} 29 30Input::Input(llvm::StringRef pName, const AttributeProxy& pProxy) 31 : m_Type(Unknown), 32 m_Name(pName.data()), 33 m_Path(), 34 m_pAttr(const_cast<Attribute*>(pProxy.attr())), 35 m_bNeeded(false), 36 m_fileOffset(0), 37 m_pMemArea(NULL), 38 m_pContext(NULL) { 39} 40 41Input::Input(llvm::StringRef pName, 42 const sys::fs::Path& pPath, 43 unsigned int pType, 44 off_t pFileOffset) 45 : m_Type(pType), 46 m_Name(pName.data()), 47 m_Path(pPath), 48 m_pAttr(NULL), 49 m_bNeeded(false), 50 m_fileOffset(pFileOffset), 51 m_pMemArea(NULL), 52 m_pContext(NULL) { 53} 54 55Input::Input(llvm::StringRef pName, 56 const sys::fs::Path& pPath, 57 const AttributeProxy& pProxy, 58 unsigned int pType, 59 off_t pFileOffset) 60 : m_Type(pType), 61 m_Name(pName.data()), 62 m_Path(pPath), 63 m_pAttr(const_cast<Attribute*>(pProxy.attr())), 64 m_bNeeded(false), 65 m_fileOffset(pFileOffset), 66 m_pMemArea(NULL), 67 m_pContext(NULL) { 68} 69 70Input::~Input() 71{ 72 // Attribute is deleted by AttributeFactory 73 // MemoryArea is deleted by MemoryAreaFactory 74 if (NULL != m_pMemArea) 75 m_pMemArea->clear(); 76} 77 78