Home | History | Annotate | Download | only in Hexagon
      1 //===- HexagonGOT.h -------------------------------------------------------===//
      2 //
      3 //                     The MCLinker Project
      4 //
      5 // This file is distributed under the University of Illinois Open Source
      6 // License. See LICENSE.TXT for details.
      7 //
      8 //===----------------------------------------------------------------------===//
      9 #ifndef MCLD_TARGET_HEXAGON_GOT_H
     10 #define MCLD_TARGET_HEXAGON_GOT_H
     11 #ifdef ENABLE_UNITTEST
     12 #include <gtest.h>
     13 #endif
     14 
     15 #include <mcld/Target/GOT.h>
     16 
     17 namespace mcld {
     18 
     19 class LDSection;
     20 class SectionData;
     21 
     22 /** \class HexagonGOTEntry
     23  *  \brief GOT Entry with size of 4 bytes
     24  */
     25 class HexagonGOTEntry : public GOT::Entry<4>
     26 {
     27 public:
     28   HexagonGOTEntry(uint64_t pContent, SectionData* pParent)
     29    : GOT::Entry<4>(pContent, pParent)
     30   {}
     31 };
     32 
     33 /** \class HexagonGOT
     34  *  \brief Hexagon Global Offset Table.
     35  */
     36 
     37 class HexagonGOT : public GOT
     38 {
     39 public:
     40   HexagonGOT(LDSection& pSection);
     41 
     42   ~HexagonGOT();
     43 
     44   void reserve(size_t pNum = 1);
     45 
     46   HexagonGOTEntry* consume();
     47 
     48 private:
     49   HexagonGOTEntry* m_pLast; ///< the last consumed entry
     50 };
     51 
     52 } // namespace of mcld
     53 
     54 #endif
     55 
     56