[LLVMdev] LoopPass symbol error

Giacomo Tagliabue giacomo.tag at gmail.com
Thu May 9 09:56:14 PDT 2013


Wow, commenting those two lines worked out fine for me, thanks!


On 9 May 2013 09:34, Giacomo Tagliabue <giacomo.tag at gmail.com> wrote:

> Thanks,
> Also, every method inherited by LoopBase causes the same error, while Loop
> methods go smooth.
>
>
> On 9 May 2013 01:05, Andrew Trick <atrick at apple.com> wrote:
>
>>
>> On May 8, 2013, at 7:43 PM, Giacomo Tagliabue <giacomo.tag at gmail.com>
>> wrote:
>>
>>  Hello,
>> I am building a loop pass following these instructions:
>> http://llvm.org/docs/WritingAnLLVMPass.html
>> Everything works fine, I did it many times for Function Passes, but in
>> the runOnLoopmethod, whenever I call a method of the loop L passed as
>> argument, for example L->begin(), I get the following error:
>>
>> opt: symbol lookup error:
>>> /home/giacomo/llvmcsfv/Debug+Asserts/lib/Acsl.so: undefined symbol:
>>> _ZNK4llvm8LoopBaseINS_10BasicBlockENS_4LoopEE5beginEv
>>
>>
>> Where Acsl is the name of the loadable module. If I remove all the
>> instructions from runOnPass but a debug print, it works fine (it prints
>> it), so the problem is not the module.
>> Does anybody have any Idea?
>> Thank you very much,
>> Giacomo
>>
>>
>> I'm not sure why your dynamic linker looks in Acsl.so.
>> llvm::LoopBase<llvm::BasicBlock, llvm::Loop>::begin() is explicitly
>> instantiated in LoopInfo.cpp. With a debug build on darwin, that symbol is
>> undefined in my dynamically loaded module, but exported by the opt binary.
>> So a dynamically loaded loop pass as you described works fine for me.
>>
>> Someone else should try this on linux with shared libs.
>>
>> You can also try removing these lines from LoopInfo.h, which seem
>> superfluous to me:
>>
>> __extension__ extern template class LoopBase<BasicBlock, Loop>;
>> __extension__ extern template class LoopInfoBase<BasicBlock, Loop>;
>>
>> -Andy
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130509/453eae21/attachment.html>


More information about the llvm-dev mailing list