[cfe-dev] JIT fails linking to libc++ symbols...
Fons Rademakers
Fons.Rademakers at cern.ch
Tue Nov 19 14:12:51 PST 2013
Alas, removing this flag does not make any difference. JIT still fails to
link. Any other ideas on what might be going on?
Cheers, Fons.
On 19/11/2013 22:53, Fons Rademakers wrote:
> Ah, now I remember we build LLVM with the flag:
>
> --disable-visibility-inlines-hidden
>
> passed to ./configure, so there must be some interference. I'll try without
> this flag.
>
> Cheers, Fons.
>
>
> On 19/11/2013 21:28, Marshall Clow wrote:
>>
>> On Nov 18, 2013, at 2:13 PM, Fons Rademakers <Fons.Rademakers at cern.ch>
>> wrote:
>>
>>> Hi,
>>>
>>> since moving to OSX 10.9 with libc++ our code which uses the JIT to
>>> compile C++ code on the fly fails to link with certain libc++ symbols
>>> that are reported by nm to be of type t (small t, i.e. defined but not
>>> exported, if I understand correctly). So, why does the JITted code want
>>> to link with these symbols? How to avoid that or how to make these
>>> symbols available in one way or another. Prior with libstdc++ (on OSX
>>> and Linux) no problems.
>>>
>>> This are some of the symbols that fail linking:
>>>
>>> ExecutionContext: use of undefined symbol
>>> '_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE13get_allocatorEv'!
>>>
>>> ExecutionContext: use of undefined symbol
>>> '_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC1ERKS4_'!
>>> ExecutionContext: use of undefined symbol
>>> '_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4sizeEv'!
>>> ExecutionContext: use of undefined symbol
>>> '_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4dataEv'!
>>>
>>> That is:
>>>
>>> std::__1::basic_string<char, std::__1::char_traits<char>,
>>> std::__1::allocator<char> >::basic_string(std::__1::allocator<char> const&)
>>> std::__1::basic_string<char, std::__1::char_traits<char>,
>>> std::__1::allocator<char> >::size() const
>>> std::__1::basic_string<char, std::__1::char_traits<char>,
>>> std::__1::allocator<char> >::data() const
>>> std::__1::basic_string<char, std::__1::char_traits<char>,
>>> std::__1::allocator<char> >::get_allocator() const
>>
>> All of those routines are decorated in the header <string> with
>> "_LIBCPP_INLINE_VISIBILITY", which expands to
>> either: __attribute__ ((__always_inline__))
>> or: __forceinline
>> (depending on your compiler)
>>
>> Since they're supposed to be always inlined, it's not surprising that
>> they are not in the dylib.
>> A followup question would be: How/why are you generating calls to them,
>> as opposed to just inlining them?
>>
>> -- Marshall
>>
>> Marshall Clow Idio Software <mailto:mclow.lists at gmail.com>
>>
>> A.D. 1517: Martin Luther nails his 95 Theses to the church door and is
>> promptly moderated down to (-1, Flamebait).
>> -- Yu Suzuki
>>
>
>
>
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
>
--
Org: CERN, European Laboratory for Particle Physics.
Mail: 1211 Geneve 23, Switzerland
E-Mail: Fons.Rademakers at cern.ch Phone: +41 22 7679248
WWW: http://fons.rademakers.org Fax: +41 22 7669640
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 4161 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20131119/c9f12a94/attachment.bin>
More information about the cfe-dev
mailing list