aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2011-10-11 15:58:45 +0000
committerNatanael Copa <ncopa@alpinelinux.org>2011-10-11 15:58:45 +0000
commit08b04204ba0d1a37309760e7669784f8b8f9c2f6 (patch)
treed30f2c810c4007e88adb403af5a0402af8455e3d
parent29115386566152a5abf056ed1adf8c640afd7f02 (diff)
downloadaports-08b04204ba0d1a37309760e7669784f8b8f9c2f6.tar.bz2
aports-08b04204ba0d1a37309760e7669784f8b8f9c2f6.tar.xz
main/libc0.9.32: add more fenv funcs for x86_64
-rw-r--r--main/libc0.9.32/0001-libm-x86_64-implement-fesetround.patch98
-rw-r--r--main/libc0.9.32/0001-libm-x86_64-implement-some-fenv-functions.patch283
-rw-r--r--main/libc0.9.32/APKBUILD6
3 files changed, 286 insertions, 101 deletions
diff --git a/main/libc0.9.32/0001-libm-x86_64-implement-fesetround.patch b/main/libc0.9.32/0001-libm-x86_64-implement-fesetround.patch
deleted file mode 100644
index 84d6a2e08b..0000000000
--- a/main/libc0.9.32/0001-libm-x86_64-implement-fesetround.patch
+++ /dev/null
@@ -1,98 +0,0 @@
-From b58032ae6a34afc1887d9a6f3d05891d0d4fdbab Mon Sep 17 00:00:00 2001
-From: Natanael Copa <natanael.copa@gmail.com>
-Date: Sun, 28 Nov 2010 12:43:33 +0000
-Subject: [PATCH] libm/x86_64: implement fesetround
-
-from glibc
----
- libm/x86_64/Makefile.arch | 24 +++++++++++++++++++++++
- libm/x86_64/fesetround.c | 46 +++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 70 insertions(+), 0 deletions(-)
- create mode 100644 libm/x86_64/Makefile.arch
- create mode 100644 libm/x86_64/fesetround.c
-
-diff --git a/libm/x86_64/Makefile.arch b/libm/x86_64/Makefile.arch
-new file mode 100644
-index 0000000..e1be961
---- /dev/null
-+++ b/libm/x86_64/Makefile.arch
-@@ -0,0 +1,24 @@
-+# Makefile for uClibc
-+#
-+# Copyright (C) 2000-2008 Erik Andersen <andersen@uclibc.org>
-+#
-+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
-+#
-+# The routines included in this math library are derived from
-+# glibc's libm.
-+#
-+
-+ifeq ($(UCLIBC_HAS_FENV),y)
-+libm_ARCH_SRC:=$(wildcard $(libm_ARCH_DIR)/*.c)
-+libm_ARCH_OBJ:=$(patsubst $(libm_ARCH_DIR)/%.c,$(libm_ARCH_OUT)/%.o,$(libm_ARCH_SRC))
-+endif
-+
-+libm_ARCH_OBJS:=$(libm_ARCH_OBJ)
-+
-+ifeq ($(DOPIC),y)
-+libm-a-y+=$(libm_ARCH_OBJS:.o=.os)
-+else
-+libm-a-y+=$(libm_ARCH_OBJS)
-+endif
-+libm-so-y+=$(libm_ARCH_OBJS:.o=.os)
-+
-diff --git a/libm/x86_64/fesetround.c b/libm/x86_64/fesetround.c
-new file mode 100644
-index 0000000..3d2ef4c
---- /dev/null
-+++ b/libm/x86_64/fesetround.c
-@@ -0,0 +1,46 @@
-+/* Set current rounding direction.
-+ Copyright (C) 2001, 2005 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+
-+ 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.
-+
-+ 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, Inc., 59 Temple Place, Suite 330, Boston, MA
-+ 02111-1307 USA. */
-+
-+#include <fenv.h>
-+
-+int
-+fesetround (int round)
-+{
-+ unsigned short int cw;
-+ int mxcsr;
-+
-+ if ((round & ~0xc00) != 0)
-+ /* ROUND is no valid rounding mode. */
-+ return 1;
-+
-+ /* First set the x87 FPU. */
-+ __asm__ ("fnstcw %0" : "=m" (*&cw));
-+ cw &= ~0xc00;
-+ cw |= round;
-+ __asm__ ("fldcw %0" : : "m" (*&cw));
-+
-+ /* And now the MSCSR register for SSE, the precision is at different bit
-+ positions in the different units, we need to shift it 3 bits. */
-+ __asm__ ("stmxcsr %0" : "=m" (*&mxcsr));
-+ mxcsr &= ~ 0x6000;
-+ mxcsr |= round << 3;
-+ __asm__ ("ldmxcsr %0" : : "m" (*&mxcsr));
-+
-+ return 0;
-+}
---
-1.7.3.2
-
diff --git a/main/libc0.9.32/0001-libm-x86_64-implement-some-fenv-functions.patch b/main/libc0.9.32/0001-libm-x86_64-implement-some-fenv-functions.patch
new file mode 100644
index 0000000000..5d42413722
--- /dev/null
+++ b/main/libc0.9.32/0001-libm-x86_64-implement-some-fenv-functions.patch
@@ -0,0 +1,283 @@
+From 5db70d560df0ab36751045dcb364c3f9eebdc2d1 Mon Sep 17 00:00:00 2001
+From: Natanael Copa <natanael.copa@gmail.com>
+Date: Sun, 28 Nov 2010 12:43:33 +0000
+Subject: [PATCH] libm/x86_64: implement some fenv functions
+
+from glibc
+---
+ libm/x86_64/Makefile.arch | 24 ++++++++++++++++++++
+ libm/x86_64/fclrexcpt.c | 52 ++++++++++++++++++++++++++++++++++++++++++++
+ libm/x86_64/fegetexcept.c | 32 +++++++++++++++++++++++++++
+ libm/x86_64/fesetround.c | 46 ++++++++++++++++++++++++++++++++++++++
+ libm/x86_64/fgetexcptflg.c | 36 ++++++++++++++++++++++++++++++
+ libm/x86_64/ftestexcept.c | 33 +++++++++++++++++++++++++++
+ 6 files changed, 223 insertions(+), 0 deletions(-)
+ create mode 100644 libm/x86_64/Makefile.arch
+ create mode 100644 libm/x86_64/fclrexcpt.c
+ create mode 100644 libm/x86_64/fegetexcept.c
+ create mode 100644 libm/x86_64/fesetround.c
+ create mode 100644 libm/x86_64/fgetexcptflg.c
+ create mode 100644 libm/x86_64/ftestexcept.c
+
+diff --git a/libm/x86_64/Makefile.arch b/libm/x86_64/Makefile.arch
+new file mode 100644
+index 0000000..e1be961
+--- /dev/null
++++ b/libm/x86_64/Makefile.arch
+@@ -0,0 +1,24 @@
++# Makefile for uClibc
++#
++# Copyright (C) 2000-2008 Erik Andersen <andersen@uclibc.org>
++#
++# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
++#
++# The routines included in this math library are derived from
++# glibc's libm.
++#
++
++ifeq ($(UCLIBC_HAS_FENV),y)
++libm_ARCH_SRC:=$(wildcard $(libm_ARCH_DIR)/*.c)
++libm_ARCH_OBJ:=$(patsubst $(libm_ARCH_DIR)/%.c,$(libm_ARCH_OUT)/%.o,$(libm_ARCH_SRC))
++endif
++
++libm_ARCH_OBJS:=$(libm_ARCH_OBJ)
++
++ifeq ($(DOPIC),y)
++libm-a-y+=$(libm_ARCH_OBJS:.o=.os)
++else
++libm-a-y+=$(libm_ARCH_OBJS)
++endif
++libm-so-y+=$(libm_ARCH_OBJS:.o=.os)
++
+diff --git a/libm/x86_64/fclrexcpt.c b/libm/x86_64/fclrexcpt.c
+new file mode 100644
+index 0000000..4fc3bfb
+--- /dev/null
++++ b/libm/x86_64/fclrexcpt.c
+@@ -0,0 +1,52 @@
++/* Clear given exceptions in current floating-point environment.
++ Copyright (C) 2001 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ 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.
++
++ 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, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <fenv.h>
++
++int
++feclearexcept (int excepts)
++{
++ fenv_t temp;
++ unsigned int mxcsr;
++
++ /* Mask out unsupported bits/exceptions. */
++ excepts &= FE_ALL_EXCEPT;
++
++ /* Bah, we have to clear selected exceptions. Since there is no
++ `fldsw' instruction we have to do it the hard way. */
++ __asm__ ("fnstenv %0" : "=m" (*&temp));
++
++ /* Clear the relevant bits. */
++ temp.__status_word &= excepts ^ FE_ALL_EXCEPT;
++
++ /* Put the new data in effect. */
++ __asm__ ("fldenv %0" : : "m" (*&temp));
++
++ /* And the same procedure for SSE. */
++ __asm__ ("stmxcsr %0" : "=m" (*&mxcsr));
++
++ /* Clear the relevant bits. */
++ mxcsr &= ~excepts;
++
++ /* And put them into effect. */
++ __asm__ ("ldmxcsr %0" : : "m" (*&mxcsr));
++
++ /* Success. */
++ return 0;
++}
+diff --git a/libm/x86_64/fegetexcept.c b/libm/x86_64/fegetexcept.c
+new file mode 100644
+index 0000000..04df4b6
+--- /dev/null
++++ b/libm/x86_64/fegetexcept.c
+@@ -0,0 +1,32 @@
++/* Get enabled floating-point exceptions.
++ Copyright (C) 2001 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by Andreas Jaeger <aj@suse.de>, 2001.
++
++ 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.
++
++ 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, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <fenv.h>
++
++int
++fegetexcept (void)
++{
++ unsigned short int exc;
++
++ /* Get the current control word. */
++ __asm__ ("fstcw %0" : "=m" (*&exc));
++
++ return (~exc) & FE_ALL_EXCEPT;
++}
+diff --git a/libm/x86_64/fesetround.c b/libm/x86_64/fesetround.c
+new file mode 100644
+index 0000000..3d2ef4c
+--- /dev/null
++++ b/libm/x86_64/fesetround.c
+@@ -0,0 +1,46 @@
++/* Set current rounding direction.
++ Copyright (C) 2001, 2005 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ 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.
++
++ 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, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <fenv.h>
++
++int
++fesetround (int round)
++{
++ unsigned short int cw;
++ int mxcsr;
++
++ if ((round & ~0xc00) != 0)
++ /* ROUND is no valid rounding mode. */
++ return 1;
++
++ /* First set the x87 FPU. */
++ __asm__ ("fnstcw %0" : "=m" (*&cw));
++ cw &= ~0xc00;
++ cw |= round;
++ __asm__ ("fldcw %0" : : "m" (*&cw));
++
++ /* And now the MSCSR register for SSE, the precision is at different bit
++ positions in the different units, we need to shift it 3 bits. */
++ __asm__ ("stmxcsr %0" : "=m" (*&mxcsr));
++ mxcsr &= ~ 0x6000;
++ mxcsr |= round << 3;
++ __asm__ ("ldmxcsr %0" : : "m" (*&mxcsr));
++
++ return 0;
++}
+diff --git a/libm/x86_64/fgetexcptflg.c b/libm/x86_64/fgetexcptflg.c
+new file mode 100644
+index 0000000..f0681dc
+--- /dev/null
++++ b/libm/x86_64/fgetexcptflg.c
+@@ -0,0 +1,36 @@
++/* Store current representation for exceptions.
++ Copyright (C) 2001 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ 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.
++
++ 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, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <fenv.h>
++
++int
++fegetexceptflag (fexcept_t *flagp, int excepts)
++{
++ fexcept_t temp;
++ unsigned int mxscr;
++
++ /* Get the current exceptions for the x87 FPU and SSE unit. */
++ __asm__ ("fnstsw %0\n"
++ "stmxcsr %1" : "=m" (*&temp), "=m" (*&mxscr));
++
++ *flagp = (temp | mxscr) & FE_ALL_EXCEPT & excepts;
++
++ /* Success. */
++ return 0;
++}
+diff --git a/libm/x86_64/ftestexcept.c b/libm/x86_64/ftestexcept.c
+new file mode 100644
+index 0000000..091c251
+--- /dev/null
++++ b/libm/x86_64/ftestexcept.c
+@@ -0,0 +1,33 @@
++/* Test exception in current environment.
++ Copyright (C) 2001 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ 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.
++
++ 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, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <fenv.h>
++
++int
++fetestexcept (int excepts)
++{
++ int temp;
++ unsigned int mxscr;
++
++ /* Get current exceptions. */
++ __asm__ ("fnstsw %0\n"
++ "stmxcsr %1" : "=m" (*&temp), "=m" (*&mxscr));
++
++ return (temp | mxscr) & excepts & FE_ALL_EXCEPT;
++}
+--
+1.7.7
+
diff --git a/main/libc0.9.32/APKBUILD b/main/libc0.9.32/APKBUILD
index 13010323ca..acb107f370 100644
--- a/main/libc0.9.32/APKBUILD
+++ b/main/libc0.9.32/APKBUILD
@@ -4,7 +4,7 @@ pkgname=libc$_abiver
_gitver=
pkgver=0.9.32
_ver=${pkgver/_/-}
-pkgrel=2
+pkgrel=3
pkgdesc="C library for developing embedded Linux systems"
url=http://uclibc.org
license="LGPL-2"
@@ -23,7 +23,7 @@ source="http://uclibc.org/downloads/uClibc-${_ver}.tar.bz2
compat-stack-guard.patch
uclibc-resolv-cname-fix.diff
0001-resolv-fix-resolver-to-return-TRY_AGAIN-on-timeout.patch
- 0001-libm-x86_64-implement-fesetround.patch
+ 0001-libm-x86_64-implement-some-fenv-functions.patch
0001-ldso-limited-support-for-ORIGIN-in-rpath.patch
0002-stdlib-fix-arc4random-return-type-to-u_int32_t.patch
0003-ldso-support-RTLD_NOLOAD.patch
@@ -131,7 +131,7 @@ md5sums="cfcb6c25d8ebe12817499d8749ee8ae1 uClibc-0.9.32.tar.bz2
a9bfb77ea7dc5fb9abf4d4b19201c614 compat-stack-guard.patch
5d6e3e382b66f59cfd7242a4fe453f98 uclibc-resolv-cname-fix.diff
08f31006426a0fca561f262f36bcfb01 0001-resolv-fix-resolver-to-return-TRY_AGAIN-on-timeout.patch
-e0c901502602f7e9e002d910d0f32ab9 0001-libm-x86_64-implement-fesetround.patch
+68913d6f096fd647e8bdb7ef182c05a4 0001-libm-x86_64-implement-some-fenv-functions.patch
bc164e262c5feab55c800780704fa71c 0001-ldso-limited-support-for-ORIGIN-in-rpath.patch
b4fb68ad3d0e8331b1b40c30eb21dfdc 0002-stdlib-fix-arc4random-return-type-to-u_int32_t.patch
6147efd2eee5af5e734896823c2d1a3d 0003-ldso-support-RTLD_NOLOAD.patch