diff options
author | Stelios Koroneos <skoroneos@digital-opsis.com> | 2007-11-20 06:24:05 +0000 |
---|---|---|
committer | Stelios Koroneos <skoroneos@digital-opsis.com> | 2007-11-20 06:24:05 +0000 |
commit | dbf523f667e4dbc1152f8f8fad32b96325881042 (patch) | |
tree | ee41d85b78fb3deadbdfc2150b07edabf686e6fb /packages/glibc/files | |
parent | 070ef3c7c70afe9983999986c14b503b2fd89a88 (diff) |
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
Diffstat (limited to 'packages/glibc/files')
-rwxr-xr-x | packages/glibc/files/glibc-2.5-soft-fp-separate-strong-alias.patch | 205 |
1 files changed, 205 insertions, 0 deletions
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
+
|