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