ELFSegmentFactory.cpp revision 5460a1f25d9ddecb5c70667267d66d51af177a99
1eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi//===- ELFSegmentFactory.cpp ----------------------------------------------===//
2eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi//
3eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi//                     The MCLinker Project
4eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi//
5eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi// This file is distributed under the University of Illinois Open Source
6eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi// License. See LICENSE.TXT for details.
7eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi//
8eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi//===----------------------------------------------------------------------===//
9eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi#include <mcld/LD/ELFSegmentFactory.h>
10eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi
11eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Triviusing namespace mcld;
12eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi
13eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi//==========================
14eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi// ELFSegmentFactory
15eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi
16eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel TriviELFSegmentFactory::ELFSegmentFactory(size_t pNum)
17eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi  : GCFactory<ELFSegment, 0>(pNum)
18eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi{
19eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi}
202b06e20ae32388f6e1dfd088d9773c34e6b1cb45Jean-Michel Trivi
212b06e20ae32388f6e1dfd088d9773c34e6b1cb45Jean-Michel TriviELFSegmentFactory::~ELFSegmentFactory()
222b06e20ae32388f6e1dfd088d9773c34e6b1cb45Jean-Michel Trivi{
232b06e20ae32388f6e1dfd088d9773c34e6b1cb45Jean-Michel Trivi}
24eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi
25e7bfcdc183454ec959ff51342f0973cabba219b2Jean-Michel Trivi/// produce - produce an empty ELF segment information.
26581a0f550f15f6fc22199cb85775a220f668b480Jean-Michel Trivi/// this function will create an ELF segment
2737dc2fccf3f122b79ebd554de209d0a3c94ae161Jean-Michel Trivi/// @param pType - p_type in ELF program header
28581a0f550f15f6fc22199cb85775a220f668b480Jean-Michel TriviELFSegment* ELFSegmentFactory::produce(uint32_t pType)
29c623c89c0a32c5fc77c998f1742d58e7be69e8c1Glenn Kasten{
30c623c89c0a32c5fc77c998f1742d58e7be69e8c1Glenn Kasten  ELFSegment* segment = allocate();
31c623c89c0a32c5fc77c998f1742d58e7be69e8c1Glenn Kasten  new (segment) ELFSegment(pType);
32c623c89c0a32c5fc77c998f1742d58e7be69e8c1Glenn Kasten  return segment;
33c623c89c0a32c5fc77c998f1742d58e7be69e8c1Glenn Kasten}
34c623c89c0a32c5fc77c998f1742d58e7be69e8c1Glenn Kasten
35c623c89c0a32c5fc77c998f1742d58e7be69e8c1Glenn Kasten/// destroy - destruct the ELF segment
36581a0f550f15f6fc22199cb85775a220f668b480Jean-Michel Trivivoid ELFSegmentFactory::destroy(ELFSegment*& pSegment)
37581a0f550f15f6fc22199cb85775a220f668b480Jean-Michel Trivi{
38581a0f550f15f6fc22199cb85775a220f668b480Jean-Michel Trivi  deallocate(pSegment);
39581a0f550f15f6fc22199cb85775a220f668b480Jean-Michel Trivi}
40581a0f550f15f6fc22199cb85775a220f668b480Jean-Michel Trivi
419d8a98601357c0669dca4de63e43196c0a70553dGlenn Kasten