1 //===- ZOption.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_ZOPTION_H 10 #define MCLD_ZOPTION_H 11 #ifdef ENABLE_UNITTEST 12 #include <gtest.h> 13 #endif 14 #include <llvm/Support/DataTypes.h> 15 16 namespace mcld 17 { 18 19 /** \class ZOption 20 * \brief The -z options for GNU ld compatibility. 21 */ 22 class ZOption 23 { 24 public: 25 enum Kind { 26 CombReloc, 27 NoCombReloc, 28 Defs, 29 ExecStack, 30 NoExecStack, 31 InitFirst, 32 InterPose, 33 LoadFltr, 34 MulDefs, 35 NoCopyReloc, 36 NoDefaultLib, 37 NoDelete, 38 NoDLOpen, 39 NoDump, 40 Relro, 41 NoRelro, 42 Lazy, 43 Now, 44 Origin, 45 CommPageSize, 46 MaxPageSize, 47 Unknown 48 }; 49 50 public: 51 ZOption(); 52 53 ~ZOption(); 54 kind()55 Kind kind() const 56 { return m_Kind; } 57 pageSize()58 uint64_t pageSize() const 59 { return m_PageSize; } 60 setKind(Kind pKind)61 void setKind(Kind pKind) 62 { m_Kind = pKind; } 63 setPageSize(uint64_t pPageSize)64 void setPageSize(uint64_t pPageSize) 65 { m_PageSize = pPageSize; } 66 67 private: 68 Kind m_Kind; 69 uint64_t m_PageSize; 70 }; 71 72 } // namespace of mcld 73 74 #endif 75 76