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