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