public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH, freebsd]: Build quad soft-fp library.
@ 2010-08-31  8:37 Uros Bizjak
  2010-08-31 11:52 ` Joseph S. Myers
  2010-08-31 12:17 ` Gerald Pfeifer
  0 siblings, 2 replies; 11+ messages in thread
From: Uros Bizjak @ 2010-08-31  8:37 UTC (permalink / raw)
  To: Steve Kargl
  Cc: Jakub Jelinek, Richard Henderson, Joseph S. Myers,
	Gerald Pfeifer, Fortran List, FX, gcc-patches

[-- Attachment #1: Type: text/plain, Size: 2487 bytes --]

On Tue, Aug 31, 2010 at 6:31 AM, Steve Kargl
<sgk@troutmask.apl.washington.edu> wrote:

>> I tested your patch on x86_64-*-freebsd.  My ppl and cloog
>> libraries were built with FreeBSD's system gcc (4.2.1).  All
>> tests failed due to missing symbols that are marked GCC_3.0.
>>
>> > Index: gcc/config/i386/t-freebsd
>> > ===================================================================
>> > --- gcc/config/i386/t-freebsd       (revision 0)
>> > +++ gcc/config/i386/t-freebsd       (revision 0)
>> > @@ -0,0 +1 @@
>> > +SHLIB_MAPFILES = $(srcdir)/config/i386/libgcc-bsd.ver
>>
>> Changing the = to += seems to fix the problem.  My
>> regression testing is still running, so I can't
>> report stats.
>>
>
> With my change to +=, on x86_64-*-freebsd I get
>
>                === gcc Summary ===
>
> # of expected passes            72950
> # of unexpected failures        74
> # of unexpected successes       3
> # of expected failures          215
> # of unresolved testcases       3
> # of unsupported tests          1081
> /usr/home/sgk/gcc/obj4x/gcc/xgcc  version 4.6.0 20100830 (experimental) (GCC)
>
>
>                === gfortran Summary ===
>
> # of expected passes            36155
> # of unexpected failures        4
> # of unexpected successes       7
> # of expected failures          59
> # of unsupported tests          53
> /usr/home/sgk/gcc/obj4x/gcc/testsuite/gfortran/../../gfortran  version 4.6.0 20100830 (experimental) (GCC)
>
>
> I quickly looked through the gcc.log file and noticed
> a couple of ICE's but I believe those are unrelated to
> the TFmode patch.
>
> Note, I believe that I do not have the authority to
> approve this patch.

Attached is the final (but untested) patch. The difference is, that
.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).

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/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.

Gerald, can you please test this patch?

Uros.

[-- Attachment #2: c.diff.txt --]
[-- Type: text/plain, Size: 3897 bytes --]

Index: gcc/config.gcc
===================================================================
--- gcc/config.gcc	(revision 163630)
+++ gcc/config.gcc	(working copy)
@@ -3485,6 +3485,9 @@
 	i[34567]86-*-cygwin* | i[34567]86-*-mingw* | x86_64-*-mingw*)
 		tmake_file="${tmake_file} i386/t-fprules-softfp soft-fp/t-softfp"
 		;;
+	i[34567]86-*-freebsd* | x86_64-*-freebsd*)
+		tmake_file="${tmake_file} i386/t-fprules-softfp soft-fp/t-softfp"
+		;;
 	ia64*-*-linux*)
 		tmake_file="${tmake_file} ia64/t-fprules-softfp soft-fp/t-softfp"
 		;;
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

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2010-09-01  6:45 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-08-31  8:37 [PATCH, freebsd]: Build quad soft-fp library Uros Bizjak
2010-08-31 11:52 ` Joseph S. Myers
2010-08-31 12:18   ` Uros Bizjak
2010-08-31 12:23     ` Jakub Jelinek
2010-08-31 14:20       ` Uros Bizjak
2010-08-31 14:31     ` Joseph S. Myers
2010-08-31 15:36       ` Uros Bizjak
2010-08-31 21:47         ` Steve Kargl
2010-09-01  6:43           ` Uros Bizjak
2010-09-01  6:48             ` Uros Bizjak
2010-08-31 12:17 ` Gerald Pfeifer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).