1//===- TargetControlOptions.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/TargetControlOptions.h> 10#include <mcld/LinkerConfig.h> 11#include <mcld/Support/MsgHandling.h> 12 13namespace { 14 15llvm::cl::opt<int> ArgGPSize("G", 16 llvm::cl::desc("Set the maximum size of objects to be optimized using GP"), 17 llvm::cl::init(8)); 18 19llvm::cl::opt<bool> ArgWarnSharedTextrel("warn-shared-textrel", 20 llvm::cl::ZeroOrMore, 21 llvm::cl::desc("Warn if adding DT_TEXTREL in a shared object."), 22 llvm::cl::init(false)); 23 24// Not supported yet { 25llvm::cl::opt<bool> ArgFIXCA8("fix-cortex-a8", 26 llvm::cl::desc("Enable Cortex-A8 Thumb-2 branch erratum fix"), 27 llvm::cl::init(false)); 28 29llvm::cl::opt<bool> ArgEB("EB", 30 llvm::cl::desc("Link big-endian objects. This affects the output format."), 31 llvm::cl::init(false)); 32 33llvm::cl::opt<bool> ArgEL("EL", 34 llvm::cl::desc("Link little-endian objects. This affects the output format."), 35 llvm::cl::init(false)); 36 37llvm::cl::opt<bool> ArgSVR4Compatibility("Qy", 38 llvm::cl::desc("This option is ignored for SVR4 compatibility"), 39 llvm::cl::init(false)); 40 41// } Not supported yet 42 43} // anonymous namespace 44 45using namespace mcld; 46 47//===----------------------------------------------------------------------===// 48// TargetControlOptions 49//===----------------------------------------------------------------------===// 50TargetControlOptions::TargetControlOptions() 51 : m_GPSize(ArgGPSize), 52 m_WarnSharedTextrel(ArgWarnSharedTextrel), 53 m_FIXCA8(ArgFIXCA8), 54 m_EB(ArgEB), 55 m_EL(ArgEL), 56 m_SVR4Compatibility(ArgSVR4Compatibility) { 57} 58 59bool TargetControlOptions::parse(LinkerConfig& pConfig) 60{ 61 // set -G [size] 62 pConfig.options().setGPSize(m_GPSize); 63 64 // set --warn-shared-textrel 65 pConfig.options().setWarnSharedTextrel(m_WarnSharedTextrel); 66 67 // set --fix-cortex-a8 68 if (m_FIXCA8) 69 mcld::warning(mcld::diag::warn_unsupported_option) << m_FIXCA8.ArgStr; 70 71 return true; 72} 73 74