http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51813
--- Comment #7 from Jason Merrill <jason at gcc dot gnu.org> 2012-01-13 16:52:41 UTC --- The right answer would seem to be wrapping includes of C headers in #pragma GCC visibility push/pop, like many of the libsupc++ headers do. But I'm not sure why the compiler wants to emit a .hidden directive for this symbol but not other hidden externs; I'll look into that.