GeneralOptions.cpp revision f33f6de54db174aa679a4b6d1e040d37e95541c0
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/Input.h> 11#include <mcld/MC/ZOption.h> 12 13using namespace mcld; 14 15//===----------------------------------------------------------------------===// 16// GeneralOptions 17//===----------------------------------------------------------------------===// 18GeneralOptions::GeneralOptions() 19 : m_pDefaultBitcode(NULL), 20 m_Verbose(-1), 21 m_MaxErrorNum(-1), 22 m_MaxWarnNum(-1), 23 m_ExecStack(Unknown), 24 m_NoUndefined(Unknown), 25 m_MulDefs(Unknown), 26 m_CommPageSize(0x0), 27 m_MaxPageSize(0x0), 28 m_bCombReloc(true), 29 m_bInitFirst(false), 30 m_bInterPose(false), 31 m_bLoadFltr(false), 32 m_bNoCopyReloc(false), 33 m_bNoDefaultLib(false), 34 m_bNoDelete(false), 35 m_bNoDLOpen(false), 36 m_bNoDump(false), 37 m_bRelro(false), 38 m_bNow(false), 39 m_bOrigin(false), 40 m_bTrace(false), 41 m_Bsymbolic(false), 42 m_Bgroup(false), 43 m_bPIE(false), 44 m_bColor(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 m_bNewDTags(false), 55 m_bNoStdlib(false), 56 m_bWarnMismatch(true), 57 m_bGCSections(false), 58 m_bGenUnwindInfo(true), 59 m_GPSize(8), 60 m_StripSymbols(KeepAllSymbols), 61 m_HashStyle(SystemV) { 62} 63 64GeneralOptions::~GeneralOptions() 65{ 66} 67 68void GeneralOptions::setSOName(const std::string& pName) 69{ 70 size_t pos = pName.find_last_of(sys::fs::separator); 71 if (std::string::npos == pos) 72 m_SOName = pName; 73 else 74 m_SOName = pName.substr(pos + 1); 75} 76 77void GeneralOptions::addZOption(const ZOption& pOption) 78{ 79 switch (pOption.kind()) { 80 case ZOption::CombReloc: 81 m_bCombReloc = true; 82 break; 83 case ZOption::NoCombReloc: 84 m_bCombReloc = false; 85 break; 86 case ZOption::Defs: 87 m_NoUndefined = YES; 88 break; 89 case ZOption::ExecStack: 90 m_ExecStack = YES; 91 break; 92 case ZOption::NoExecStack: 93 m_ExecStack = NO; 94 break; 95 case ZOption::InitFirst: 96 m_bInitFirst = true; 97 break; 98 case ZOption::InterPose: 99 m_bInterPose = true; 100 break; 101 case ZOption::LoadFltr: 102 m_bLoadFltr = true; 103 break; 104 case ZOption::MulDefs: 105 m_MulDefs = YES; 106 break; 107 case ZOption::NoCopyReloc: 108 m_bNoCopyReloc = true; 109 break; 110 case ZOption::NoDefaultLib: 111 m_bNoDefaultLib = true; 112 break; 113 case ZOption::NoDelete: 114 m_bNoDelete = true; 115 break; 116 case ZOption::NoDLOpen: 117 m_bNoDLOpen = true; 118 break; 119 case ZOption::NoDump: 120 m_bNoDump = true; 121 break; 122 case ZOption::NoRelro: 123 m_bRelro = false; 124 break; 125 case ZOption::Relro: 126 m_bRelro = true; 127 break; 128 case ZOption::Lazy: 129 m_bNow = false; 130 break; 131 case ZOption::Now: 132 m_bNow = true; 133 break; 134 case ZOption::Origin: 135 m_bOrigin = true; 136 break; 137 case ZOption::CommPageSize: 138 m_CommPageSize = pOption.pageSize(); 139 break; 140 case ZOption::MaxPageSize: 141 m_MaxPageSize = pOption.pageSize(); 142 break; 143 case ZOption::Unknown: 144 default: 145 assert(false && "Not a recognized -z option."); 146 break; 147 } 148} 149