15460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//===- ARMRelocationFactory.h --------------------------------------------===// 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#ifndef ARM_RELOCATION_FACTORY_H 105460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#define ARM_RELOCATION_FACTORY_H 115460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#ifdef ENABLE_UNITTEST 125460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include <gtest.h> 135460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#endif 145460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 155460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include <mcld/LD/RelocationFactory.h> 165460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include <mcld/Target/GOT.h> 175460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include "ARMLDBackend.h" 185460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 195460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaonamespace mcld 205460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 215460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 225460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao/** \class ARMRelocationFactory 235460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao * \brief ARMRelocationFactory creates and destroys the ARM relocations. 245460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao * 255460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao */ 265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaoclass ARMRelocationFactory : public RelocationFactory 275460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 285460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaopublic: 295460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ARMRelocationFactory(size_t pNum, ARMGNULDBackend& pParent); 305460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ~ARMRelocationFactory(); 315460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3267e37f1be98c926645219cfb47fab9e90d8c725cShih-wei Liao Result applyRelocation(Relocation& pRelocation, const MCLDInfo& pLDInfo); 335460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 345460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ARMGNULDBackend& getTarget() 355460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao { return m_Target; } 365460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 375460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const ARMGNULDBackend& getTarget() const 385460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao { return m_Target; } 395460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 4067e37f1be98c926645219cfb47fab9e90d8c725cShih-wei Liao const char* getName(Relocation::Type pType) const; 4167e37f1be98c926645219cfb47fab9e90d8c725cShih-wei Liao 425460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaoprivate: 435460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ARMGNULDBackend& m_Target; 445460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao}; 455460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 465460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} // namespace of mcld 475460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 485460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#endif 49affc150dc44fab1911775a49636d0ce85333b634Zonr Chang 50