ELFSegmentFactory.cpp revision 5460a1f25d9ddecb5c70667267d66d51af177a99
15460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//===- ELFSegmentFactory.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/ELFSegmentFactory.h> 105460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 115460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaousing namespace mcld; 125460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 135460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//========================== 145460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// ELFSegmentFactory 155460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 165460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoELFSegmentFactory::ELFSegmentFactory(size_t pNum) 175460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao : GCFactory<ELFSegment, 0>(pNum) 185460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 195460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 205460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 215460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoELFSegmentFactory::~ELFSegmentFactory() 225460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 235460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 245460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 255460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao/// produce - produce an empty ELF segment information. 265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao/// this function will create an ELF segment 275460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao/// @param pType - p_type in ELF program header 285460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoELFSegment* ELFSegmentFactory::produce(uint32_t pType) 295460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 305460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ELFSegment* segment = allocate(); 315460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new (segment) ELFSegment(pType); 325460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao return segment; 335460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 345460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 355460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao/// destroy - destruct the ELF segment 365460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaovoid ELFSegmentFactory::destroy(ELFSegment*& pSegment) 375460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 385460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao deallocate(pSegment); 395460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 405460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 41