[LLVMdev] How to link the right libraries?
Chris Lattner
sabre at nondot.org
Mon May 1 13:43:06 PDT 2006
On Mon, 1 May 2006, Fernando Magno Quintao Pereira wrote:
> Hello, llvmers. Could someone explain me a little about the opt tool? I am
> having problems to load a MachineFunctionPass using opt. I have this pass:
MachineFunctionPass's cannot be used as part of opt, they can only be used
as part of LLC. Further, you have to explicitly modify the target you are
interested in to add it to the pass manager for that target.
What are you trying to do that requires a machine function pass?
-Chris
> #include "llvm/Pass.h"
> #include "llvm/Function.h"
> #include "llvm/CodeGen/MachineFunctionPass.h"
> #include <iostream>
> using namespace llvm;
>
> namespace {
> struct MacFoo : public MachineFunctionPass {
> virtual bool runOnMachineFunction(MachineFunction &Fn) {
> std::cerr << " calling run machine function.\n";
> return false;
> }
> virtual void getAnalysisUsage(AnalysisUsage &AU) const {
> AU.setPreservesAll();
> }
> virtual const char *getPassName() const {
> return "run on machine function";
> }
> };
> RegisterOpt<MacFoo> Z("allocpty", "Register Allocation Prototype Pass");
>
> struct FuncFoo : public FunctionPass {
> virtual bool runOnFunction(Function &F) {
> std::cerr << "Function name: " << F.getName() << "\n";
> return false;
> }
> virtual void getAnalysisUsage(AnalysisUsage &AU) const {
> AU.setPreservesAll();
> }
> };
> RegisterOpt<FuncFoo> X("funcPass", "Hello World Pass");
> }
>
> When I call:
>
> $> opt -load ../../../../llvm/Debug/lib/LLVMTest.so -funcPass < hello.bc >
> /dev/null
>
> It works fine; when I try the machineFunctionPass class, it goes like
> this:
>
> $> opt -load ../../../../llvm/Debug/lib/LLVMTest.so -allocpty < hello.bc >
> /dev/null
>
> "opt: error while loading shared libraries:
> ../../../../llvm/Debug/lib/LLVMTest.so: undefined symbol:
> _ZN4llvm15MachineFunction3getEPKNS_8FunctionE"
>
> I would really appreciate if someone could tell me which files do I have
> to link to make the 'allocpty' to work. My Makefile is this:
>
> LEVEL = ../../.. # points to $HOME/llvm
> LIBRARYNAME = LLVMTest
> SHARED_LIBRARY = 1
> LOADABLE_MODULE = 1
>
> include $(LEVEL)/Makefile.common
>
> warm regards,
>
> Fernando
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
-Chris
--
http://nondot.org/sabre/
http://llvm.org/
More information about the llvm-dev
mailing list