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

Reply via email to