diff options
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.patch | 513 |
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 - |