Hi, I am trying to add a pass inn LLVM, and I actually want to add it in source code, not just directly into object code. For that I included the lines in my file MyAna.cpp (llvm-2.6/lib/ana/MyAna.cpp) char MyAna::ID = 0; static RegisterPass<MyAna> X("my-aa","My Analysis"); static RegisterAnalysisGroup<AliasAnalysis> Y(X); ModulePass *llvm::createMyAnaPass() { return new MyAna(); } I also included createMyAnaPass() in Passes.h and LinkAllPasses.h But when I do make I get the following error : /home/ambika/llvm/llvm-obj/tools/opt/Release/opt.o: In function `global constructors keyed to opt.cpp': opt.cpp:(.text+0x1e89): undefined reference to `llvm::createMyAnaPass()' Am I missing out something. Please help me. thanks and regards, Ambika
ambika at cse.iitb.ac.in wrote:> Hi, > > I am trying to add a pass inn LLVM, and I actually want to add it in > source code, not just directly into object code. > > For that I included the lines in my file MyAna.cpp > (llvm-2.6/lib/ana/MyAna.cpp) > > > char MyAna::ID = 0; > static RegisterPass<MyAna> X("my-aa","My Analysis"); > static RegisterAnalysisGroup<AliasAnalysis> Y(X); > > ModulePass *llvm::createMyAnaPass() { return new MyAna(); } > > > I also included createMyAnaPass() in Passes.h and LinkAllPasses.h > But when I do make I get the following error : > > /home/ambika/llvm/llvm-obj/tools/opt/Release/opt.o: In function `global > constructors keyed to opt.cpp': > opt.cpp:(.text+0x1e89): undefined reference to `llvm::createMyAnaPass()' > > > Am I missing out something. >Have you modified the Makefile in tools/opt to link in the library containing your pass? Your pass doesn't appear to be placed in libAnalysis or libTransform, so you'll need to modify the opt Makefile to link in whatever your library's name is. -- John T.> Please help me. > > thanks and regards, > Ambika > > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >
Thanks that helped me out. But now I am facing one more problem. It says : ‘llvm::ModulePass* llvm::createMyAnaPass()’ should have been declared inside ‘llvm’ but I can find no place to declare it. Where should I do it. John Criswell wrote:> ambika at cse.iitb.ac.in wrote: >> Hi, >> >> I am trying to add a pass inn LLVM, and I actually want to add it in >> source code, not just directly into object code. >> >> For that I included the lines in my file MyAna.cpp >> (llvm-2.6/lib/ana/MyAna.cpp) >> >> >> char MyAna::ID = 0; >> static RegisterPass<MyAna> X("my-aa","My Analysis"); >> static RegisterAnalysisGroup<AliasAnalysis> Y(X); >> >> ModulePass *llvm::createMyAnaPass() { return new MyAna(); } >> >> >> I also included createMyAnaPass() in Passes.h and LinkAllPasses.h >> But when I do make I get the following error : >> >> /home/ambika/llvm/llvm-obj/tools/opt/Release/opt.o: In function `global >> constructors keyed to opt.cpp': >> opt.cpp:(.text+0x1e89): undefined reference to `llvm::createMyAnaPass()' >> >> >> Am I missing out something. > Have you modified the Makefile in tools/opt to link in the library > containing your pass? Your pass doesn't appear to be placed in > libAnalysis or libTransform, so you'll need to modify the opt Makefile > to link in whatever your library's name is. > > -- John T. > >> Please help me. >> >> thanks and regards, >> Ambika >> >> _______________________________________________ >> LLVM Developers mailing list >> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >