Boost logo

Boost Users :

Subject: Re: [Boost-users] Catching boost::thread_interrupted
From: Othman, Ossama (ossama.othman_at_[hidden])
Date: 2008-09-08 16:43:55


Hi,

>>> Boost does not use __attribute__ ((visibility("default"))), therefore
>>> typeinfo for exceptions is not exported and you can't catch exceptions
>>> thrown by boost.
>>
>> Please forgive me if this is a stupid question:
>>
>> Is that a bug or a feature? Wouldn't it be good to be able to catch
>> exceptions thrown by boost?
>
>I'm not sure I understand. Have you built Boost with an
>additional -fvisibility-hidden parameter? If you didn't, the default
>visibility should be the appropriately named "default", should it not? What
>effect would __attribute__ ((visibility("default"))) then have?

Even if boost is compiled with default visibility, Roland's compile is still going to see it has hidden since the class declaration in question (boost::thread_interrupted) hasn't been explicitly exported in the g++ symbol visibility-enabled case.

Roland, you should be able to work around the lack of g++ symbol visibility support in boost::thread by wrapping your boost #include<>s with the appropriate pragmas, e.g:

#pragma GCC visibility push(default)
#include <boost/...>
#include <boost/...>
#pragma GCC visibility pop

It's ugly, but it should get you going until the g++ symbol visibility issues in boost::thread are addressed.

HTH,
-Ossama


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net