Patchwork [freebsd] : Build quad soft-fp library.

login
register
mail settings
Submitter Uros Bizjak
Date Aug. 31, 2010, 12:09 p.m.
Message ID <AANLkTimf5p87TvEGCQCrwdwBDSr-VgscrBDy4zb75zC0@mail.gmail.com>
Download mbox | patch
Permalink /patch/63230/
State New
Headers show

Comments

Uros Bizjak - Aug. 31, 2010, 12:09 p.m.
On Tue, Aug 31, 2010 at 1:50 PM, Joseph S. Myers
<joseph@codesourcery.com> wrote:

>> Attached is the final (but untested) patch. The difference is, that
>
> This patch does not add the %inherit and empty GCC_4.6.0 version to
> libgcc-std.ver that should be there.
>
>> .ver file (and corresponding t-freebsd file) have been moved to
>> libgcc. I modified existing solaris .ver file (as suggested by Joseph)
>> and sprinkled it with %if[n]defs (IMO, solaris .ver file also needs
>> these).
>
> They are not needed as symbols not present on a given target are quietly
> ignored there - although having them - very carefully reviewed as being
> exactly right - may avoid some problems arising accidentally in future if
> symbols are added to more targets (e.g. if TImode support is added for
> 32-bit x86 - which would require care to ensure no TImode symbols are
> accidentally added to old versions for any affected target).

Thanks for the review!

Attached is a patch that adds missing %inherit.

gcc/ChangeLog:

2010-08-31  Uros Bizjak  <ubizjak@gmail.com>

	* config.gcc (i[34567]86-*-freebsd*, x86_64-*-freebsd*): Add
	i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file.

	* libgcc-std.ver (GCC_4.6.0): Define version.

libgcc/ChangeLog:

2010-08-31  Uros Bizjak  <ubizjak@gmail.com>

	* config.host (i[34567]86-*-freebsd*, x86_64-*-freebsd*): Add
	i386/t-freebsd to tmake_file.
	* config/i386/t-freebsd: New file.
	* config/i386/libgcc-bsd.ver: New file.

OK for mainline?

Uros.
Jakub Jelinek - Aug. 31, 2010, 12:17 p.m.
On Tue, Aug 31, 2010 at 02:09:47PM +0200, Uros Bizjak wrote:
> --- libgcc/config/i386/libgcc-bsd.ver	(revision 0)
> +++ libgcc/config/i386/libgcc-bsd.ver	(revision 0)
...
> --- libgcc/config/i386/t-freebsd	(revision 0)
> +++ libgcc/config/i386/t-freebsd	(revision 0)
> @@ -0,0 +1,2 @@
> +# Add support for the introduction of 128-bit long double.
> +SHLIB_MAPFILES += $(srcdir)/config/i386/libgcc-bsd.ver

One more thing.  Is this planned just for freebsd, or openbsd/netbsd as
well?  If the former, then the *.ver file should be probably
libgcc/config/i386/libgcc-freebsd.ver, as when openbsd/netbsd decide
to do similarly, it might be already in GCC 4.7 or later and then
they will need to use a different *.ver file.
If the latter, perhaps the t-* file should be called t-bsd instead of
t-freebsd?

	Jakub
Uros Bizjak - Aug. 31, 2010, 2:12 p.m.
On Tue, Aug 31, 2010 at 2:17 PM, Jakub Jelinek <jakub@redhat.com> wrote:

>> --- libgcc/config/i386/libgcc-bsd.ver (revision 0)
>> +++ libgcc/config/i386/libgcc-bsd.ver (revision 0)
> ...
>> --- libgcc/config/i386/t-freebsd      (revision 0)
>> +++ libgcc/config/i386/t-freebsd      (revision 0)
>> @@ -0,0 +1,2 @@
>> +# Add support for the introduction of 128-bit long double.
>> +SHLIB_MAPFILES += $(srcdir)/config/i386/libgcc-bsd.ver
>
> One more thing.  Is this planned just for freebsd, or openbsd/netbsd as
> well?  If the former, then the *.ver file should be probably
> libgcc/config/i386/libgcc-freebsd.ver, as when openbsd/netbsd decide
> to do similarly, it might be already in GCC 4.7 or later and then
> they will need to use a different *.ver file.
> If the latter, perhaps the t-* file should be called t-bsd instead of
> t-freebsd?

We can always rename these files, so I see no problem with current
naming (t-freebsd is named due to the fact that it is called from
freebsd specific portions of the makefile).

Uros.
Joseph S. Myers - Aug. 31, 2010, 2:16 p.m.
Why, given that you are using __x86_64__ conditionals, isn't there such a 
conditional around __floattitf?

Patch

Index: libgcc/config.host
===================================================================
--- libgcc/config.host	(revision 163630)
+++ libgcc/config.host	(working copy)
@@ -279,8 +279,10 @@ 
 x86_64-*-elf*)
 	;;
 i[34567]86-*-freebsd*)
+	tmake_file="${tmake_file} i386/t-freebsd"
 	;;
 x86_64-*-freebsd*)
+	tmake_file="${tmake_file} i386/t-freebsd"
 	;;
 i[34567]86-*-netbsdelf*)
 	;;
@@ -608,7 +610,8 @@ 
   i[34567]86-*-linux* | x86_64-*-linux* | \
   i[34567]86-*-gnu* | \
   i[34567]86-*-solaris2* | \
-  i[34567]86-*-cygwin* | i[34567]86-*-mingw* | x86_64-*-mingw*)
+  i[34567]86-*-cygwin* | i[34567]86-*-mingw* | x86_64-*-mingw* | \
+  i[34567]86-*-freebsd* | x86_64-*-freebsd*)
 	if test "${host_address}" = 32; then
 		tmake_file="${tmake_file} t-softfp i386/${host_address}/t-fprules-softfp"
 	fi
Index: libgcc/config/i386/libgcc-bsd.ver
===================================================================
--- libgcc/config/i386/libgcc-bsd.ver	(revision 0)
+++ libgcc/config/i386/libgcc-bsd.ver	(revision 0)
@@ -0,0 +1,106 @@ 
+# Copyright (C) 2010 Free Software Foundation, Inc.
+#
+# This file is part of GCC.
+#
+# GCC is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GCC is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING3.  If not see
+# <http://www.gnu.org/licenses/>.
+
+# 128 bit long double support was introduced with GCC 4.6.0 for FreeBSD.
+# These lines make the symbols to get a @@GCC_4.6.0.
+
+%exclude {
+  __addtf3
+  __copysigntf3
+  __divtc3
+  __divtf3
+  __eqtf2
+  __extenddftf2
+  __extendsftf2
+  __extendxftf2
+  __fabstf2
+  __fixtfdi
+  __fixtfsi
+  __fixtfti
+  __fixunstfdi
+  __fixunstfsi
+  __fixunstfti
+  __floatditf
+  __floatsitf
+  __floattitf
+  __floatunditf
+  __floatunsitf
+  __floatuntitf
+  __getf2
+  __gttf2
+  __letf2
+  __lttf2
+  __multc3
+  __multf3
+  __negtf2
+  __netf2
+  __powitf2
+  __subtf3
+  __trunctfdf2
+  __trunctfsf2
+  __trunctfxf2
+  __unordtf2
+}
+
+GCC_4.6.0 {
+  __addtf3
+%ifndef __x86_64__
+  __copysigntf3
+%endif
+  __divtc3
+  __divtf3
+  __eqtf2
+  __extenddftf2
+  __extendsftf2
+  __extendxftf2
+%ifndef __x86_64__
+  __fabstf2
+%endif
+  __fixtfdi
+  __fixtfsi
+%ifdef __x86_64__
+  __fixtfti
+%endif
+  __fixunstfdi
+  __fixunstfsi
+%ifdef __x86_64__
+  __fixunstfti
+%endif
+  __floatditf
+  __floatsitf
+  __floattitf
+  __floatunditf
+  __floatunsitf
+%ifdef __x86_64__
+  __floatuntitf
+%endif
+  __getf2
+  __gttf2
+  __letf2
+  __lttf2
+  __multc3
+  __multf3
+  __negtf2
+  __netf2
+  __powitf2
+  __subtf3
+  __trunctfdf2
+  __trunctfsf2
+  __trunctfxf2
+  __unordtf2
+}
Index: libgcc/config/i386/t-freebsd
===================================================================
--- libgcc/config/i386/t-freebsd	(revision 0)
+++ libgcc/config/i386/t-freebsd	(revision 0)
@@ -0,0 +1,2 @@ 
+# Add support for the introduction of 128-bit long double.
+SHLIB_MAPFILES += $(srcdir)/config/i386/libgcc-bsd.ver
Index: gcc/libgcc-std.ver
===================================================================
--- gcc/libgcc-std.ver	(revision 163630)
+++ gcc/libgcc-std.ver	(working copy)
@@ -1910,3 +1910,7 @@ 
   __unordxf2
   __unordtf2
 }
+
+%inherit GCC_4.6.0 GCC_4.5.0
+GCC_4.6.0 {
+}