From: Stelios Koroneos Date: Tue, 20 Nov 2007 06:24:05 +0000 (+0000) Subject: packages/glibc/glibc_2.5.bb : Add a new patch for the powerpc targets with softfloat X-Git-Tag: Release-2010-05/1~8333^2 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=dbf523f667e4dbc1152f8f8fad32b96325881042;p=openembedded.git 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 --- 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 + diff --git a/packages/glibc/glibc_2.5.bb b/packages/glibc/glibc_2.5.bb index 2ffa6f6367..e30d357121 100644 --- a/packages/glibc/glibc_2.5.bb +++ b/packages/glibc/glibc_2.5.bb @@ -5,7 +5,7 @@ ARM_INSTRUCTION_SET = "arm" PACKAGES_DYNAMIC = "libc6*" RPROVIDES_${PN}-dev = "libc6-dev" -PR = "r7" +PR = "r8" # the -isystem in bitbake.conf screws up glibc do_stage BUILD_CPPFLAGS = "-I${STAGING_INCDIR_NATIVE}" @@ -74,7 +74,8 @@ SRC_URI_append_powerpc= " file://ppc-sfp-machine.patch;patch=1 \ file://ppc-soft-fp-20070115.patch;patch=1 \ file://ppc-ld-nofpu-20070104.patch;patch=1 \ file://ppc-ports-ld-nofpu-20070114.patch;patch=1 \ - file://powerpc-sqrt-hack.diff;patch=1"" + file://powerpc-sqrt-hack.diff;patch=1 \ + file://glibc-2.5-soft-fp-separate-strong-alias.patch;patch=1" S = "${WORKDIR}/glibc-${PV}" B = "${WORKDIR}/build-${TARGET_SYS}"