<div style="line-height:1.7;color:#000000;font-size:14px;font-family:arial">HiŁ¬All<br>this one pass that will use the Linker<br>namespace {<br>  // Hello2 - The second implementation with getAnalysisUsage implemented.<br>  llvm::StringRef programNametest("");<br>  struct Hello2 : public ModulePass {<br>    static char ID; // Pass identification, replacement for typeid<br>    Hello2() : ModulePass(ID) {}<br><br>    virtual bool runOnModule(llvm::Module &M){<br>      llvm::Linker *linkertest = new llvm::Linker(programNametest,&M);<br>      llvm::errs() << linkertest->getModule();<br>      ++HelloCounter;<br>      errs() << "Hello: ";<br>      return false;<br>    }<br><br>    // We don't modify the program, so we preserve all analyses<br>    virtual void getAnalysisUsage(AnalysisUsage &AU) const {<br>      AU.setPreservesAll();<br>    }<br>  };<br>}<br><br>char Hello2::ID = 0;<br>static RegisterPass<Hello2><br>Y1("hello2", "Hello World Pass (with getAnalysisUsage implemented)");<br><br>But ,when i run the  pass with opt, there will be a Error:<br>./bin/opt: symbol lookup error: ./lib/Hello.so: undefined symbol: _ZN4llvm6Linker11LinkModulesEPNS_6ModuleES2_jPSs<br>by the c++filt, the function name is :<br>llvm::Linker::LinkModules(llvm::Module*, llvm::Module*, unsigned int, std::basic_string<char, std::char_traits<char>, std::allocator<char> >*)<br>So I think, may I should  Modify the cmake, I want to know how to modify the files of  cmake, so that i can complier the pass with Linker.<br>Thank. <br><br></div><br><br><span title="neteasefooter"><span id="netease_mail_footer"></span></span>