Home | History | Annotate | Download | only in MC
      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  public:
     21   enum Kind {
     22     CombReloc,
     23     NoCombReloc,
     24     Defs,
     25     ExecStack,
     26     NoExecStack,
     27     InitFirst,
     28     InterPose,
     29     LoadFltr,
     30     MulDefs,
     31     NoCopyReloc,
     32     NoDefaultLib,
     33     NoDelete,
     34     NoDLOpen,
     35     NoDump,
     36     Relro,
     37     NoRelro,
     38     Lazy,
     39     Now,
     40     Origin,
     41     CommPageSize,
     42     MaxPageSize,
     43     Unknown
     44   };
     45 
     46  public:
     47   ZOption();
     48 
     49   explicit ZOption(Kind pKind);
     50 
     51   ZOption(Kind pKind, uint64_t pPageSize);
     52 
     53   Kind kind() const { return m_Kind; }
     54 
     55   void setKind(Kind pKind) { m_Kind = pKind; }
     56 
     57   uint64_t pageSize() const { return m_PageSize; }
     58 
     59   void setPageSize(uint64_t pPageSize) { m_PageSize = pPageSize; }
     60 
     61  private:
     62   Kind m_Kind;
     63   uint64_t m_PageSize;
     64 };
     65 
     66 }  // namespace mcld
     67 
     68 #endif  // MCLD_MC_ZOPTION_H_
     69