Boost logo

Boost :

Subject: Re: [boost] [system] symbol visibility and GCC vs. Clang
From: Mathias Gaunard (mathias.gaunard_at_[hidden])
Date: 2012-10-23 07:39:49


On 22/10/12 23:29, James Walker wrote:
> When trying to link a bunch of libraries on OS X, I got this linker
> warning:
>
> ld: warning: direct access in
> boost::system::system_error::~system_error() to global weak symbol
> vtable for boost::system::system_error means the weak symbol cannot be
> overridden at runtime. This was likely caused by different translation
> units being compiled with different visibility settings.
>
> As far as I can tell, everything is compiled using the flags
> -fvisibility=hidden -fvisibility-inlines-hidden.
>
> I'm wondering whether the problem is that some of the libraries were
> built using gcc and some were built using Clang. In
> boost/system/system_error.hpp, the declaration of
> boost::system::system_error is decorated with BOOST_SYMBOL_VISIBLE. In
> boost/config/compiler/gcc.hpp, BOOST_SYMBOL_VISIBLE is defined to be
> __attribute__((visibility("default"))), whereas
> boost/config/compiler/clang.hpp does not define BOOST_SYMBOL_VISIBLE.

This looks like a significant bug, POSIX-style symbol visibility doesn't
work with Clang.
Please file a ticket.

Forwarding to developers mailing list.


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk