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