GeneralOptions.cpp revision d0fbbb227051be16931a1aa9b4a7722ac039c698
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_bNMagic(false), 47 m_bOMagic(false), 48 m_bStripDebug(false), 49 m_bExportDynamic(false), 50 m_bWarnSharedTextrel(false), 51 m_bBinaryInput(false), 52 m_bDefineCommon(false), 53 m_bFatalWarnings(false) 54{ 55} 56 57GeneralOptions::~GeneralOptions() 58{ 59} 60 61bool GeneralOptions::hasDefaultLDScript() const 62{ 63 return true; 64} 65 66const char* GeneralOptions::defaultLDScript() const 67{ 68 return NULL; 69} 70 71void GeneralOptions::setDefaultLDScript(const std::string& pFilename) 72{ 73} 74 75const mcld::sys::fs::Path& GeneralOptions::sysroot() const 76{ 77 return m_SearchDirs.sysroot(); 78} 79 80void GeneralOptions::setSysroot(const mcld::sys::fs::Path &pSysroot) 81{ 82 m_SearchDirs.setSysRoot(pSysroot); 83} 84 85void GeneralOptions::setSOName(const std::string& pName) 86{ 87 size_t pos = pName.find_last_of(sys::fs::separator); 88 if (std::string::npos == pos) 89 m_SOName = pName; 90 else 91 m_SOName = pName.substr(pos + 1); 92} 93 94void GeneralOptions::addZOption(const ZOption& pOption) 95{ 96 switch (pOption.kind()) { 97 case ZOption::CombReloc: 98 m_bCombReloc = true; 99 break; 100 case ZOption::NoCombReloc: 101 m_bCombReloc = false; 102 break; 103 case ZOption::Defs: 104 m_bNoUndefined = true; 105 break; 106 case ZOption::ExecStack: 107 m_ExecStack = YES; 108 break; 109 case ZOption::NoExecStack: 110 m_ExecStack = NO; 111 break; 112 case ZOption::InitFirst: 113 m_bInitFirst = true; 114 break; 115 case ZOption::InterPose: 116 m_bInterPose = true; 117 break; 118 case ZOption::LoadFltr: 119 m_bLoadFltr = true; 120 break; 121 case ZOption::MulDefs: 122 m_bMulDefs = true; 123 break; 124 case ZOption::NoCopyReloc: 125 m_bNoCopyReloc = true; 126 break; 127 case ZOption::NoDefaultLib: 128 m_bNoDefaultLib = true; 129 break; 130 case ZOption::NoDelete: 131 m_bNoDelete = true; 132 break; 133 case ZOption::NoDLOpen: 134 m_bNoDLOpen = true; 135 break; 136 case ZOption::NoDump: 137 m_bNoDump = true; 138 break; 139 case ZOption::NoRelro: 140 m_bRelro = false; 141 break; 142 case ZOption::Relro: 143 m_bRelro = true; 144 break; 145 case ZOption::Lazy: 146 m_bNow = false; 147 break; 148 case ZOption::Now: 149 m_bNow = true; 150 break; 151 case ZOption::Origin: 152 m_bOrigin = true; 153 break; 154 case ZOption::CommPageSize: 155 m_CommPageSize = pOption.pageSize(); 156 break; 157 case ZOption::MaxPageSize: 158 m_MaxPageSize = pOption.pageSize(); 159 break; 160 case ZOption::Unknown: 161 default: 162 assert(false && "Not a recognized -z option."); 163 break; 164 } 165} 166