This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Minor bug in mkmap-symver.awk? (fwd)
- From: Roger Sayle <roger at www dot eyesopen dot com>
- To: Richard Henderson <rth at redhat dot com>
- Cc: gcc at gcc dot gnu dot org
- Date: Wed, 27 Nov 2002 07:37:03 -0700 (MST)
- Subject: Re: Minor bug in mkmap-symver.awk? (fwd)
Hi Richard,
On Tue, 26 Nov 2002, Richard Henderson wrote:
> On Tue, Nov 26, 2002 at 09:45:12PM -0700, Roger Sayle wrote:
> > Is this the appropriate solution, or should GNU ld's grammar be
> > modified to allow "global:" to be followed by an empty list?
>
> Neither. This should never happen. The only times I've
> ever seen it happen is when the cross-nm isn't installed
> correctly.
Consider the hypothetical situation, that someone would like
to add some additional symbols to libgcc.so, that are only
required and/or relevant to some targets or multilibs.
In my case, I was evaluating adding __abssf2 and __absdf2 to
the software floating point support in libgcc. Adding the lines:
GCC_3.3 {
__abssf2
__absdf2
}
to the end of libgcc-std.ver is sufficient on the powerpc and
mips where software floating point is built into libgcc by default.
However, building on i686 GNU/Linux fails because these new symbols
aren't added to libgcc. Rightly so, as the i386 backend doesn't
use FPBIT. It provides its own patterns of "abssf2" and "absdf2",
and doesn't implement the soft-float forms of the existing __negsf2
or __negdf2 libcalls.
I hope this explains the circumstances. New symbols require a
new library version, but if none of the new symbols are relevant
on a platform, there's a bizarre interplay of versioning, i.e.
the library is still "effectively" the older version.
You're right that an ideal solution should distinguish this case
from an incorrectly installed cross-nm.
Roger
--