//===- MipsELFDynamic.h ---------------------------------------------------===//
//
//                     The MCLinker Project
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#ifndef TARGET_MIPS_MIPSELFDYNAMIC_H_
#define TARGET_MIPS_MIPSELFDYNAMIC_H_

#include "mcld/Target/ELFDynamic.h"

namespace mcld {

class MipsGNULDBackend;

class MipsELFDynamic : public ELFDynamic {
 public:
  MipsELFDynamic(const MipsGNULDBackend& pParent, const LinkerConfig& pConfig);

 private:
  const MipsGNULDBackend& m_pParent;
  const LinkerConfig& m_pConfig;

 private:
  void reserveTargetEntries(const ELFFileFormat& pFormat);
  void applyTargetEntries(const ELFFileFormat& pFormat);

  size_t getSymTabNum(const ELFFileFormat& pFormat) const;
  size_t getGotSym(const ELFFileFormat& pFormat) const;
  size_t getLocalGotNum(const ELFFileFormat& pFormat) const;
  uint64_t getBaseAddress();
};

}  // namespace mcld

#endif  // TARGET_MIPS_MIPSELFDYNAMIC_H_