From dbf523f667e4dbc1152f8f8fad32b96325881042 Mon Sep 17 00:00:00 2001 From: Stelios Koroneos Date: Tue, 20 Nov 2007 06:24:05 +0000 Subject: packages/glibc/glibc_2.5.bb : Add a new patch for the powerpc targets with softfloat support that handles a case of strong alias for two (soft) float point functions. Original patch provided by Hiroki Kaminaga kaminaga at sm dot sony dot co dot jp --- .../glibc-2.5-soft-fp-separate-strong-alias.patch | 205 +++++++++++++++++++++ 1 file changed, 205 insertions(+) create mode 100755 packages/glibc/files/glibc-2.5-soft-fp-separate-strong-alias.patch (limited to 'packages/glibc/files/glibc-2.5-soft-fp-separate-strong-alias.patch') diff --git a/packages/glibc/files/glibc-2.5-soft-fp-separate-strong-alias.patch b/packages/glibc/files/glibc-2.5-soft-fp-separate-strong-alias.patch new file mode 100755 index 0000000000..e41c1b7d96 --- /dev/null +++ b/packages/glibc/files/glibc-2.5-soft-fp-separate-strong-alias.patch @@ -0,0 +1,205 @@ +Index: glibc-2.5-tls-ppc-04/soft-fp/eqdf2.c +=================================================================== +--- glibc-2.5-tls-ppc-04.orig/soft-fp/eqdf2.c ++++ glibc-2.5-tls-ppc-04/soft-fp/eqdf2.c +@@ -48,4 +48,3 @@ int __eqdf2(DFtype a, DFtype b) + return r; + } + +-strong_alias(__eqdf2, __nedf2); +Index: glibc-2.5-tls-ppc-04/soft-fp/gedf2.c +=================================================================== +--- glibc-2.5-tls-ppc-04.orig/soft-fp/gedf2.c ++++ glibc-2.5-tls-ppc-04/soft-fp/gedf2.c +@@ -47,5 +47,3 @@ int __gedf2(DFtype a, DFtype b) + + return r; + } +- +-strong_alias(__gedf2, __gtdf2); +Index: glibc-2.5-tls-ppc-04/soft-fp/gtdf2.c +=================================================================== +--- /dev/null ++++ glibc-2.5-tls-ppc-04/soft-fp/gtdf2.c +@@ -0,0 +1,49 @@ ++/* Software floating-point emulation. ++ Return 0 iff a == b, 1 iff a > b, -2 iff a ? b, -1 iff a < b ++ Copyright (C) 1997,1999,2006 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, write to the Free ++ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, ++ MA 02110-1301, USA. */ ++ ++#include "soft-fp.h" ++#include "double.h" ++ ++int __gtdf2(DFtype a, DFtype b) ++{ ++ FP_DECL_EX; ++ FP_DECL_D(A); FP_DECL_D(B); ++ int r; ++ ++ FP_UNPACK_RAW_D(A, a); ++ FP_UNPACK_RAW_D(B, b); ++ FP_CMP_D(r, A, B, -2); ++ if (r == -2 && (FP_ISSIGNAN_D(A) || FP_ISSIGNAN_D(B))) ++ FP_SET_EXCEPTION(FP_EX_INVALID); ++ FP_HANDLE_EXCEPTIONS; ++ ++ return r; ++} +Index: glibc-2.5-tls-ppc-04/soft-fp/ledf2.c +=================================================================== +--- glibc-2.5-tls-ppc-04.orig/soft-fp/ledf2.c ++++ glibc-2.5-tls-ppc-04/soft-fp/ledf2.c +@@ -48,4 +48,3 @@ int __ledf2(DFtype a, DFtype b) + return r; + } + +-strong_alias(__ledf2, __ltdf2); +Index: glibc-2.5-tls-ppc-04/soft-fp/ltdf2.c +=================================================================== +--- /dev/null ++++ glibc-2.5-tls-ppc-04/soft-fp/ltdf2.c +@@ -0,0 +1,49 @@ ++/* Software floating-point emulation. ++ Return 0 iff a == b, 1 iff a > b, 2 iff a ? b, -1 iff a < b ++ Copyright (C) 1997,1999,2006 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, write to the Free ++ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, ++ MA 02110-1301, USA. */ ++ ++#include "soft-fp.h" ++#include "double.h" ++ ++int __ltdf2(DFtype a, DFtype b) ++{ ++ FP_DECL_EX; ++ FP_DECL_D(A); FP_DECL_D(B); ++ int r; ++ ++ FP_UNPACK_RAW_D(A, a); ++ FP_UNPACK_RAW_D(B, b); ++ FP_CMP_D(r, A, B, 2); ++ if (r == 2 && (FP_ISSIGNAN_D(A) || FP_ISSIGNAN_D(B))) ++ FP_SET_EXCEPTION(FP_EX_INVALID); ++ FP_HANDLE_EXCEPTIONS; ++ ++ return r; ++} +Index: glibc-2.5-tls-ppc-04/soft-fp/nedf2.c +=================================================================== +--- /dev/null ++++ glibc-2.5-tls-ppc-04/soft-fp/nedf2.c +@@ -0,0 +1,49 @@ ++/* Software floating-point emulation. ++ Return 0 iff a == b, 1 otherwise ++ Copyright (C) 1997,1999,2006 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, write to the Free ++ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, ++ MA 02110-1301, USA. */ ++ ++#include "soft-fp.h" ++#include "double.h" ++ ++int __nedf2(DFtype a, DFtype b) ++{ ++ FP_DECL_EX; ++ FP_DECL_D(A); FP_DECL_D(B); ++ int r; ++ ++ FP_UNPACK_RAW_D(A, a); ++ FP_UNPACK_RAW_D(B, b); ++ FP_CMP_EQ_D(r, A, B); ++ if (r && (FP_ISSIGNAN_D(A) || FP_ISSIGNAN_D(B))) ++ FP_SET_EXCEPTION(FP_EX_INVALID); ++ FP_HANDLE_EXCEPTIONS; ++ ++ return r; ++} +Index: glibc-2.5-tls-ppc-04/soft-fp/Makefile +=================================================================== +--- glibc-2.5-tls-ppc-04.orig/soft-fp/Makefile ++++ glibc-2.5-tls-ppc-04/soft-fp/Makefile +@@ -27,8 +27,8 @@ gcc-single-routines := negsf2 addsf3 sub + fixunssfdi floatdisf sqrtsf2 floatunsisf floatundisf \ + fmasf4 + +-gcc-double-routines := negdf2 adddf3 subdf3 muldf3 divdf3 eqdf2 \ +- ledf2 gedf2 unorddf2 fixdfsi fixunsdfsi floatsidf fixdfdi \ ++gcc-double-routines := negdf2 adddf3 subdf3 muldf3 divdf3 eqdf2 nedf2 \ ++ ledf2 ltdf2 gedf2 gtdf2 unorddf2 fixdfsi fixunsdfsi floatsidf fixdfdi \ + fixunsdfdi floatdidf extendsfdf2 truncdfsf2 sqrtdf2 floatunsidf \ + floatundidf fmadf4 + -- cgit v1.2.3