summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/gcc/gcc-7.3/0044-libgcc-Add-knob-to-use-ldbl-128-on-ppc.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-devtools/gcc/gcc-7.3/0044-libgcc-Add-knob-to-use-ldbl-128-on-ppc.patch')
-rw-r--r--meta/recipes-devtools/gcc/gcc-7.3/0044-libgcc-Add-knob-to-use-ldbl-128-on-ppc.patch513
1 files changed, 0 insertions, 513 deletions
diff --git a/meta/recipes-devtools/gcc/gcc-7.3/0044-libgcc-Add-knob-to-use-ldbl-128-on-ppc.patch b/meta/recipes-devtools/gcc/gcc-7.3/0044-libgcc-Add-knob-to-use-ldbl-128-on-ppc.patch
deleted file mode 100644
index f4dd891717..0000000000
--- a/meta/recipes-devtools/gcc/gcc-7.3/0044-libgcc-Add-knob-to-use-ldbl-128-on-ppc.patch
+++ /dev/null
@@ -1,513 +0,0 @@
-From 847aec764540636ec654fd7a012e271afa8d4e0f Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 29 Apr 2016 20:03:28 +0000
-Subject: [PATCH 44/47] libgcc: Add knob to use ldbl-128 on ppc
-
-musl does not support ldbl 128 so we can not assume
-that linux as a whole supports ldbl-128 bits, instead
-act upon configure option passed to gcc and assume no
-on musl and yes otherwise if no option is passed since
-default behaviour is to assume ldbl128 it does not
-change the defaults
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Upstream-Status: Pending
----
- libgcc/Makefile.in | 1 +
- libgcc/config/rs6000/t-linux | 5 ++++-
- libgcc/configure | 18 ++++++++++++++++++
- libgcc/configure.ac | 12 ++++++++++++
- 4 files changed, 35 insertions(+), 1 deletion(-)
- mode change 100644 => 100755 libgcc/configure
-
-diff --git a/libgcc/Makefile.in b/libgcc/Makefile.in
-index a1a392de88d..2fe6889a342 100644
---- a/libgcc/Makefile.in
-+++ b/libgcc/Makefile.in
-@@ -48,6 +48,7 @@ unwind_header = @unwind_header@
- md_unwind_header = @md_unwind_header@
- sfp_machine_header = @sfp_machine_header@
- thread_header = @thread_header@
-+with_ldbl128 = @with_ldbl128@
-
- host_noncanonical = @host_noncanonical@
- real_host_noncanonical = @real_host_noncanonical@
-diff --git a/libgcc/config/rs6000/t-linux b/libgcc/config/rs6000/t-linux
-index 4f6d4c4a4d2..c50dd94a2da 100644
---- a/libgcc/config/rs6000/t-linux
-+++ b/libgcc/config/rs6000/t-linux
-@@ -1,3 +1,9 @@
- SHLIB_MAPFILES += $(srcdir)/config/rs6000/libgcc-glibc.ver
-
--HOST_LIBGCC2_CFLAGS += -mlong-double-128 -mno-minimal-toc
-+ifeq ($(with_ldbl128),yes)
-+HOST_LIBGCC2_CFLAGS += -mlong-double-128
-+else
-+# We do not want to build ibm-ldouble.c.
-+LIB2ADD := $(filter-out %ibm-ldouble.c, $(LIB2ADD))
-+endif
-+HOST_LIBGCC2_CFLAGS += -mno-minimal-toc
-diff --git a/libgcc/config/rs6000/fixtfdi.c b/libgcc/config/rs6000/fixtfdi.c
-new file mode 100644
-index 0000000..9b979d0
---- /dev/null
-+++ b/libgcc/config/rs6000/fixtfdi.c
-@@ -0,0 +1,42 @@
-+/* Software floating-point emulation.
-+ Convert a to 64bit signed integer
-+ Copyright (C) 1997-2016 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Richard Henderson (rth@cygnus.com) and
-+ Jakub Jelinek (jj@ultra.linux.cz).
-+
-+ The GNU C Library is free software; you can redistribute it and/or
-+ modify it under the terms of the GNU Lesser General Public
-+ License as published by the Free Software Foundation; either
-+ version 2.1 of the License, or (at your option) any later version.
-+
-+ In addition to the permissions in the GNU Lesser General Public
-+ License, the Free Software Foundation gives you unlimited
-+ permission to link the compiled version of this file into
-+ combinations with other programs, and to distribute those
-+ combinations without any restriction coming from the use of this
-+ file. (The Lesser General Public License restrictions do apply in
-+ other respects; for example, they cover modification of the file,
-+ and distribution when not linked into a combine executable.)
-+
-+ The GNU C Library 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
-+ Lesser General Public License for more details.
-+
-+ You should have received a copy of the GNU Lesser General Public
-+ License along with the GNU C Library; if not, see
-+ <http://www.gnu.org/licenses/>. */
-+
-+#ifdef _ARCH_PPC64
-+#include "soft-fp.h"
-+#include "quad-float128.h"
-+
-+DItype
-+__fixtfdi (TFtype a)
-+{
-+ if (a < 0)
-+ return - __fixunstfdi (-a);
-+ return __fixunstfdi (a);
-+}
-+#endif
-diff --git a/libgcc/config/rs6000/fixunstfdi.c b/libgcc/config/rs6000/fixunstfdi.c
-new file mode 100644
-index 0000000..65e9590
---- /dev/null
-+++ b/libgcc/config/rs6000/fixunstfdi.c
-@@ -0,0 +1,58 @@
-+/* Software floating-point emulation.
-+ Convert a to 64bit unsigned integer
-+ Copyright (C) 1997-2016 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Richard Henderson (rth@cygnus.com) and
-+ Jakub Jelinek (jj@ultra.linux.cz).
-+
-+ The GNU C Library is free software; you can redistribute it and/or
-+ modify it under the terms of the GNU Lesser General Public
-+ License as published by the Free Software Foundation; either
-+ version 2.1 of the License, or (at your option) any later version.
-+
-+ In addition to the permissions in the GNU Lesser General Public
-+ License, the Free Software Foundation gives you unlimited
-+ permission to link the compiled version of this file into
-+ combinations with other programs, and to distribute those
-+ combinations without any restriction coming from the use of this
-+ file. (The Lesser General Public License restrictions do apply in
-+ other respects; for example, they cover modification of the file,
-+ and distribution when not linked into a combine executable.)
-+
-+ The GNU C Library 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
-+ Lesser General Public License for more details.
-+
-+ You should have received a copy of the GNU Lesser General Public
-+ License along with the GNU C Library; if not, see
-+ <http://www.gnu.org/licenses/>. */
-+
-+#ifdef _ARCH_PPC64
-+#include "soft-fp.h"
-+#include "quad-float128.h"
-+
-+DItype
-+__fixunstfdi (TFtype a)
-+{
-+ if (a < 0)
-+ return 0;
-+
-+ /* Compute high word of result, as a flonum. */
-+ const TFtype b = (a / (((UDItype) 1) << (sizeof (SItype) * 8)));
-+ /* Convert that to fixed (but not to DItype!),
-+ and shift it into the high word. */
-+ UDItype v = (USItype) b;
-+ v <<= (sizeof (SItype) * 8);
-+ /* Remove high part from the TFtype, leaving the low part as flonum. */
-+ a -= (TFtype) v;
-+ /* Convert that to fixed (but not to DItype!) and add it in.
-+ Sometimes A comes out negative. This is significant, since
-+ A has more bits than a long int does. */
-+ if (a < 0)
-+ v -= (USItype) (-a);
-+ else
-+ v += (USItype) a;
-+ return v;
-+}
-+#endif
-diff --git a/libgcc/config/rs6000/floatditf.c b/libgcc/config/rs6000/floatditf.c
-new file mode 100644
-index 0000000..20ad4c6
---- /dev/null
-+++ b/libgcc/config/rs6000/floatditf.c
-@@ -0,0 +1,47 @@
-+/* Software floating-point emulation.
-+ Convert a 64bit signed integer to IEEE quad
-+ Copyright (C) 1997-2016 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Richard Henderson (rth@cygnus.com) and
-+ Jakub Jelinek (jj@ultra.linux.cz).
-+
-+ The GNU C Library is free software; you can redistribute it and/or
-+ modify it under the terms of the GNU Lesser General Public
-+ License as published by the Free Software Foundation; either
-+ version 2.1 of the License, or (at your option) any later version.
-+
-+ In addition to the permissions in the GNU Lesser General Public
-+ License, the Free Software Foundation gives you unlimited
-+ permission to link the compiled version of this file into
-+ combinations with other programs, and to distribute those
-+ combinations without any restriction coming from the use of this
-+ file. (The Lesser General Public License restrictions do apply in
-+ other respects; for example, they cover modification of the file,
-+ and distribution when not linked into a combine executable.)
-+
-+ The GNU C Library 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
-+ Lesser General Public License for more details.
-+
-+ You should have received a copy of the GNU Lesser General Public
-+ License along with the GNU C Library; if not, see
-+ <http://www.gnu.org/licenses/>. */
-+
-+#ifdef _ARCH_PPC64
-+#include "soft-fp.h"
-+#include "double.h"
-+#include "quad-float128.h"
-+
-+TFtype
-+__floatditf (DItype u)
-+{
-+ DFtype dh, dl;
-+
-+ dh = (SItype) (u >> (sizeof (SItype) * 8));
-+ dh *= 2.0 * (((UDItype) 1) << ((sizeof (SItype) * 8) - 1));
-+ dl = (USItype) (u & ((((UDItype) 1) << (sizeof (SItype) * 8)) - 1));
-+
-+ return (TFtype) dh + (TFtype) dl;
-+}
-+#endif
-diff --git a/libgcc/config/rs6000/floatunditf.c b/libgcc/config/rs6000/floatunditf.c
-new file mode 100644
-index 0000000..23dbde2
---- /dev/null
-+++ b/libgcc/config/rs6000/floatunditf.c
-@@ -0,0 +1,47 @@
-+/* Software floating-point emulation.
-+ Convert a 64bit unsigned integer to IEEE quad
-+ Copyright (C) 1997-2016 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Richard Henderson (rth@cygnus.com) and
-+ Jakub Jelinek (jj@ultra.linux.cz).
-+
-+ The GNU C Library is free software; you can redistribute it and/or
-+ modify it under the terms of the GNU Lesser General Public
-+ License as published by the Free Software Foundation; either
-+ version 2.1 of the License, or (at your option) any later version.
-+
-+ In addition to the permissions in the GNU Lesser General Public
-+ License, the Free Software Foundation gives you unlimited
-+ permission to link the compiled version of this file into
-+ combinations with other programs, and to distribute those
-+ combinations without any restriction coming from the use of this
-+ file. (The Lesser General Public License restrictions do apply in
-+ other respects; for example, they cover modification of the file,
-+ and distribution when not linked into a combine executable.)
-+
-+ The GNU C Library 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
-+ Lesser General Public License for more details.
-+
-+ You should have received a copy of the GNU Lesser General Public
-+ License along with the GNU C Library; if not, see
-+ <http://www.gnu.org/licenses/>. */
-+
-+#ifdef _ARCH_PPC64
-+#include "soft-fp.h"
-+#include "double.h"
-+#include "quad-float128.h"
-+
-+TFtype
-+__floatunditf (UDItype u)
-+{
-+ DFtype dh, dl;
-+
-+ dh = (USItype) (u >> (sizeof (SItype) * 8));
-+ dh *= 2.0 * (((UDItype) 1) << ((sizeof (SItype) * 8) - 1));
-+ dl = (USItype) (u & ((((UDItype) 1) << (sizeof (SItype) * 8)) - 1));
-+
-+ return (TFtype) dh + (TFtype) dl;
-+}
-+#endif
-diff --git a/libgcc/config/rs6000/ppc64-fp.c b/libgcc/config/rs6000/ppc64-fp.c
-index 5e1cbdd..70ad3c9 100644
---- a/libgcc/config/rs6000/ppc64-fp.c
-+++ b/libgcc/config/rs6000/ppc64-fp.c
-@@ -25,33 +25,20 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
- <http://www.gnu.org/licenses/>. */
-
- #if defined(__powerpc64__) || defined (__64BIT__) || defined(__ppc64__)
--#define TMODES
- #include "fp-bit.h"
-
--extern DItype __fixtfdi (TFtype);
- extern DItype __fixdfdi (DFtype);
- extern DItype __fixsfdi (SFtype);
- extern USItype __fixunsdfsi (DFtype);
- extern USItype __fixunssfsi (SFtype);
--extern TFtype __floatditf (DItype);
--extern TFtype __floatunditf (UDItype);
- extern DFtype __floatdidf (DItype);
- extern DFtype __floatundidf (UDItype);
- extern SFtype __floatdisf (DItype);
- extern SFtype __floatundisf (UDItype);
--extern DItype __fixunstfdi (TFtype);
-
- static DItype local_fixunssfdi (SFtype);
- static DItype local_fixunsdfdi (DFtype);
-
--DItype
--__fixtfdi (TFtype a)
--{
-- if (a < 0)
-- return - __fixunstfdi (-a);
-- return __fixunstfdi (a);
--}
--
- DItype
- __fixdfdi (DFtype a)
- {
-@@ -86,30 +73,6 @@ __fixunssfsi (SFtype a)
- return (SItype) a;
- }
-
--TFtype
--__floatditf (DItype u)
--{
-- DFtype dh, dl;
--
-- dh = (SItype) (u >> (sizeof (SItype) * 8));
-- dh *= 2.0 * (((UDItype) 1) << ((sizeof (SItype) * 8) - 1));
-- dl = (USItype) (u & ((((UDItype) 1) << (sizeof (SItype) * 8)) - 1));
--
-- return (TFtype) dh + (TFtype) dl;
--}
--
--TFtype
--__floatunditf (UDItype u)
--{
-- DFtype dh, dl;
--
-- dh = (USItype) (u >> (sizeof (SItype) * 8));
-- dh *= 2.0 * (((UDItype) 1) << ((sizeof (SItype) * 8) - 1));
-- dl = (USItype) (u & ((((UDItype) 1) << (sizeof (SItype) * 8)) - 1));
--
-- return (TFtype) dh + (TFtype) dl;
--}
--
- DFtype
- __floatdidf (DItype u)
- {
-@@ -183,30 +146,6 @@ __floatundisf (UDItype u)
- return (SFtype) f;
- }
-
--DItype
--__fixunstfdi (TFtype a)
--{
-- if (a < 0)
-- return 0;
--
-- /* Compute high word of result, as a flonum. */
-- const TFtype b = (a / (((UDItype) 1) << (sizeof (SItype) * 8)));
-- /* Convert that to fixed (but not to DItype!),
-- and shift it into the high word. */
-- UDItype v = (USItype) b;
-- v <<= (sizeof (SItype) * 8);
-- /* Remove high part from the TFtype, leaving the low part as flonum. */
-- a -= (TFtype) v;
-- /* Convert that to fixed (but not to DItype!) and add it in.
-- Sometimes A comes out negative. This is significant, since
-- A has more bits than a long int does. */
-- if (a < 0)
-- v -= (USItype) (-a);
-- else
-- v += (USItype) a;
-- return v;
--}
--
- /* This version is needed to prevent recursion; fixunsdfdi in libgcc
- calls fixdfdi, which in turn calls calls fixunsdfdi. */
-
-diff --git a/libgcc/config/rs6000/quad-float128.h b/libgcc/config/rs6000/quad-float128.h
-index 7d69c87..a0c2664 100644
---- a/libgcc/config/rs6000/quad-float128.h
-+++ b/libgcc/config/rs6000/quad-float128.h
-@@ -99,6 +99,11 @@ extern TItype_ppc __fixkfti (TFtype);
- extern UTItype_ppc __fixunskfti (TFtype);
- extern TFtype __floattikf (TItype_ppc);
- extern TFtype __floatuntikf (UTItype_ppc);
-+
-+extern DItype_ppc __fixtfdi (TFtype);
-+extern DItype_ppc __fixunstfdi (TFtype);
-+extern TFtype __floatditf (DItype_ppc);
-+extern TFtype __floatunditf (UDItype_ppc);
- #endif
-
- /* Functions using the ISA 3.0 hardware support. If the code is compiled with
-diff --git a/libgcc/config/rs6000/t-float128 b/libgcc/config/rs6000/t-float128
-index 2c52ca6..3a241aa 100644
---- a/libgcc/config/rs6000/t-float128
-+++ b/libgcc/config/rs6000/t-float128
-@@ -24,6 +24,7 @@ fp128_softfp_obj = $(fp128_softfp_static_obj) $(fp128_softfp_shared_obj)
-
- # New functions for software emulation
- fp128_ppc_funcs = floattikf floatuntikf fixkfti fixunskfti \
-+ floatditf floatunditf fixtfdi fixunstfdi \
- extendkftf2-sw trunctfkf2-sw \
- sfp-exceptions _mulkc3 _divkc3
-
-@@ -58,7 +59,7 @@ fp128_includes = $(srcdir)/soft-fp/double.h \
- $(srcdir)/soft-fp/soft-fp.h
-
- # Build the emulator without ISA 3.0 hardware support.
--FP128_CFLAGS_SW = -Wno-type-limits -mvsx -mfloat128 \
-+FP128_CFLAGS_SW = -Wno-type-limits -mvsx -mfloat128 -mfloat128-type \
- -mno-float128-hardware \
- -I$(srcdir)/soft-fp \
- -I$(srcdir)/config/rs6000 \
-diff --git a/libgcc/config/rs6000/t-float128-hw b/libgcc/config/rs6000/t-float128-hw
-index 161062f..0476874 100644
---- a/libgcc/config/rs6000/t-float128-hw
-+++ b/libgcc/config/rs6000/t-float128-hw
-@@ -21,7 +21,7 @@ fp128_ifunc_obj = $(fp128_ifunc_static_obj) $(fp128_ifunc_shared_obj)
- fp128_sed_hw = -hw
-
- # Build the hardware support functions with appropriate hardware support
--FP128_CFLAGS_HW = -Wno-type-limits -mvsx -mfloat128 \
-+FP128_CFLAGS_HW = -Wno-type-limits -mvsx -mfloat128 -mfloat128-type \
- -mpower8-vector -mpower9-vector \
- -mfloat128-hardware \
- -I$(srcdir)/soft-fp \
-diff --git a/libgcc/configure b/libgcc/configure
-old mode 100644
-new mode 100755
-index 45c459788c3..e2d19b144b8
---- a/libgcc/configure
-+++ b/libgcc/configure
-@@ -618,6 +618,7 @@ build_vendor
- build_cpu
- build
- with_aix_soname
-+with_ldbl128
- enable_vtable_verify
- enable_shared
- libgcc_topdir
-@@ -667,6 +668,7 @@ with_cross_host
- with_ld
- enable_shared
- enable_vtable_verify
-+with_long_double_128
- with_aix_soname
- enable_version_specific_runtime_libs
- with_slibdir
-@@ -1324,6 +1326,7 @@ Optional Packages:
- --with-target-subdir=SUBDIR Configuring in a subdirectory for target
- --with-cross-host=HOST Configuring with a cross compiler
- --with-ld arrange to use the specified ld (full pathname)
-+ --with-long-double-128 use 128-bit long double by default
- --with-aix-soname=aix|svr4|both
- shared library versioning (aka "SONAME") variant to
- provide on AIX
-@@ -2208,6 +2211,21 @@ fi
-
-
-
-+# Check whether --with-long-double-128 was given.
-+if test "${with_long_double_128+set}" = set; then :
-+ withval=$with_long_double_128; with_ldbl128="$with_long_double_128"
-+else
-+ case "${host}" in
-+ power*-*-musl*)
-+ with_ldbl128="no";;
-+ *) with_ldbl128="yes";;
-+ esac
-+
-+fi
-+
-+
-+
-+
- # Check whether --with-aix-soname was given.
- if test "${with_aix_soname+set}" = set; then :
- withval=$with_aix_soname; case "${host}:${enable_shared}" in
-@@ -4999,7 +4999,7 @@ case ${host} in
- # for hardware support.
- powerpc*-*-linux*)
- saved_CFLAGS="$CFLAGS"
-- CFLAGS="$CFLAGS -mabi=altivec -mvsx -mfloat128"
-+ CFLAGS="$CFLAGS -mabi=altivec -mvsx -mfloat128 -mfloat128-type"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PowerPC ISA 2.06 to build __float128 libraries" >&5
- $as_echo_n "checking for PowerPC ISA 2.06 to build __float128 libraries... " >&6; }
- if test "${libgcc_cv_powerpc_float128+set}" = set; then :
-diff --git a/libgcc/configure.ac b/libgcc/configure.ac
-index af151473709..dada52416da 100644
---- a/libgcc/configure.ac
-+++ b/libgcc/configure.ac
-@@ -77,6 +77,18 @@ AC_ARG_ENABLE(vtable-verify,
- [enable_vtable_verify=no])
- AC_SUBST(enable_vtable_verify)
-
-+AC_ARG_WITH(long-double-128,
-+[AS_HELP_STRING([--with-long-double-128],
-+ [use 128-bit long double by default])],
-+ with_ldbl128="$with_long_double_128",
-+[case "${host}" in
-+ power*-*-musl*)
-+ with_ldbl128="no";;
-+ *) with_ldbl128="yes";;
-+ esac
-+])
-+AC_SUBST(with_ldbl128)
-+
- AC_ARG_WITH(aix-soname,
- [AS_HELP_STRING([--with-aix-soname=aix|svr4|both],
- [shared library versioning (aka "SONAME") variant to provide on AIX])],
-@@ -394,7 +394,7 @@ case ${host} in
- # for hardware support.
- powerpc*-*-linux*)
- saved_CFLAGS="$CFLAGS"
-- CFLAGS="$CFLAGS -mabi=altivec -mvsx -mfloat128"
-+ CFLAGS="$CFLAGS -mabi=altivec -mvsx -mfloat128 -mfloat128-type"
- AC_CACHE_CHECK([for PowerPC ISA 2.06 to build __float128 libraries],
- [libgcc_cv_powerpc_float128],
- [AC_COMPILE_IFELSE(
---
-2.12.2
-