This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: -fvisibility=hidden vs. typeinfo


On 29 June 2015 at 09:58, Avi Kivity wrote:
> I have some code that looks like
>
>   void some_function() throw (std::out_of_range) {
>       ... call to std::map<>::at() which throws out_out_range
>   }
>
> if I compile with -fvisibility=hidden, this code calls terminate(). My
> suspicion is that I ended up with two copies of the typeinfo block for
> std::out_of_range; one used by std::__throw_out_of_range() in libstdc++, and
> another in the guard code generated by the compiler.  Since they don't
> match, the guard block terminates.
>
> Is this correct?  If so, is this a bug in libstdc++, or the compiler (or the
> linker)?  If not, what can I do to fix this?
>
> I wasn't able to generate a self contained test case quickly, but if there's
> no other way, I'll invest more effort into it.

I think this is supposed to work, because type matching should be done
using typeinfo names not just the identity of the typeinfo obejcts.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]