15460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//===- MipsRelocationFactory.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 MIPS_RELOCATION_FACTORY_H 105460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#define MIPS_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/Support/GCFactory.h> 175460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include "MipsLDBackend.h" 185460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 195460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaonamespace mcld 205460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 215460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 225460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao/** \class MipsRelocationFactory 235460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao * \brief MipsRelocationFactory creates and destroys the Mips relocations. 245460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao */ 255460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaoclass MipsRelocationFactory : public RelocationFactory 265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 275460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaopublic: 285460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao MipsRelocationFactory(size_t pNum, MipsGNULDBackend& pParent); 295460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3067e37f1be98c926645219cfb47fab9e90d8c725cShih-wei Liao Result applyRelocation(Relocation& pRelocation, const MCLDInfo& pLDInfo); 315460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 325460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao MipsGNULDBackend& getTarget() 335460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao { return m_Target; } 345460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 355460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao const MipsGNULDBackend& getTarget() const 365460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao { return m_Target; } 375460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 385460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao // Get last calculated AHL. 395460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao int32_t getAHL() const 405460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao { return m_AHL; } 415460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 425460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao // Set last calculated AHL. 435460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao void setAHL(int32_t pAHL) 445460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao { m_AHL = pAHL; } 455460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 4667e37f1be98c926645219cfb47fab9e90d8c725cShih-wei Liao const char* getName(Relocation::Type pType) const; 4767e37f1be98c926645219cfb47fab9e90d8c725cShih-wei Liao 485460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaoprivate: 495460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao MipsGNULDBackend& m_Target; 505460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao int32_t m_AHL; 515460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao}; 525460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 535460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} // namespace of mcld 545460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 555460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#endif 56