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