unexpected hidden symbol in gcc 4.0.0
Daniel Jacobowitz
drow@false.org
Fri May 13 22:45:00 GMT 2005
On Fri, May 13, 2005 at 05:33:21PM -0400, Paul Koning wrote:
> I ran into link errors complaining about references to hidden symbol
> _Unwind_GetIP from a DSO.
>
> It turns out unwind-dw2.c is compiled with -fvisibility=hidden for the
> static library case (but not for the shared library case).
>
> In my link, I was using the libgcc.a (for that particular platform I
> don't use libgcc.so). So the linker complained.
>
> The documentation for -fvisibility=hidden suggets that this switch is
> useful for shared libraries, to make things smaller and faster. It
> doesn't seem to be appropriate for object libraries.
>
> I suppose I can override the "hidden" attribute for that one symbol,
> or change Makefiles so that switch isn't put there, but I'm wondering
> why this change and why the mismatch between usage and documentation.
It sounds like you are building with --enable-shared and then
picking/choosing the libraries, but you haven't described how you
build, so I'm just guessing.
Normally in an --enable-shared build the copy in libgcc_eh.a has hidden
visibility, and can be included in built libraries. The copy in
libgcc_s.so.1 is globally visible.
You are also misinterpreting the problem. The hidden symbol is not the
problem; libstdc++ with an undefined reference to _Unwind_GetIP, and no
dependency on libgcc_s.so.1, is the problem.
--
Daniel Jacobowitz
CodeSourcery, LLC
More information about the Gcc
mailing list