GeneralOptions.cpp revision 22add6ff3426df1a85089fe6a6e1597ee3b6f300
1//===- GeneralOptions.cpp -------------------------------------------------===//
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#include <mcld/GeneralOptions.h>
10#include <mcld/MC/MCLDInput.h>
11
12using namespace mcld;
13
14//===----------------------------------------------------------------------===//
15// GeneralOptions
16//===----------------------------------------------------------------------===//
17GeneralOptions::GeneralOptions()
18  : m_pDefaultBitcode(NULL),
19    m_Verbose(-1),
20    m_MaxErrorNum(-1),
21    m_MaxWarnNum(-1),
22    m_ExecStack(Unknown),
23    m_CommPageSize(0x0),
24    m_MaxPageSize(0x0),
25    m_bCombReloc(true),
26    m_bNoUndefined(false),
27    m_bInitFirst(false),
28    m_bInterPose(false),
29    m_bLoadFltr(false),
30    m_bMulDefs(false),
31    m_bNoCopyReloc(false),
32    m_bNoDefaultLib(false),
33    m_bNoDelete(false),
34    m_bNoDLOpen(false),
35    m_bNoDump(false),
36    m_bRelro(false),
37    m_bNow(false),
38    m_bOrigin(false),
39    m_bTrace(false),
40    m_Bsymbolic(false),
41    m_Bgroup(false),
42    m_bPIE(false),
43    m_bColor(true),
44    m_bAllowShlibUndefined(true),
45    m_bCreateEhFrameHdr(false),
46    m_NMagic(false),
47    m_OMagic(false),
48    m_StripDebug(false),
49    m_ExportDynamic(false),
50    m_WarnSharedTextrel(false)
51{
52}
53
54GeneralOptions::~GeneralOptions()
55{
56}
57
58bool GeneralOptions::hasDefaultLDScript() const
59{
60  return true;
61}
62
63const char* GeneralOptions::defaultLDScript() const
64{
65  return NULL;
66}
67
68void GeneralOptions::setDefaultLDScript(const std::string& pFilename)
69{
70}
71
72const mcld::sys::fs::Path& GeneralOptions::sysroot() const
73{
74  return m_SearchDirs.sysroot();
75}
76
77void GeneralOptions::setSysroot(const mcld::sys::fs::Path &pSysroot)
78{
79  m_SearchDirs.setSysRoot(pSysroot);
80}
81
82void GeneralOptions::setSOName(const std::string& pName)
83{
84  size_t pos = pName.find_last_of(sys::fs::separator);
85  if (std::string::npos == pos)
86    m_SOName = pName;
87  else
88    m_SOName = pName.substr(pos + 1);
89}
90
91void GeneralOptions::addZOption(const ZOption& pOption)
92{
93  switch (pOption.kind()) {
94    case ZOption::CombReloc:
95      m_bCombReloc = true;
96      break;
97    case ZOption::NoCombReloc:
98      m_bCombReloc = false;
99      break;
100    case ZOption::Defs:
101      m_bNoUndefined = true;
102      break;
103    case ZOption::ExecStack:
104      m_ExecStack = YES;
105      break;
106    case ZOption::NoExecStack:
107      m_ExecStack = NO;
108      break;
109    case ZOption::InitFirst:
110      m_bInitFirst = true;
111      break;
112    case ZOption::InterPose:
113      m_bInterPose = true;
114      break;
115    case ZOption::LoadFltr:
116      m_bLoadFltr = true;
117      break;
118    case ZOption::MulDefs:
119      m_bMulDefs = true;
120      break;
121    case ZOption::NoCopyReloc:
122      m_bNoCopyReloc = true;
123      break;
124    case ZOption::NoDefaultLib:
125      m_bNoDefaultLib = true;
126      break;
127    case ZOption::NoDelete:
128      m_bNoDelete = true;
129      break;
130    case ZOption::NoDLOpen:
131      m_bNoDLOpen = true;
132      break;
133    case ZOption::NoDump:
134      m_bNoDump = true;
135      break;
136    case ZOption::NoRelro:
137      m_bRelro = false;
138      break;
139    case ZOption::Relro:
140      m_bRelro = true;
141      break;
142    case ZOption::Lazy:
143      m_bNow = false;
144      break;
145    case ZOption::Now:
146      m_bNow = true;
147      break;
148    case ZOption::Origin:
149      m_bOrigin = true;
150      break;
151    case ZOption::CommPageSize:
152      m_CommPageSize = pOption.pageSize();
153      break;
154    case ZOption::MaxPageSize:
155      m_MaxPageSize = pOption.pageSize();
156      break;
157    case ZOption::Unknown:
158    default:
159      assert(false && "Not a recognized -z option.");
160      break;
161  }
162}
163