This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] 3.2: Fixup symbol versioning mistake on powerpc-linux-gnu
- From: Jakub Jelinek <jakub at redhat dot com>
- To: Franz Sirl <Franz dot Sirl-kernel at lauterbach dot com>
- Cc: gcc-patches at gcc dot gnu dot org, Richard Henderson <rth at redhat dot com>, Mark Mitchell <mark at codesourcery dot com>, "H. J. Lu" <hjl at lucon dot org>
- Date: Mon, 5 Aug 2002 12:27:30 -0400
- Subject: Re: [PATCH] 3.2: Fixup symbol versioning mistake on powerpc-linux-gnu
- References: <200208042102.02876@enzo.bigblue.local>
- Reply-to: Jakub Jelinek <jakub at redhat dot com>
On Sun, Aug 04, 2002 at 09:02:02PM +0200, Franz Sirl wrote:
> Hi,
>
> this turned out to be more difficult than I thought, but finally I had the
> right idea on how to tackle that.
>
> The patch changes the symbol versions in the shared libgcc for these sysmbols:
>
> __divdi3
> __udivdi3
> __moddi3
> __umoddi3
>
> The change is to move the link-time reference from GLIBC_2.0 to GCC_3.0:
>
> 3.0, 3.1: run+linktime @@GLIBC_2.0, runtime @GCC_3.0
> 3.2+: run+linktime @@GCC_3.0, runtime @GLIBC_2.0
First of all, can you explain why that is needed?
As glibc on PPC AFAIK was never exporting these symbols, they were added there
just to cope with binaries/libraries taking those symbols from various
shared libraries unintentionally exporting them. But all those
were unversioned references, ie. it really doesn't matter what
symbol version is glibc using for them.
Newly built libraries/programs will either link against libgcc_s, in which
case they will whatever symbol version libgcc_s exports (and
it doesn't matter if it is different from glibc's version, since they have
either direct or indirect DT_NEEDED on libgcc_s), or they'll use the .hidden
routine from libgcc.a.
Yes, some months ago I thought it would be a good idea to use the same
symbol version, but IA-64 in the final version uses different versions and
it doesn't cause any problems. Why is PPC any different here?
Jakub