This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: libstdc++ libtool lossage
- From: Jakub Jelinek <jakub at redhat dot com>
- To: Mark Mitchell <mark at codesourcery dot com>
- Cc: Richard Henderson <rth at redhat dot com>, Alexandre Oliva <aoliva at redhat dot com>, David Edelsohn <dje at watson dot ibm dot com>, "gcc at gcc dot gnu dot org" <gcc at gcc dot gnu dot org>, "gcc-patches at gcc dot gnu dot org" <gcc-patches at gcc dot gnu dot org>, "java-patches at gcc dot gnu dot org" <java-patches at gcc dot gnu dot org>
- Date: Sun, 24 Feb 2002 20:42:29 +0100
- Subject: Re: libstdc++ libtool lossage
- References: <20020223170159.A21029@redhat.com> <61170000.1014578198@warlock.codesourcery.com>
- Reply-to: Jakub Jelinek <jakub at redhat dot com>
On Sun, Feb 24, 2002 at 11:16:38AM -0800, Mark Mitchell wrote:
> Thanks to Alexandre, David, and Richard's explanations, I think I
> understand what is going on here, and what we should do to fix it.
>
> I. Old Situation
> ================
>
> First, a summary of the situation in the state that it was not too
> long ago. I believe that in this state we had no correctness issues,
> but we did have performance issues.
>
> (In what follows, I use "g++" and "libstdc++" generically; I believe
> the Java situation was exactly the same as the C++ situtation.)
>
> 1. Both "g++ -shared" and "gcc -shared" created a library linked with
> the shared, but not static, version of libgcc.
AFAIK in 3.0 up to 3.0.3 inclusive
both gcc -shared and g++ -shared created a library linked with the
shared and static version of libgcc:
...
sprintf (buffer, "%%{shared-libgcc:%s %s}", shared_name, static_name);
...
sprintf (buffer,
"%%{!shared-libgcc:%%{!static-libgcc:%%{shared:%s %s}}}",
shared_name, static_name);
So on AIX and maybe other platforms which are not happy about having the
same library as shared and static on the command line we had correctness
issues. AIX used some permission magic in t-aix43 since Sep 2001. In
late December/January, David changed this, but changed only one of the two
occurences of shared_name, static_name pairs (the -shared and !-shared-libgcc
and !-static-libgcc) while left -shared-libgcc in (this was after
PT_GNU_EH_FRAME changes which were commited at the same time feature freeze
started).
Jakub