1 //===- FillFragment.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_FRAGMENT_FILLFRAGMENT_H_ 10 #define MCLD_FRAGMENT_FILLFRAGMENT_H_ 11 12 #include "mcld/Fragment/Fragment.h" 13 14 #include <llvm/Support/DataTypes.h> 15 16 namespace mcld { 17 18 class SectionData; 19 20 class FillFragment : public Fragment { 21 public: 22 FillFragment(int64_t pValue, 23 unsigned int pValueSize, 24 uint64_t pSize, 25 SectionData* pSD = NULL); 26 getValue()27 int64_t getValue() const { return m_Value; } 28 getValueSize()29 unsigned getValueSize() const { return m_ValueSize; } 30 classof(const Fragment * F)31 static bool classof(const Fragment* F) { 32 return F->getKind() == Fragment::Fillment; 33 } 34 classof(const FillFragment *)35 static bool classof(const FillFragment*) { return true; } 36 size()37 size_t size() const { return m_Size; } 38 39 private: 40 /// m_Value - Value used for filling bytes 41 int64_t m_Value; 42 43 /// m_ValueSize - The size (in bytes) of \arg Value to use when filling, or 0 44 /// if this is a virtual fill fragment. 45 unsigned int m_ValueSize; 46 47 /// m_Size - The number of bytes to insert. 48 uint64_t m_Size; 49 }; 50 51 } // namespace mcld 52 53 #endif // MCLD_FRAGMENT_FILLFRAGMENT_H_ 54