This is the mail archive of the
libstdc++@sourceware.cygnus.com
mailing list for the libstdc++ project.
Re: undefined symbol: __dso_handle
- To: "Russell Davidson" <russell at ehess dot cnrs-mrs dot fr>
- Subject: Re: undefined symbol: __dso_handle
- From: "Brian Chamberlain" <bkchamb at uswest dot net>
- Date: Sat, 17 Jun 2000 11:02:32 -0500
- Cc: <libstdc++ at sourceware dot cygnus dot com>
- References: <Pine.LNX.3.96.1000617141042.2744A-100000@russell.cnrs-mrs.fr>
Thanks, that fixed it.
> I quote Martin v. Loewis (April 18 of this year), who helped me out when I
> had the same problem. His analysis:
>
> *********************
> My guess is that it is the infamous .hidden conflict, where the
> binutils snapshot implements .hidden by putting a STB_LOCAL symbol in
> the dynamic symbol table (namely __dso_handle). The dynamic linker
> fails to find this symbol in the shared library, because it does not
> consider STB_LOCAL symbols.
>
> The work-around is to not define HAVE_GAS_HIDDEN in auto-host.h, and
> recompile the compiler. I'm not sure what the solution is. Perhaps
> somebody should sit down and implement .hidden in the same way as
> local symbols in the symbol versioning feature. Perhaps that someone
> should be me, but I haven't started, yet.
> *********************
>
> Commenting out the line
>
> #define HAVE_GAS_HIDDEN 1
>
> in ($builddir)/gcc/auto-host.h after configuring, but before building, the
> compiler does the trick.
>
> I wish someone would fix this! I sometimes forget when (re)building the
> compiler, and then I get stuck having to go through another half-hour of
> compilation after commenting out that line.
>
> Regards, Russell.