1affc150dc44fab1911775a49636d0ce85333b634Zonr Chang//===- ZOption.h ----------------------------------------------------------===//
2affc150dc44fab1911775a49636d0ce85333b634Zonr Chang//
3affc150dc44fab1911775a49636d0ce85333b634Zonr Chang//                     The MCLinker Project
4affc150dc44fab1911775a49636d0ce85333b634Zonr Chang//
5affc150dc44fab1911775a49636d0ce85333b634Zonr Chang// This file is distributed under the University of Illinois Open Source
6affc150dc44fab1911775a49636d0ce85333b634Zonr Chang// License. See LICENSE.TXT for details.
7affc150dc44fab1911775a49636d0ce85333b634Zonr Chang//
8affc150dc44fab1911775a49636d0ce85333b634Zonr Chang//===----------------------------------------------------------------------===//
9affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#ifndef MCLD_ZOPTION_H
10affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#define MCLD_ZOPTION_H
11affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#ifdef ENABLE_UNITTEST
12affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <gtest.h>
13affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#endif
14affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <llvm/Support/DataTypes.h>
15affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
16affc150dc44fab1911775a49636d0ce85333b634Zonr Changnamespace mcld
17affc150dc44fab1911775a49636d0ce85333b634Zonr Chang{
18affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
19affc150dc44fab1911775a49636d0ce85333b634Zonr Chang/** \class ZOption
20affc150dc44fab1911775a49636d0ce85333b634Zonr Chang *  \brief The -z options for GNU ld compatibility.
21affc150dc44fab1911775a49636d0ce85333b634Zonr Chang */
22affc150dc44fab1911775a49636d0ce85333b634Zonr Changclass ZOption
23affc150dc44fab1911775a49636d0ce85333b634Zonr Chang{
24affc150dc44fab1911775a49636d0ce85333b634Zonr Changpublic:
25affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  enum Kind {
26affc150dc44fab1911775a49636d0ce85333b634Zonr Chang    CombReloc,
27affc150dc44fab1911775a49636d0ce85333b634Zonr Chang    NoCombReloc,
28affc150dc44fab1911775a49636d0ce85333b634Zonr Chang    Defs,
29affc150dc44fab1911775a49636d0ce85333b634Zonr Chang    ExecStack,
30affc150dc44fab1911775a49636d0ce85333b634Zonr Chang    NoExecStack,
31affc150dc44fab1911775a49636d0ce85333b634Zonr Chang    InitFirst,
32affc150dc44fab1911775a49636d0ce85333b634Zonr Chang    InterPose,
33affc150dc44fab1911775a49636d0ce85333b634Zonr Chang    LoadFltr,
34affc150dc44fab1911775a49636d0ce85333b634Zonr Chang    MulDefs,
35affc150dc44fab1911775a49636d0ce85333b634Zonr Chang    NoCopyReloc,
36affc150dc44fab1911775a49636d0ce85333b634Zonr Chang    NoDefaultLib,
37affc150dc44fab1911775a49636d0ce85333b634Zonr Chang    NoDelete,
38affc150dc44fab1911775a49636d0ce85333b634Zonr Chang    NoDLOpen,
39affc150dc44fab1911775a49636d0ce85333b634Zonr Chang    NoDump,
40affc150dc44fab1911775a49636d0ce85333b634Zonr Chang    Relro,
41affc150dc44fab1911775a49636d0ce85333b634Zonr Chang    NoRelro,
42affc150dc44fab1911775a49636d0ce85333b634Zonr Chang    Lazy,
43affc150dc44fab1911775a49636d0ce85333b634Zonr Chang    Now,
44affc150dc44fab1911775a49636d0ce85333b634Zonr Chang    Origin,
45affc150dc44fab1911775a49636d0ce85333b634Zonr Chang    CommPageSize,
46affc150dc44fab1911775a49636d0ce85333b634Zonr Chang    MaxPageSize,
47affc150dc44fab1911775a49636d0ce85333b634Zonr Chang    Unknown
48affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  };
49affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
50affc150dc44fab1911775a49636d0ce85333b634Zonr Changpublic:
51affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  ZOption();
52affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
53affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  ~ZOption();
54affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
55affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  Kind kind() const
56affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  { return m_Kind; }
57affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
58affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  uint64_t pageSize() const
59affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  { return m_PageSize; }
60affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
61affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  void setKind(Kind pKind)
62affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  { m_Kind = pKind; }
63affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
64affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  void setPageSize(uint64_t pPageSize)
65affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  { m_PageSize = pPageSize; }
66affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
67affc150dc44fab1911775a49636d0ce85333b634Zonr Changprivate:
68affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  Kind m_Kind;
69affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  uint64_t m_PageSize;
70affc150dc44fab1911775a49636d0ce85333b634Zonr Chang};
71affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
72affc150dc44fab1911775a49636d0ce85333b634Zonr Chang} // namespace of mcld
73affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
74affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#endif
75affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
76