PATCH: Enable softfp support on Solaris 2/x86 (PR target/39048)
Joseph S. Myers
joseph@codesourcery.com
Mon Mar 22 21:00:00 GMT 2010
On Mon, 22 Mar 2010, Rainer Orth wrote:
> > I would have thought this should inherit from GCC_4.4.0, and this
> > declaration should be in libgcc-std.ver even if some targets don't have
> > any 4.5.0 symbols (see e.g. the 4.1.0 version there).
>
> I've changed that: my reasoning was that GCC_4.4.0 doesn't exist on
> Solaris 2, and some previous versions inherited directly from the last
> non-empty one before them, as seen in pvs -dv output:
>
> $ pvs -dv /vol/gcc-4.4/lib/libgcc_s.so.1
> libgcc_s.so.1 [BASE];
> GCC_3.0;
> GCC_3.3: {GCC_3.0};
> GCC_3.3.1: {GCC_3.3};
> GCC_3.4: {GCC_3.3.1};
> GCC_3.4.2: {GCC_3.4};
> GCC_4.0.0: {GCC_3.4.2};
> GCC_4.2.0: {GCC_4.0.0};
> GCC_4.3.0: {GCC_4.2.0};
>
> But inheriting from GCC_4.4.0 works just as well, and doesn't introduce
> some spurious GCC_4.4.0 version in the resulting libgcc_s.so.1.
>
> I could probably remove the %inherit, but haven't tested that way. If
> you prefer, I could do that.
I believe that in the interests of maintainability we should define all
%inherit relations between target-independent versions in libgcc-std.ver.
As you have seen, if a particular version is empty on some targets the
inheritance will automatically end up being from the previous non-empty
version. That is, we should apply something like this patch (untested,
also fixes the missing exports of __unordxf2 and __unordtf2) and then make
further fixes on top of it.
(libgcc-bfin.ver is exactly the same as libgcc-std.ver, except for extra
leading underscores - Blackfin deviates from the gABI in having leading
underscores despite being an ELF target - and two Blackfin-specific
symbols. Thus I updated it to keep this relation to libgcc-std.ver.
Blackfin does not use libgcc-std.ver at all. So it duplicates the same
set of %inherit as in libgcc-std.ver.)
2010-03-22 Joseph Myers <joseph@codesourcery.com>
PR other/25232
* libgcc-std.ver (GCC_4.5.0): Define version. Include __unordxf2
and __unordtf2.
* config/bfin/libgcc-bfin.ver (GCC_4.5.0): Define version.
Include ___unordxf2 and ___unordtf2.
* config/i386/libgcc-glibc.ver: Do not define inheritance from
GCC_4.4.0 here.
Index: config/i386/libgcc-glibc.ver
===================================================================
--- config/i386/libgcc-glibc.ver (revision 157621)
+++ config/i386/libgcc-glibc.ver (working copy)
@@ -1,4 +1,4 @@
-# Copyright (C) 2008 Free Software Foundation, Inc.
+# Copyright (C) 2008, 2010 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
@@ -180,9 +180,6 @@
__trunctfxf2
__unordtf2
}
-# It is OK to have a duplicate of %inherit in libgcc-std.ver since
-# mkmap-symver.awk always takes the last %inherit statement.
-%inherit GCC_4.5.0 GCC_4.4.0
GCC_4.5.0 {
__extendxftf2
}
Index: config/bfin/libgcc-bfin.ver
===================================================================
--- config/bfin/libgcc-bfin.ver (revision 157621)
+++ config/bfin/libgcc-bfin.ver (working copy)
@@ -1906,3 +1906,9 @@
___sync_synchronize
}
+
+%inherit GCC_4.5.0 GCC_4.4.0
+GCC_4.5.0 {
+ ___unordxf2
+ ___unordtf2
+}
Index: libgcc-std.ver
===================================================================
--- libgcc-std.ver (revision 157621)
+++ libgcc-std.ver (working copy)
@@ -1,5 +1,5 @@
# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-# 2008 Free Software Foundation, Inc.
+# 2008, 2010 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
@@ -1904,3 +1904,9 @@
__sync_synchronize
}
+
+%inherit GCC_4.5.0 GCC_4.4.0
+GCC_4.5.0 {
+ __unordxf2
+ __unordtf2
+}
--
Joseph S. Myers
joseph@codesourcery.com
More information about the Gcc-patches
mailing list