//===- TargetControlOptions.cpp -------------------------------------------===// // // The MCLinker Project // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #include <mcld/TargetControlOptions.h> #include <mcld/LinkerConfig.h> #include <mcld/Support/MsgHandling.h> namespace { llvm::cl::opt<int> ArgGPSize("G", llvm::cl::desc("Set the maximum size of objects to be optimized using GP"), llvm::cl::init(8)); llvm::cl::opt<bool> ArgWarnSharedTextrel("warn-shared-textrel", llvm::cl::ZeroOrMore, llvm::cl::desc("Warn if adding DT_TEXTREL in a shared object."), llvm::cl::init(false)); // Not supported yet { llvm::cl::opt<bool> ArgFIXCA8("fix-cortex-a8", llvm::cl::desc("Enable Cortex-A8 Thumb-2 branch erratum fix"), llvm::cl::init(false)); llvm::cl::opt<bool> ArgEB("EB", llvm::cl::desc("Link big-endian objects. This affects the output format."), llvm::cl::init(false)); llvm::cl::opt<bool> ArgEL("EL", llvm::cl::desc("Link little-endian objects. This affects the output format."), llvm::cl::init(false)); llvm::cl::opt<bool> ArgSVR4Compatibility("Qy", llvm::cl::desc("This option is ignored for SVR4 compatibility"), llvm::cl::init(false)); // } Not supported yet } // anonymous namespace using namespace mcld; //===----------------------------------------------------------------------===// // TargetControlOptions //===----------------------------------------------------------------------===// TargetControlOptions::TargetControlOptions() : m_GPSize(ArgGPSize), m_WarnSharedTextrel(ArgWarnSharedTextrel), m_FIXCA8(ArgFIXCA8), m_EB(ArgEB), m_EL(ArgEL), m_SVR4Compatibility(ArgSVR4Compatibility) { } bool TargetControlOptions::parse(LinkerConfig& pConfig) { // set -G [size] pConfig.options().setGPSize(m_GPSize); // set --warn-shared-textrel pConfig.options().setWarnSharedTextrel(m_WarnSharedTextrel); // set --fix-cortex-a8 if (m_FIXCA8) mcld::warning(mcld::diag::warn_unsupported_option) << m_FIXCA8.ArgStr; return true; }