[LLVMdev] Heads Up: libLLVMCore.a and loadable modules

John T. Criswell criswell at cs.uiuc.edu
Thu Jun 22 16:45:43 PDT 2006


Reid Spencer wrote:

>There are some bugs against it that state the current progress. The
>problem is that it depends on how the libraries are being used. Even if
>you get past the linking problems, you will end up with re-registration
>of passes and options, etc., which causes asserts.  So, for now, there
>aren't many good solutions.
>  
>
Is it possible to link opt and analyze with VMCore.o and use libVMcore.a 
with everything else?

Also, do you know the PR# for the issue or the topics of any threads 
about it?  I get the feeling I'm asking a lot of already asked questions.

-- John T.

>Reid.
>
>On Thu, 2006-06-22 at 17:21 -0500, John Criswell wrote:
>  
>
>>Has anything been done about this issue since Reid first mentioned it?  
>>I think I'm getting bitten by it.
>>
>>-- John T.
>>
>>Reid Spencer wrote:
>>
>>    
>>
>>>The recent change in the library structure to make libLLVMCore.a instead
>>>of LLVMCore.o has caused a little fallout. The problem is LLVM tools
>>>that take a --load option to load a module dynamically may now cause
>>>those modules to fail to load at runtime. This occurs because the tool
>>>with the --load option might not be linking in all of libLLVMCore.a, but
>>>only the object modules actually needed by that tool. Consequently, a
>>>module that uses something not linked into the tool will fail to link at
>>>runtime loading.
>>>
>>>For example, Yorion experienced this problem when he wrote a shared
>>>library module that depends on DbgStopPoint which is in
>>>IntrinsicInst.cpp.  His module links fine, but when it is loaded into
>>>"opt" it fails to resolve the DbgStopPoint symbols he uses. That's
>>>because the opt program doesn't use DbgStopPoint and so those symbols
>>>are now missing because opt linked with libLLVMCore.a instead of
>>>LLVMCore.o. 
>>>
>>>Simply linking the shared library module with libLLVMCore. a doesn't
>>>help because then you get things like AsmWriterPass being registered
>>>multiple times (once from opt and once from the shared lib being
>>>loaded).
>>>
>>>The only solution Yorion and I found was to copy the IntrinsicInst.cpp
>>>code out of lib/VMCore and into his own area where it could be compiled
>>>and linked directly into his module.
>>>
>>>There may be other things that are not linked into tools like opt any
>>>more that might cause similar problems for loadable modules. 
>>>
>>>I'll file a PR on this.
>>>
>>>Reid. 
>>>  
>>>------------------------------------------------------------------------
>>>
>>>_______________________________________________
>>>LLVM Developers mailing list
>>>LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>>>http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>>  
>>>      
>>>
>>_______________________________________________
>>LLVM Developers mailing list
>>LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>>http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>    
>>
>>------------------------------------------------------------------------
>>
>>_______________________________________________
>>LLVM Developers mailing list
>>LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>>http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>    
>>




More information about the llvm-dev mailing list