-fvisibility=hidden vs. extern "C"

Jason Merrill jason@redhat.com
Fri Jul 21 17:51:00 GMT 2006


Jason Merrill wrote:
> Jakub Jelinek wrote:
>> In the eh_personality.ii you posted with -fvisibility the prototype
>> of __gxx_personality_v0 is marked with default visibility (as it is
>> surrounded by #pragma GCC visibility {push(default), pop} pair),
>> but the actual definition is not marked in any way.  As it is a 
>> definition,
>> -fvisibility=hidden causes its visibility to be specified to hidden,
>> and as hidden is stronger visibility than default, hidden wins.
> 
> Hmm, this shouldn't happen; if the prototype has explicit visibility it 
> should override -fvisibility.

Ah, I see what the problem is.  The prototype is in __cxxabiv1 and the 
definition is in the global namespace, so they don't get combined.  One 
or the other should move; I'd probably move the definition into the 
namespace.

Jason



More information about the Libstdc++ mailing list