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 16namespace mcld 17{ 18 19/** \class ZOption 20 * \brief The -z options for GNU ld compatibility. 21 */ 22class ZOption 23{ 24public: 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 50public: 51 ZOption(); 52 53 ~ZOption(); 54 55 Kind kind() const 56 { return m_Kind; } 57 58 uint64_t pageSize() const 59 { return m_PageSize; } 60 61 void setKind(Kind pKind) 62 { m_Kind = pKind; } 63 64 void setPageSize(uint64_t pPageSize) 65 { m_PageSize = pPageSize; } 66 67private: 68 Kind m_Kind; 69 uint64_t m_PageSize; 70}; 71 72} // namespace of mcld 73 74#endif 75 76