bool DynamicSectionOptions::parse(LinkerConfig& pConfig, LinkerScript& pScript) { // set up entry point from -e pScript.setEntry(m_Entry); // --Bsymbolic pConfig.options().setBsymbolic(m_Bsymbolic); // --Bgroup pConfig.options().setBgroup(m_Bgroup); // set --soname [soname] pConfig.options().setSOName(m_SOName); // set -z options llvm::cl::list<ZOption>::iterator zOpt; llvm::cl::list<ZOption>::iterator zOptEnd = m_ZOptionList.end(); for (zOpt = m_ZOptionList.begin(); zOpt != zOptEnd; ++zOpt) { pConfig.options().addZOption(*zOpt); } // set --no-undefined if (llvm::cl::BOU_UNSET != m_NoUndefined) pConfig.options().setNoUndefined(llvm::cl::BOU_TRUE == m_NoUndefined); // set --allow-multiple-definition if (llvm::cl::BOU_UNSET != m_AllowMulDefs) pConfig.options().setMulDefs(llvm::cl::BOU_TRUE == m_AllowMulDefs); // set --dynamic-linker [dyld] pConfig.options().setDyld(m_Dyld); // set --enable-new-dtags pConfig.options().setNewDTags(m_EnableNewDTags); // set --auxiliary, -f llvm::cl::list<std::string>::iterator aux; llvm::cl::list<std::string>::iterator auxEnd = m_Auxiliary.end(); for (aux = m_Auxiliary.begin(); aux != auxEnd; ++aux) pConfig.options().getAuxiliaryList().push_back(*aux); // set --filter, -F pConfig.options().setFilter(m_Filter); return true; }