Home | History | Annotate | Download | only in lib
      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 
     13 namespace {
     14 
     15 llvm::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 
     19 llvm::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 {
     25 llvm::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 
     29 llvm::cl::opt<bool> ArgEB("EB",
     30   llvm::cl::desc("Link big-endian objects. This affects the output format."),
     31   llvm::cl::init(false));
     32 
     33 llvm::cl::opt<bool> ArgEL("EL",
     34   llvm::cl::desc("Link little-endian objects. This affects the output format."),
     35   llvm::cl::init(false));
     36 
     37 llvm::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 
     45 using namespace mcld;
     46 
     47 //===----------------------------------------------------------------------===//
     48 // TargetControlOptions
     49 //===----------------------------------------------------------------------===//
     50 TargetControlOptions::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 
     59 bool 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