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