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


>>> 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.


Boost-users list run by williamkempf at, kalb at, bjorn.karlsson at, gregod at, wekempf at