diff options
author | Martin Schlemmer <azarah@gentoo.org> | 2003-01-15 00:36:35 +0000 |
---|---|---|
committer | Martin Schlemmer <azarah@gentoo.org> | 2003-01-15 00:36:35 +0000 |
commit | 6dbc513507262667771035f97aae6156ba35b142 (patch) | |
tree | d776597fc7ef4b58c75933741dabf5fd3b9dc4ed /sys-libs | |
parent | add wrappers to ~x86 (diff) | |
download | gentoo-2-6dbc513507262667771035f97aae6156ba35b142.tar.gz gentoo-2-6dbc513507262667771035f97aae6156ba35b142.tar.bz2 gentoo-2-6dbc513507262667771035f97aae6156ba35b142.zip |
add MIPS patches; fix locale issue, bug #13240
Diffstat (limited to 'sys-libs')
12 files changed, 2080 insertions, 4 deletions
diff --git a/sys-libs/glibc/ChangeLog b/sys-libs/glibc/ChangeLog index ecc802a85d20..4f144deba1b2 100644 --- a/sys-libs/glibc/ChangeLog +++ b/sys-libs/glibc/ChangeLog @@ -1,6 +1,13 @@ # ChangeLog for sys-libs/glibc # Copyright 2002 Gentoo Technologies, Inc.; Distributed under the GPL -# $Header: /var/cvsroot/gentoo-x86/sys-libs/glibc/ChangeLog,v 1.36 2002/12/29 09:38:06 azarah Exp $ +# $Header: /var/cvsroot/gentoo-x86/sys-libs/glibc/ChangeLog,v 1.37 2003/01/15 00:36:35 azarah Exp $ + + 15 Jan 2003; Martin Schlemmer <azarah@gentoo.org> glibc-2.3.1-r2.ebuild : + + Fix 'locale -a' not listing all locales. This to Stefan Jones + <cretin@gentoo.org> for this fix, bug #13240. + + Add MIPS patches, thanks to <tuxus@gentoo.org> and <dragon@gentoo.org>. 28 Dec 2002; Martin Schlemmer <azarah@gentoo.org> glibc-2.3.1-r3.ebuild : diff --git a/sys-libs/glibc/files/2.3.1/glibc-2.3.1-ctype-compat-v3.patch b/sys-libs/glibc/files/2.3.1/glibc-2.3.1-ctype-compat-v3.patch new file mode 100644 index 000000000000..edf03e901307 --- /dev/null +++ b/sys-libs/glibc/files/2.3.1/glibc-2.3.1-ctype-compat-v3.patch @@ -0,0 +1,66 @@ +--- glibc-2.3.1/ctype/ctype-info.c.orig 2002-11-07 15:58:39.000000000 +0200 ++++ glibc-2.3.1/ctype/ctype-info.c 2002-11-07 16:01:24.000000000 +0200 +@@ -48,6 +48,7 @@ + + #define b(t,x,o) (((const t *) _nl_C_LC_CTYPE_##x) + o) + ++#if 0 + const unsigned short int *__ctype_b = b (unsigned short int, class, 128); + const __uint32_t *__ctype32_b = b (__uint32_t, class32, 0); + const __int32_t *__ctype_tolower = b (__int32_t, tolower, 128); +@@ -61,5 +62,23 @@ + compat_symbol (libc, __ctype32_b, __ctype32_b, GLIBC_2_0); + compat_symbol (libc, __ctype32_tolower, __ctype32_tolower, GLIBC_2_2); + compat_symbol (libc, __ctype32_toupper, __ctype32_toupper, GLIBC_2_2); ++#endif + + #endif ++ ++/* Temporarily exported until all .a libraries are recompiled. */ ++#undef b ++#define b(t,x,o) (((const t *) _nl_C_LC_CTYPE_##x) + o) ++ ++extern const char _nl_C_LC_CTYPE_class[] attribute_hidden; ++extern const char _nl_C_LC_CTYPE_class32[] attribute_hidden; ++extern const char _nl_C_LC_CTYPE_toupper[] attribute_hidden; ++extern const char _nl_C_LC_CTYPE_tolower[] attribute_hidden; ++ ++const unsigned short int *__ctype_b = b (unsigned short int, class, 128); ++const __uint32_t *__ctype32_b = b (__uint32_t, class32, 0); ++const __int32_t *__ctype_tolower = b (__int32_t, tolower, 128); ++const __int32_t *__ctype_toupper = b (__int32_t, toupper, 128); ++const __uint32_t *__ctype32_tolower = b (__uint32_t, tolower, 128); ++const __uint32_t *__ctype32_toupper = b (__uint32_t, toupper, 128); ++ +--- glibc-2.3.1/locale/lc-ctype.c.orig 2002-12-30 11:43:39.000000000 +0200 ++++ glibc-2.3.1/locale/lc-ctype.c 2002-12-30 11:48:22.000000000 +0200 +@@ -75,6 +75,7 @@ + We need those relocations so that a versioned definition with a COPY + reloc in an executable will override the libc.so definition. */ + ++#if 0 + compat_symbol (libc, __ctype_b, __ctype_b, GLIBC_2_0); + compat_symbol (libc, __ctype_tolower, __ctype_tolower, GLIBC_2_0); + compat_symbol (libc, __ctype_toupper, __ctype_toupper, GLIBC_2_0); +@@ -89,4 +90,21 @@ + __ctype32_toupper = current (uint32_t, TOUPPER32, 0); + __ctype32_tolower = current (uint32_t, TOLOWER32, 0); + #endif ++ ++#endif ++ ++ /* Temporary. */ ++ extern __const unsigned short int *__ctype_b; /* Characteristics. */ ++ extern __const __int32_t *__ctype_tolower; /* Case conversions. */ ++ extern __const __int32_t *__ctype_toupper; /* Case conversions. */ ++ extern const uint32_t *__ctype32_b; ++ extern const uint32_t *__ctype32_toupper; ++ extern const uint32_t *__ctype32_tolower; ++ ++ __ctype_b = current (uint16_t, CLASS, 128); ++ __ctype_toupper = current (uint32_t, TOUPPER, 128); ++ __ctype_tolower = current (uint32_t, TOLOWER, 128); ++ __ctype32_b = current (uint32_t, CLASS32, 0); ++ __ctype32_toupper = current (uint32_t, TOUPPER32, 0); ++ __ctype32_tolower = current (uint32_t, TOLOWER32, 0); + } diff --git a/sys-libs/glibc/files/2.3.1/glibc-2.3.1-elf-machine-rela-mips.patch b/sys-libs/glibc/files/2.3.1/glibc-2.3.1-elf-machine-rela-mips.patch new file mode 100644 index 000000000000..6bf94f9f5de5 --- /dev/null +++ b/sys-libs/glibc/files/2.3.1/glibc-2.3.1-elf-machine-rela-mips.patch @@ -0,0 +1,33 @@ +# DP: 2002-02-04 H.J. Lu <hjl@gnu.org> +# DP: elf/dl-conflict.c (_dl_resolve_conflicts): Dummy if +# DP: _DL_HAVE_NO_ELF_MACHINE_RELA is defined. + +--- libc/elf/dl-conflict.c.mips Mon Feb 4 13:44:57 2002 ++++ libc/elf/dl-conflict.c Mon Feb 4 15:10:31 2002 +@@ -33,6 +33,7 @@ void + _dl_resolve_conflicts (struct link_map *l, ElfW(Rela) *conflict, + ElfW(Rela) *conflictend) + { ++#ifndef _DL_HAVE_NO_ELF_MACHINE_RELA + if (__builtin_expect (GL(dl_debug_mask) & DL_DEBUG_RELOC, 0)) + _dl_printf ("\nconflict processing: %s\n", + l->l_name[0] ? l->l_name : _dl_argv[0]); +@@ -63,4 +64,5 @@ _dl_resolve_conflicts (struct link_map * + for (; conflict < conflictend; ++conflict) + elf_machine_rela (l, conflict, NULL, NULL, (void *) conflict->r_offset); + } ++#endif + } +--- libc/sysdeps/mips/dl-machine.h.mips Mon Feb 4 13:45:18 2002 ++++ libc/sysdeps/mips/dl-machine.h Mon Feb 4 15:08:39 2002 +@@ -56,6 +56,9 @@ + #define ELF_MACHINE_JMP_SLOT R_MIPS_REL32 + #define elf_machine_type_class(type) ELF_RTYPE_CLASS_PLT + ++/* MIPS doesn't support RELA. */ ++#define _DL_HAVE_NO_ELF_MACHINE_RELA ++ + /* Translate a processor specific dynamic tag to the index + in l_info array. */ + #define DT_MIPS(x) (DT_MIPS_##x - DT_LOPROC + DT_NUM) + diff --git a/sys-libs/glibc/files/2.3.1/glibc-2.3.1-exit-syscall-mips.patch b/sys-libs/glibc/files/2.3.1/glibc-2.3.1-exit-syscall-mips.patch new file mode 100644 index 000000000000..2fe6cf67b73b --- /dev/null +++ b/sys-libs/glibc/files/2.3.1/glibc-2.3.1-exit-syscall-mips.patch @@ -0,0 +1,13 @@ +# DP: mips still has not INLINE_SYSCALL so define __syscall_exit +# DP: status: applied to CVS + +--- libc/sysdeps/unix/sysv/linux/mips/syscalls.list.orig 2002-09-22 13:25:21.000000000 +0000 ++++ libc/sysdeps/unix/sysv/linux/mips/syscalls.list 2002-09-22 13:25:21.000000000 +0000 +@@ -74,6 +74,7 @@ + s_sigprocmask sigprocmask sigprocmask i:ipp __syscall_sigprocmask + s_stat64 xstat64 stat64 i:sp __syscall_stat64 + s_truncate64 truncate64 truncate64 i:siii __syscall_truncate64 ++s_exit _exit exit i:i __syscall_exit + + # Todo: we can pass 6 args in registers, no need for the wrapper + sys_sysctl sysctl _sysctl i:p __syscall__sysctl diff --git a/sys-libs/glibc/files/2.3.1/glibc-2.3.1-fpu-cw-mips.patch b/sys-libs/glibc/files/2.3.1/glibc-2.3.1-fpu-cw-mips.patch new file mode 100644 index 000000000000..392b11648c72 --- /dev/null +++ b/sys-libs/glibc/files/2.3.1/glibc-2.3.1-fpu-cw-mips.patch @@ -0,0 +1,12 @@ +diff -u -r1.6 fpu_control.h +--- libc/sysdeps/mips/fpu_control.h 6 Jul 2001 04:56:00 -0000 1.6 ++++ libc/sysdeps/mips/fpu_control.h 19 Oct 2002 16:03:35 -0000 +@@ -74,7 +74,7 @@ + #define _FPU_RC_UP 0x2 + #define _FPU_RC_DOWN 0x3 + +-#define _FPU_RESERVED 0xfe3c0000 /* Reserved bits in cw */ ++#define _FPU_RESERVED 0xfebc0000 /* Reserved bits in cw */ + + + /* The fdlibm code requires strict IEEE double precision arithmetic, diff --git a/sys-libs/glibc/files/2.3.1/glibc-2.3.1-inline-syscall-mips.patch b/sys-libs/glibc/files/2.3.1/glibc-2.3.1-inline-syscall-mips.patch new file mode 100644 index 000000000000..4ec07a387678 --- /dev/null +++ b/sys-libs/glibc/files/2.3.1/glibc-2.3.1-inline-syscall-mips.patch @@ -0,0 +1,251 @@ +Index: sysdeps/unix/sysv/linux/mips/sysdep.h +=================================================================== +RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/mips/sysdep.h,v +retrieving revision 1.2 +diff -u -u -r1.2 sysdep.h +--- libc/sysdeps/unix/sysv/linux/mips/sysdep.h 6 Jul 2001 04:56:18 -0000 1.2 ++++ libc/sysdeps/unix/sysv/linux/mips/sysdep.h 21 Oct 2002 10:33:16 -0000 +@@ -33,4 +33,243 @@ + # define SYS_ify(syscall_name) __NR_/**/syscall_name + #endif + ++#undef INLINE_SYSCALL ++#define INLINE_SYSCALL(name, nr, args...) inline_syscall##nr(name, args) ++ ++#define __SYSCALL_CLOBBERS "$1", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24", "$25" ++ ++#define inline_syscall0(name,dummy...) \ ++({ \ ++ register unsigned long __v0 asm("$2") = SYS_ify(name); \ ++ register unsigned long __a3 asm("$7"); \ ++ unsigned long _sys_result; \ ++ \ ++ __asm__ volatile ( \ ++ ".set\tnoreorder\n\t" \ ++ "li\t$2, %2\t\t\t# " #name "\n\t" \ ++ "syscall\n\t" \ ++ ".set reorder" \ ++ : "=&r" (__v0), "=r" (__a3) \ ++ : "i" (SYS_ify(name)) \ ++ : "$4", "$5", "$6", __SYSCALL_CLOBBERS); \ ++ \ ++ if ( __a3 ) { \ ++ unsigned long _sys_error = __v0; \ ++ __set_errno(_sys_error); \ ++ _sys_result = (unsigned long)(-1); \ ++ } else \ ++ _sys_result = __v0; \ ++ _sys_result; \ ++}) ++ ++#define inline_syscall1(name,arg1) \ ++({ \ ++ register unsigned long __v0 asm("$2") = SYS_ify(name); \ ++ register unsigned long __a0 asm("$4") = (unsigned long) arg1; \ ++ register unsigned long __a3 asm("$7"); \ ++ unsigned long _sys_result; \ ++ \ ++ __asm__ volatile ( \ ++ ".set\tnoreorder\n\t" \ ++ "li\t$2, %3\t\t\t# " #name "\n\t" \ ++ "syscall\n\t" \ ++ ".set reorder" \ ++ : "=&r" (__v0), "=r" (__a3) \ ++ : "r" (__a0), "i" (SYS_ify(name)) \ ++ : "$5", "$6", __SYSCALL_CLOBBERS); \ ++ \ ++ if ( __a3 ) { \ ++ unsigned long _sys_error = __v0; \ ++ __set_errno(_sys_error); \ ++ _sys_result = (unsigned long)(-1); \ ++ } else \ ++ _sys_result = __v0; \ ++ _sys_result; \ ++}) ++ ++ ++ ++#define inline_syscall2(name,arg1,arg2) \ ++({ \ ++ register unsigned long __v0 asm("$2") = SYS_ify(name); \ ++ register unsigned long __a0 asm("$4") = (unsigned long) arg1; \ ++ register unsigned long __a1 asm("$5") = (unsigned long) arg2; \ ++ register unsigned long __a3 asm("$7"); \ ++ unsigned long _sys_result; \ ++ \ ++ __asm__ volatile ( \ ++ ".set\tnoreorder\n\t" \ ++ "li\t$2, %4\t\t\t# " #name "\n\t" \ ++ "syscall\n\t" \ ++ ".set\treorder" \ ++ : "=&r" (__v0), "=r" (__a3) \ ++ : "r" (__a0), "r" (__a1), "i" (SYS_ify(name)) \ ++ : "$6", __SYSCALL_CLOBBERS); \ ++ \ ++ if ( __a3 ) { \ ++ unsigned long _sys_error = __v0; \ ++ __set_errno(_sys_error); \ ++ _sys_result = (unsigned long)(-1); \ ++ } else \ ++ _sys_result = __v0; \ ++ _sys_result; \ ++}) ++ ++#define inline_syscall3(name,arg1,arg2,arg3) \ ++({ \ ++ register unsigned long __v0 asm("$2") = SYS_ify(name); \ ++ register unsigned long __a0 asm("$4") = (unsigned long) arg1; \ ++ register unsigned long __a1 asm("$5") = (unsigned long) arg2; \ ++ register unsigned long __a2 asm("$6") = (unsigned long) arg3; \ ++ register unsigned long __a3 asm("$7"); \ ++ unsigned long _sys_result; \ ++ \ ++ __asm__ volatile ( \ ++ ".set\tnoreorder\n\t" \ ++ "li\t$2, %5\t\t\t# " #name "\n\t" \ ++ "syscall\n\t" \ ++ ".set\treorder" \ ++ : "=&r" (__v0), "=r" (__a3) \ ++ : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)) \ ++ : __SYSCALL_CLOBBERS); \ ++ \ ++ if (__a3 ) { \ ++ unsigned long _sys_error = __v0; \ ++ __set_errno(_sys_error); \ ++ _sys_result = (unsigned long)(-1); \ ++ } else \ ++ _sys_result = __v0; \ ++ _sys_result; \ ++}) ++ ++#define inline_syscall4(name,arg1,arg2,arg3,arg4) \ ++({ \ ++ register unsigned long __v0 asm("$2") = SYS_ify(name); \ ++ register unsigned long __a0 asm("$4") = (unsigned long) arg1; \ ++ register unsigned long __a1 asm("$5") = (unsigned long) arg2; \ ++ register unsigned long __a2 asm("$6") = (unsigned long) arg3; \ ++ register unsigned long __a3 asm("$7") = (unsigned long) arg4; \ ++ unsigned long _sys_result; \ ++ \ ++ __asm__ volatile ( \ ++ ".set\tnoreorder\n\t" \ ++ "li\t$2, %5\t\t\t# " #name "\n\t" \ ++ "syscall\n\t" \ ++ ".set\treorder" \ ++ : "=&r" (__v0), "+r" (__a3) \ ++ : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)) \ ++ : __SYSCALL_CLOBBERS); \ ++ \ ++ if ( __a3 ) { \ ++ unsigned long _sys_error = __v0; \ ++ __set_errno(_sys_error); \ ++ _sys_result = (unsigned long)(-1); \ ++ } else \ ++ _sys_result = __v0; \ ++ _sys_result; \ ++}) ++ ++#define inline_syscall5(name,arg1,arg2,arg3,arg4,arg5) \ ++({ \ ++ register unsigned long __v0 asm("$2") = SYS_ify(name); \ ++ register unsigned long __a0 asm("$4") = (unsigned long) arg1; \ ++ register unsigned long __a1 asm("$5") = (unsigned long) arg2; \ ++ register unsigned long __a2 asm("$6") = (unsigned long) arg3; \ ++ register unsigned long __a3 asm("$7") = (unsigned long) arg4; \ ++ unsigned long _sys_result; \ ++ \ ++ __asm__ volatile ( \ ++ ".set\tnoreorder\n\t" \ ++ "lw\t$2, %6\n\t" \ ++ "subu\t$29, 32\n\t" \ ++ "sw\t$2, 16($29)\n\t" \ ++ "li\t$2, %5\t\t\t# " #name "\n\t" \ ++ "syscall\n\t" \ ++ "addiu\t$29, 32\n\t" \ ++ ".set\treorder" \ ++ : "=&r" (__v0), "+r" (__a3) \ ++ : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)), \ ++ "m" ((unsigned long)arg5) \ ++ : __SYSCALL_CLOBBERS); \ ++ \ ++ if (__a3 != 0) { \ ++ unsigned long _sys_error = __v0; \ ++ __set_errno(_sys_error); \ ++ _sys_result = (unsigned long)(-1); \ ++ } else \ ++ _sys_result = __v0; \ ++ _sys_result; \ ++}) ++ ++#define inline_syscall6(name,arg1,arg2,arg3,arg4,arg5,arg6) \ ++({ \ ++ register unsigned long __v0 asm("$2") = SYS_ify(name); \ ++ register unsigned long __a0 asm("$4") = (unsigned long) arg1; \ ++ register unsigned long __a1 asm("$5") = (unsigned long) arg2; \ ++ register unsigned long __a2 asm("$6") = (unsigned long) arg3; \ ++ register unsigned long __a3 asm("$7") = (unsigned long) arg4; \ ++ unsigned long _sys_result; \ ++ \ ++ __asm__ volatile ( \ ++ ".set\tnoreorder\n\t" \ ++ "lw\t$2, %6\n\t" \ ++ "lw\t$8, %7\n\t" \ ++ "subu\t$29, 32\n\t" \ ++ "sw\t$2, 16($29)\n\t" \ ++ "sw\t$8, 20($29)\n\t" \ ++ "li\t$2, %5\t\t\t# " #name "\n\t" \ ++ "syscall\n\t" \ ++ "addiu\t$29, 32\n\t" \ ++ ".set\treorder" \ ++ : "=&r" (__v0), "+r" (__a3) \ ++ : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)), \ ++ "m" ((unsigned long)arg5), "m" ((unsigned long)arg6) \ ++ : __SYSCALL_CLOBBERS); \ ++ \ ++ if ( __a3 ) { \ ++ unsigned long _sys_error = __v0; \ ++ __set_errno(_sys_error); \ ++ _sys_result = (unsigned long)(-1); \ ++ } else \ ++ _sys_result = __v0; \ ++ _sys_result; \ ++}) ++ ++#define inline_syscall7(name,arg1,arg2,arg3,arg4,arg5,arg6,arg7) \ ++({ \ ++ register unsigned long __v0 asm("$2") = SYS_ify(name); \ ++ register unsigned long __a0 asm("$4") = (unsigned long) arg1; \ ++ register unsigned long __a1 asm("$5") = (unsigned long) arg2; \ ++ register unsigned long __a2 asm("$6") = (unsigned long) arg3; \ ++ register unsigned long __a3 asm("$7") = (unsigned long) arg4; \ ++ unsigned long _sys_result; \ ++ \ ++ __asm__ volatile ( \ ++ ".set\tnoreorder\n\t" \ ++ "lw\t$2, %6\n\t" \ ++ "lw\t$8, %7\n\t" \ ++ "lw\t$9, %8\n\t" \ ++ "subu\t$29, 32\n\t" \ ++ "sw\t$2, 16($29)\n\t" \ ++ "sw\t$8, 20($29)\n\t" \ ++ "sw\t$9, 24($29)\n\t" \ ++ "li\t$2, %5\t\t\t# " #name "\n\t" \ ++ "syscall\n\t" \ ++ "addiu\t$29, 32\n\t" \ ++ ".set\treorder" \ ++ : "=&r" (__v0), "+r" (__a3) \ ++ : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)), \ ++ "m" ((unsigned long)arg5), "m" ((unsigned long)arg6), \ ++ "m" ((unsigned long)arg7) \ ++ : __SYSCALL_CLOBBERS); \ ++ \ ++ if ( __a3 ) { \ ++ unsigned long _sys_error = __v0; \ ++ __set_errno(_sys_error); \ ++ _sys_result = (unsigned long)(-1); \ ++ } else \ ++ _sys_result = __v0; \ ++ _sys_result; \ ++}) ++ + #endif /* linux/mips/sysdep.h */ diff --git a/sys-libs/glibc/files/2.3.1/glibc-2.3.1-libgcc-compat-mips.patch b/sys-libs/glibc/files/2.3.1/glibc-2.3.1-libgcc-compat-mips.patch new file mode 100644 index 000000000000..cc8fabbb89cb --- /dev/null +++ b/sys-libs/glibc/files/2.3.1/glibc-2.3.1-libgcc-compat-mips.patch @@ -0,0 +1,173 @@ +# DP: Description: libgcc-compat symbols for mips +# DP: Author: Guido Guenther +# DP: thanks to Jack Howarth for explanations and help +# DP: Upstream status: Not submitted +# DP: Date: 2002-10-13, updated 2002-10-20 + +--- libc/sysdeps/mips/Makefile.orig Sun Oct 13 14:45:56 2002 ++++ libc/sysdeps/mips/Makefile Sun Oct 13 14:51:20 2002 +@@ -6,3 +6,15 @@ + ifeq ($(subdir),setjmp) + sysdep_routines += setjmp_aux + endif ++ ++ifeq ($(subdir),csu) ++ifeq (yes,$(build-shared)) ++# Compatibility ++ifeq (yes,$(have-protected)) ++CPPFLAGS-divdi3.c = -DHAVE_DOT_HIDDEN ++CPPFLAGS-libgcc-compat.c = -DHAVE_DOT_HIDDEN ++endif ++sysdep_routines += libgcc-compat ++shared-only-routines += libgcc-compat ++endif ++endif +--- libc/sysdeps/mips/Dist.orig Sun Oct 13 15:07:31 2002 ++++ libc/sysdeps/mips/Dist Sun Oct 13 15:07:41 2002 +@@ -1,3 +1,5 @@ ++divdi3.c ++libgcc-compat.c + setjmp_aux.c + regdef.h + sgidefs.h +--- /dev/null Sat Mar 16 18:32:44 2002 ++++ libc/sysdeps/mips/divdi3.c Sun Oct 13 14:44:34 2002 +@@ -0,0 +1,43 @@ ++/* 64-bit multiplication and division libgcc routines for 32-bit mips ++ Copyright (C) 2002 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. */ ++ ++#define _DIVDI3_C ++#include <sysdeps/wordsize-32/divdi3.c> ++ ++INTDEF (__udivdi3); ++INTDEF (__moddi3); ++INTDEF (__umoddi3); ++ ++#ifdef HAVE_DOT_HIDDEN ++asm (".hidden __divdi3"); ++asm (".hidden __udivdi3"); ++asm (".hidden __moddi3"); ++asm (".hidden __umoddi3"); ++#endif ++ ++#include <shlib-compat.h> ++ ++#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_2_6) ++ ++symbol_version (INTUSE (__divdi3), __divdi3, GLIBC_2.0); ++symbol_version (INTUSE (__udivdi3), __udivdi3, GLIBC_2.0); ++symbol_version (INTUSE (__moddi3), __moddi3, GLIBC_2.0); ++symbol_version (INTUSE (__umoddi3), __umoddi3, GLIBC_2.0); ++ ++#endif +--- /dev/null Sat Mar 16 18:32:44 2002 ++++ libc/sysdeps/mips/libgcc-compat.c Sun Oct 20 17:11:59 2002 +@@ -0,0 +1,81 @@ ++/* pre-.hidden libgcc compatibility ++ Copyright (C) 2002 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 <stdint.h> ++#include <shlib-compat.h> ++ ++#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_2_6) ++ ++extern int32_t __cmpdi2 (int64_t, int64_t); ++int32_t __cmpdi2_internal (int64_t u, int64_t v) ++{ ++ return __cmpdi2 (u, v); ++} ++symbol_version (__cmpdi2_internal, __cmpdi2, GLIBC_2.0); ++ ++ ++extern int32_t __ucmpdi2 (int64_t, int64_t); ++int32_t __ucmpdi2_internal (int64_t u, int64_t v) ++{ ++ return __ucmpdi2 (u, v); ++} ++symbol_version (__ucmpdi2_internal, __ucmpdi2, GLIBC_2.0); ++ ++ ++extern int64_t __fixdfdi (double); ++int64_t __fixdfdi_internal (double d) ++{ ++ return __fixdfdi (d); ++} ++symbol_version (__fixdfdi_internal, __fixdfdi, GLIBC_2.0); ++ ++ ++extern int64_t __fixsfdi (float); ++int64_t __fixsfdi_internal (float d) ++{ ++ return __fixsfdi (d); ++} ++symbol_version (__fixsfdi_internal, __fixsfdi, GLIBC_2.0); ++ ++ ++extern int64_t __fixunsdfdi (double); ++int64_t __fixunsdfdi_internal (double d) ++{ ++ return __fixunsdfdi (d); ++} ++symbol_version (__fixunsdfdi_internal, __fixunsdfdi, GLIBC_2.0); ++ ++ ++extern double __floatdidf (int64_t); ++double __floatdidf_internal (int64_t u) ++{ ++ return __floatdidf (u); ++} ++symbol_version (__floatdidf_internal, __floatdidf, GLIBC_2.0); ++ ++ ++floatdisf (int64_t); ++float __floatdisf_internal (int64_t u) ++{ ++ return __floatdisf (u); ++} ++symbol_version (__floatdisf_internal, __floatdisf, GLIBC_2.0); ++ ++#endif +--- /dev/null Sat Mar 16 18:32:44 2002 ++++ libc/sysdeps/mips/Versions Sun Oct 20 17:12:00 2002 +@@ -0,0 +1,8 @@ ++libc { ++ GLIBC_2.0 { ++ # Functions from libgcc. ++ __cmpdi2; __ucmpdi2; ++ __divdi3; __moddi3; __udivdi3; __umoddi3; ++ __fixdfdi; __fixsfdi; __fixunsdfdi; __floatdidf; __floatdisf; ++ } ++} diff --git a/sys-libs/glibc/files/2.3.1/glibc-2.3.1-librt-mips.patch b/sys-libs/glibc/files/2.3.1/glibc-2.3.1-librt-mips.patch new file mode 100644 index 000000000000..08fcc2ac6864 --- /dev/null +++ b/sys-libs/glibc/files/2.3.1/glibc-2.3.1-librt-mips.patch @@ -0,0 +1,15 @@ +# DP: add clock_{get,set}time@@GLIBC_2.0 +# DP: although it should actually be @@GLIBC_2.2 + +--- libc/sysdeps/unix/sysv/linux/mips/Versions.orig Tue Sep 24 15:56:55 2002 ++++ libc/sysdeps/unix/sysv/linux/mips/Versions Tue Sep 24 15:49:27 2002 +@@ -34,3 +34,9 @@ + _sys_errlist; sys_errlist; _sys_nerr; sys_nerr; + } + } ++librt { ++ GLIBC_2.0 { ++ # c* ++ clock_gettime; clock_settime; ++ } ++} diff --git a/sys-libs/glibc/files/2.3.1/glibc-2.3.1-locale.patch b/sys-libs/glibc/files/2.3.1/glibc-2.3.1-locale.patch new file mode 100644 index 000000000000..545ba7fbb83f --- /dev/null +++ b/sys-libs/glibc/files/2.3.1/glibc-2.3.1-locale.patch @@ -0,0 +1,323 @@ +--- glibc-2.3.1/locale/programs/locale.c.jj 2003-01-11 18:13:57.000000000 +0000 ++++ glibc-2.3.1/locale/programs/locale.c 2003-01-11 18:13:59.000000000 +0000 +@@ -43,10 +43,12 @@ + + #include "localeinfo.h" + #include "charmap-dir.h" ++#include "../locarchive.h" + + extern void *xmalloc (size_t __n); + extern char *xstrdup (const char *__str); + ++#define ARCHIVE_NAME LOCALEDIR "/locale-archive" + + /* If set print the name of the category. */ + static int show_category_name; +@@ -168,7 +170,11 @@ + int show_keyword_name); + + /* Prototypes for local functions. */ ++static void print_LC_IDENTIFICATION (void *mapped, size_t size); ++static void print_LC_CTYPE (void *mapped, size_t size); + static void write_locales (void); ++static int nameentcmp (const void *a, const void *b); ++static int write_archive_locales (void **all_datap, char *linebuf); + static void write_charmaps (void); + static void show_locale_vars (void); + static void show_info (const char *name); +@@ -327,6 +333,74 @@ + } + + ++static void ++print_LC_IDENTIFICATION (void *mapped, size_t size) ++{ ++ /* Read the information from the file. */ ++ struct ++ { ++ unsigned int magic; ++ unsigned int nstrings; ++ unsigned int strindex[0]; ++ } *filedata = mapped; ++ ++ if (filedata->magic == LIMAGIC (LC_IDENTIFICATION) ++ && (sizeof *filedata ++ + (filedata->nstrings ++ * sizeof (unsigned int)) ++ <= size)) ++ { ++ const char *str; ++ ++#define HANDLE(idx, name) \ ++ str = ((char *) mapped \ ++ + filedata->strindex[_NL_ITEM_INDEX (_NL_IDENTIFICATION_##idx)]); \ ++ if (*str != '\0') \ ++ printf ("%9s | %s\n", name, str) ++ HANDLE (TITLE, "title"); ++ HANDLE (SOURCE, "source"); ++ HANDLE (ADDRESS, "address"); ++ HANDLE (CONTACT, "contact"); ++ HANDLE (EMAIL, "email"); ++ HANDLE (TEL, "telephone"); ++ HANDLE (FAX, "fax"); ++ HANDLE (LANGUAGE, "language"); ++ HANDLE (TERRITORY, "territory"); ++ HANDLE (AUDIENCE, "audience"); ++ HANDLE (APPLICATION, "application"); ++ HANDLE (ABBREVIATION, "abbreviation"); ++ HANDLE (REVISION, "revision"); ++ HANDLE (DATE, "date"); ++ } ++} ++ ++ ++static void ++print_LC_CTYPE (void *mapped, size_t size) ++{ ++ struct ++ { ++ unsigned int magic; ++ unsigned int nstrings; ++ unsigned int strindex[0]; ++ } *filedata = mapped; ++ ++ if (filedata->magic == LIMAGIC (LC_CTYPE) ++ && (sizeof *filedata ++ + (filedata->nstrings ++ * sizeof (unsigned int)) ++ <= size)) ++ { ++ const char *str; ++ ++ str = ((char *) mapped ++ + filedata->strindex[_NL_ITEM_INDEX (_NL_CTYPE_CODESET_NAME)]); ++ if (*str != '\0') ++ printf (" codeset | %s\n", str); ++ } ++} ++ ++ + /* Write the names of all available locales to stdout. We have some + sources of the information: the contents of the locale directory + and the locale.alias file. To avoid duplicates and print the +@@ -358,6 +432,10 @@ + memset (linebuf, '-', sizeof (linebuf) - 1); + linebuf[sizeof (linebuf) - 1] = '\0'; + ++ /* First scan the locale archive. */ ++ if (write_archive_locales (&all_data, linebuf)) ++ first_locale = 0; ++ + /* Now we can look for all files in the directory. */ + ndirents = scandir (LOCALEDIR, &dirents, select_dirs, alphasort); + for (cnt = 0; cnt < ndirents; ++cnt) +@@ -375,7 +453,7 @@ + + if (stat64 (buf, &st) == 0 && S_ISREG (st.st_mode)) + { +- if (verbose) ++ if (verbose && GET (dirents[cnt]->d_name) == NULL) + { + /* Provide some nice output of all kinds of + information. */ +@@ -396,42 +474,7 @@ + MAP_SHARED, fd, 0); + if (mapped != MAP_FAILED) + { +- /* Read the information from the file. */ +- struct +- { +- unsigned int magic; +- unsigned int nstrings; +- unsigned int strindex[0]; +- } *filedata = mapped; +- +- if (filedata->magic == LIMAGIC (LC_IDENTIFICATION) +- && (sizeof *filedata +- + (filedata->nstrings +- * sizeof (unsigned int)) +- <= (size_t) st.st_size)) +- { +- const char *str; +- +-#define HANDLE(idx, name) \ +- str = ((char *) mapped \ +- + filedata->strindex[_NL_ITEM_INDEX (_NL_IDENTIFICATION_##idx)]); \ +- if (*str != '\0') \ +- printf ("%9s | %s\n", name, str) +- HANDLE (TITLE, "title"); +- HANDLE (SOURCE, "source"); +- HANDLE (ADDRESS, "address"); +- HANDLE (CONTACT, "contact"); +- HANDLE (EMAIL, "email"); +- HANDLE (TEL, "telephone"); +- HANDLE (FAX, "fax"); +- HANDLE (LANGUAGE, "language"); +- HANDLE (TERRITORY, "territory"); +- HANDLE (AUDIENCE, "audience"); +- HANDLE (APPLICATION, "application"); +- HANDLE (ABBREVIATION, "abbreviation"); +- HANDLE (REVISION, "revision"); +- HANDLE (DATE, "date"); +- } ++ print_LC_IDENTIFICATION (mapped, st.st_size); + + munmap (mapped, st.st_size); + } +@@ -446,26 +489,7 @@ + MAP_SHARED, fd, 0)) + != MAP_FAILED)) + { +- struct +- { +- unsigned int magic; +- unsigned int nstrings; +- unsigned int strindex[0]; +- } *filedata = mapped; +- +- if (filedata->magic == LIMAGIC (LC_CTYPE) +- && (sizeof *filedata +- + (filedata->nstrings +- * sizeof (unsigned int)) +- <= (size_t) st.st_size)) +- { +- const char *str; +- +- str = ((char *) mapped +- + filedata->strindex[_NL_ITEM_INDEX (_NL_CTYPE_CODESET_NAME)]); +- if (*str != '\0') +- printf (" codeset | %s\n", str); +- } ++ print_LC_CTYPE (mapped, st.st_size); + + munmap (mapped, st.st_size); + } +@@ -474,10 +498,10 @@ + close (fd); + } + } +- else +- /* If the verbose format is not selected we simply +- collect the names. */ +- PUT (xstrdup (dirents[cnt]->d_name)); ++ ++ /* If the verbose format is not selected we simply ++ collect the names. */ ++ PUT (xstrdup (dirents[cnt]->d_name)); + } + } + if (ndirents > 0) +@@ -584,6 +608,113 @@ + } + + ++struct nameent ++{ ++ char *name; ++ uint32_t locrec_offset; ++}; ++ ++ ++static int ++nameentcmp (const void *a, const void *b) ++{ ++ return strcoll (((const struct nameent *) a)->name, ++ ((const struct nameent *) b)->name); ++} ++ ++ ++static int ++write_archive_locales (void **all_datap, char *linebuf) ++{ ++ struct stat64 st; ++ void *all_data = *all_datap; ++ size_t len = 0; ++ struct locarhead *head; ++ struct namehashent *namehashtab; ++ char *addr = MAP_FAILED; ++ int fd, ret = 0; ++ uint32_t cnt; ++ ++ fd = open64 (ARCHIVE_NAME, O_RDONLY); ++ if (fd < 0) ++ return 0; ++ ++ if (fstat64 (fd, &st) < 0 || st.st_size < sizeof (*head)) ++ goto error_out; ++ ++ len = st.st_size; ++ addr = mmap64 (NULL, len, PROT_READ, MAP_SHARED, fd, 0); ++ if (addr == MAP_FAILED) ++ goto error_out; ++ ++ head = (struct locarhead *) addr; ++ if (head->namehash_offset + head->namehash_size > len ++ || head->string_offset + head->string_size > len ++ || head->locrectab_offset + head->locrectab_size > len ++ || head->sumhash_offset + head->sumhash_size > len) ++ goto error_out; ++ ++ namehashtab = (struct namehashent *) (addr + head->namehash_offset); ++ if (! verbose) ++ { ++ for (cnt = 0; cnt < head->namehash_size; ++cnt) ++ if (namehashtab[cnt].locrec_offset != 0) ++ { ++ PUT (xstrdup (addr + namehashtab[cnt].name_offset)); ++ ++ret; ++ } ++ } ++ else ++ { ++ struct nameent *names; ++ uint32_t used; ++ ++ names = (struct nameent *) xmalloc (head->namehash_used ++ * sizeof (struct nameent)); ++ for (cnt = used = 0; cnt < head->namehash_size; ++cnt) ++ if (namehashtab[cnt].locrec_offset != 0) ++ { ++ names[used].name = addr + namehashtab[cnt].name_offset; ++ names[used++].locrec_offset = namehashtab[cnt].locrec_offset; ++ } ++ ++ /* Sort the names. */ ++ qsort (names, used, sizeof (struct nameent), nameentcmp); ++ ++ for (cnt = 0; cnt < used; ++cnt) ++ { ++ struct locrecent *locrec; ++ ++ PUT (xstrdup (names[cnt].name)); ++ ++ if (cnt) ++ putchar_unlocked ('\n'); ++ ++ printf ("locale: %-15.15s archive: " ARCHIVE_NAME "\n%s\n", ++ names[cnt].name, linebuf); ++ ++ locrec = (struct locrecent *) (addr + names[cnt].locrec_offset); ++ ++ print_LC_IDENTIFICATION (addr ++ + locrec->record[LC_IDENTIFICATION].offset, ++ locrec->record[LC_IDENTIFICATION].len); ++ ++ print_LC_CTYPE (addr + locrec->record[LC_CTYPE].offset, ++ locrec->record[LC_CTYPE].len); ++ } ++ ++ ret = used; ++ } ++ ++error_out: ++ if (addr != MAP_FAILED) ++ munmap (addr, len); ++ close (fd); ++ *all_datap = all_data; ++ return ret; ++} ++ ++ + /* Write the names of all available character maps to stdout. */ + static void + write_charmaps (void) diff --git a/sys-libs/glibc/files/2.3.1/glibc-2.3.1-tst-rndseek-mips.patch b/sys-libs/glibc/files/2.3.1/glibc-2.3.1-tst-rndseek-mips.patch new file mode 100644 index 000000000000..57d49cf49550 --- /dev/null +++ b/sys-libs/glibc/files/2.3.1/glibc-2.3.1-tst-rndseek-mips.patch @@ -0,0 +1,16 @@ +# DP: Description: we need a longer timeout for slow machines +# DP: Author: Guido Guenther <agx@sigxcpu.org> +# DP: Upstream status: In CVS +# DP: Date: 2002-10-16 + +--- libc/stdio-common/tst-rndseek.c.orig Wed Oct 16 17:02:06 2002 ++++ libc/stdio-common/tst-rndseek.c Wed Oct 16 17:02:16 2002 +@@ -10,7 +10,7 @@ + + static int do_test (void); + #define TEST_FUNCTION do_test () +-#define TIMEOUT 4 ++#define TIMEOUT 10 + + #include "../test-skeleton.c" + diff --git a/sys-libs/glibc/files/2.3.1/glibc-2.3.1-ulps-mips.patch b/sys-libs/glibc/files/2.3.1/glibc-2.3.1-ulps-mips.patch new file mode 100644 index 000000000000..b4f725bac2a5 --- /dev/null +++ b/sys-libs/glibc/files/2.3.1/glibc-2.3.1-ulps-mips.patch @@ -0,0 +1,1146 @@ +# DP: Description: update libm-test-ulps for mips +# DP: Author: Guido Guenther <agx@sigxcpu.org> +# DP: Upstream status: In CVS +# DP: Date: 2002-10-13 + +--- libc/sysdeps/mips/fpu/libm-test-ulps.agx 2001-09-15 05:00:16.000000000 +0200 ++++ libc/sysdeps/mips/fpu/libm-test-ulps 2002-10-12 23:44:56.000000000 +0200 +@@ -1,61 +1,18 @@ + # Begin of automatic generation + +-# asin +-Test "asin (-0.5) == -pi/6": +-float: 2 +-ifloat: 2 +-Test "asin (0.5) == pi/6": +-float: 2 +-ifloat: 2 +-Test "asin (0.7) == 0.77539749661075306374035335271498708": +-double: 1 +-float: 2 +-idouble: 1 +-ifloat: 2 +- + # atan2 +-Test "atan2 (0.7, -1.0) == 2.530866689200584621918884506789267": ++Test "atan2 (-0.75, -1.0) == -2.49809154479650885165983415456218025": + float: 3 + ifloat: 3 +-Test "atan2 (-0.7, -1.0) == -2.530866689200584621918884506789267": ++Test "atan2 (0.75, -1.0) == 2.49809154479650885165983415456218025": + float: 3 + ifloat: 3 +-Test "atan2 (1.4, -0.93) == 2.1571487668237843754887415992772736": +-float: 4 +-ifloat: 4 +- +-# atanh +-Test "atanh (0.7) == 0.8673005276940531944": +-double: 1 +-idouble: 1 +- +-# cabs +-Test "cabs (-0.7 + 12.4 i) == 12.419742348374220601176836866763271": +-float: 1 +-ifloat: 1 +-Test "cabs (-0.7 - 12.4 i) == 12.419742348374220601176836866763271": +-float: 1 +-ifloat: 1 +-Test "cabs (-12.4 + 0.7 i) == 12.419742348374220601176836866763271": +-float: 1 +-ifloat: 1 +-Test "cabs (-12.4 - 0.7 i) == 12.419742348374220601176836866763271": +-float: 1 +-ifloat: 1 +-Test "cabs (0.7 + 1.2 i) == 1.3892443989449804508432547041028554": +-double: 1 +-idouble: 1 +-Test "cabs (0.7 + 12.4 i) == 12.419742348374220601176836866763271": ++Test "atan2 (1.390625, 0.9296875) == 0.981498387184244311516296577615519772": + float: 1 + ifloat: 1 + +-# cacos +-Test "Real part of: cacos (0.7 + 1.2 i) == 1.1351827477151551088992008271819053 - 1.0927647857577371459105272080819308 i": +-double: 1 +-float: 1 +-idouble: 1 +-ifloat: 1 +-Test "Imaginary part of: cacos (0.7 + 1.2 i) == 1.1351827477151551088992008271819053 - 1.0927647857577371459105272080819308 i": ++# atanh ++Test "atanh (0.75) == 0.972955074527656652552676371721589865": + float: 1 + ifloat: 1 + +@@ -70,20 +27,12 @@ + float: 3 + idouble: 1 + ifloat: 3 +-Test "Real part of: cacosh (0.7 + 1.2 i) == 1.0927647857577371459105272080819308 + 1.1351827477151551088992008271819053 i": +-double: 1 +-float: 1 +-idouble: 1 +-ifloat: 1 + + # casin +-Test "Real part of: casin (0.7 + 1.2 i) == 0.4356135790797415103321208644578462 + 1.0927647857577371459105272080819308 i": +-double: 3 +-float: 2 +-idouble: 3 +-ifloat: 2 +-Test "Imaginary part of: casin (0.7 + 1.2 i) == 0.4356135790797415103321208644578462 + 1.0927647857577371459105272080819308 i": ++Test "Real part of: casin (0.75 + 1.25 i) == 0.453276177638793913448921196101971749 + 1.13239363160530819522266333696834467 i": ++double: 1 + float: 1 ++idouble: 1 + ifloat: 1 + + # casinh +@@ -97,11 +46,13 @@ + float: 6 + idouble: 3 + ifloat: 6 +-Test "Real part of: casinh (0.7 + 1.2 i) == 0.97865459559367387689317593222160964 + 0.91135418953156011567903546856170941 i": ++Test "Real part of: casinh (0.75 + 1.25 i) == 1.03171853444778027336364058631006594 + 0.911738290968487636358489564316731207 i": ++float: 1 ++ifloat: 1 ++Test "Imaginary part of: casinh (0.75 + 1.25 i) == 1.03171853444778027336364058631006594 + 0.911738290968487636358489564316731207 i": + double: 1 +-idouble: 1 +-Test "Imaginary part of: casinh (0.7 + 1.2 i) == 0.97865459559367387689317593222160964 + 0.91135418953156011567903546856170941 i": + float: 1 ++idouble: 1 + ifloat: 1 + + # catan +@@ -113,12 +64,9 @@ + float: 1 + idouble: 1 + ifloat: 1 +-Test "Real part of: catan (0.7 + 1.2 i) == 1.0785743834118921877443707996386368 + 0.57705737765343067644394541889341712 i": ++Test "Real part of: catan (0.75 + 1.25 i) == 1.10714871779409050301706546017853704 + 0.549306144334054845697622618461262852 i": + float: 4 + ifloat: 4 +-Test "Imaginary part of: catan (0.7 + 1.2 i) == 1.0785743834118921877443707996386368 + 0.57705737765343067644394541889341712 i": +-double: 1 +-idouble: 1 + + # catanh + Test "Real part of: catanh (-2 - 3 i) == -0.14694666622552975204743278515471595 - 1.3389725222944935611241935759091443 i": +@@ -127,20 +75,21 @@ + Test "Imaginary part of: catanh (-2 - 3 i) == -0.14694666622552975204743278515471595 - 1.3389725222944935611241935759091443 i": + float: 4 + ifloat: 4 +-Test "Real part of: catanh (0.7 + 1.2 i) == 0.2600749516525135959200648705635915 + 0.97024030779509898497385130162655963 i": +-float: 1 +-ifloat: 1 +-Test "Imaginary part of: catanh (0.7 + 1.2 i) == 0.2600749516525135959200648705635915 + 0.97024030779509898497385130162655963 i": ++Test "Real part of: catanh (0.75 + 1.25 i) == 0.261492138795671927078652057366532140 + 0.996825126463918666098902241310446708 i": + double: 1 +-float: 6 + idouble: 1 ++Test "Imaginary part of: catanh (0.75 + 1.25 i) == 0.261492138795671927078652057366532140 + 0.996825126463918666098902241310446708 i": ++float: 6 + ifloat: 6 + + # cbrt + Test "cbrt (-27.0) == -3.0": + double: 1 + idouble: 1 +-Test "cbrt (0.970299) == 0.99": ++Test "cbrt (0.75) == 0.908560296416069829445605878163630251": ++double: 1 ++idouble: 1 ++Test "cbrt (0.9921875) == 0.997389022060725270579075195353955217": + double: 1 + idouble: 1 + +@@ -148,12 +97,14 @@ + Test "Imaginary part of: ccos (-2 - 3 i) == -4.1896256909688072301 - 9.1092278937553365979 i": + float: 1 + ifloat: 1 +-Test "Real part of: ccos (0.7 + 1.2 i) == 1.3848657645312111080 - 0.97242170335830028619 i": +-double: 1 +-idouble: 1 +-Test "Imaginary part of: ccos (0.7 + 1.2 i) == 1.3848657645312111080 - 0.97242170335830028619 i": ++Test "Real part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i": + double: 1 ++float: 1 + idouble: 1 ++ifloat: 1 ++Test "Imaginary part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i": ++float: 1 ++ifloat: 1 + + # ccosh + Test "Real part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i": +@@ -162,34 +113,30 @@ + Test "Imaginary part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i": + float: 1 + ifloat: 1 +-Test "Real part of: ccosh (0.7 + 1.2 i) == 0.4548202223691477654 + 0.7070296600921537682 i": ++Test "Real part of: ccosh (0.75 + 1.25 i) == 0.408242591877968807788852146397499084 + 0.780365930845853240391326216300863152 i": + double: 1 + float: 1 + idouble: 1 + ifloat: 1 +-Test "Imaginary part of: ccosh (0.7 + 1.2 i) == 0.4548202223691477654 + 0.7070296600921537682 i": +-double: 1 +-idouble: 1 ++Test "Imaginary part of: ccosh (0.75 + 1.25 i) == 0.408242591877968807788852146397499084 + 0.780365930845853240391326216300863152 i": ++float: 1 ++ifloat: 1 + + # cexp + Test "Imaginary part of: cexp (-2.0 - 3.0 i) == -0.13398091492954261346140525546115575 - 0.019098516261135196432576240858800925 i": + float: 1 + ifloat: 1 +-Test "Real part of: cexp (0.7 + 1.2 i) == 0.72969890915032360123451688642930727 + 1.8768962328348102821139467908203072 i": +-double: 1 +-float: 1 +-idouble: 1 +-ifloat: 1 +-Test "Imaginary part of: cexp (0.7 + 1.2 i) == 0.72969890915032360123451688642930727 + 1.8768962328348102821139467908203072 i": ++Test "Real part of: cexp (0.75 + 1.25 i) == 0.667537446429131586942201977015932112 + 2.00900045494094876258347228145863909 i": + float: 1 + ifloat: 1 + + # clog + Test "Imaginary part of: clog (-2 - 3 i) == 1.2824746787307683680267437207826593 - 2.1587989303424641704769327722648368 i": +-double: 1 + float: 3 +-idouble: 1 + ifloat: 3 ++Test "Real part of: clog (0.75 + 1.25 i) == 0.376885901188190075998919126749298416 + 1.03037682652431246378774332703115153 i": ++float: 1 ++ifloat: 1 + + # clog10 + Test "Imaginary part of: clog10 (-0 + inf i) == inf + pi/2*log10(e) i": +@@ -227,14 +174,9 @@ + Test "Imaginary part of: clog10 (0 - inf i) == inf - pi/2*log10(e) i": + float: 1 + ifloat: 1 +-Test "Real part of: clog10 (0.7 + 1.2 i) == 0.1427786545038868803 + 0.4528483579352493248 i": +-double: 1 ++Test "Real part of: clog10 (0.75 + 1.25 i) == 0.163679467193165171449476605077428975 + 0.447486970040493067069984724340855636 i": + float: 1 +-idouble: 1 + ifloat: 1 +-Test "Imaginary part of: clog10 (0.7 + 1.2 i) == 0.1427786545038868803 + 0.4528483579352493248 i": +-double: 1 +-idouble: 1 + Test "Imaginary part of: clog10 (3 + inf i) == inf + pi/2*log10(e) i": + float: 1 + ifloat: 1 +@@ -249,28 +191,39 @@ + ifloat: 1 + + # cos +-Test "cos (0.7) == 0.76484218728448842625585999019186495": ++Test "cos (M_PI_6l * 2.0) == 0.5": + double: 1 + float: 1 + idouble: 1 + ifloat: 1 +-Test "cos (M_PI_6l * 2.0) == 0.5": +-double: 1 +-float: 0.5 +-idouble: 1 +-ifloat: 0.5 + Test "cos (M_PI_6l * 4.0) == -0.5": + double: 2 + float: 1 + idouble: 2 + ifloat: 1 + Test "cos (pi/2) == 0": +-double: 0.2758 +-float: 0.3667 +-idouble: 0.2758 +-ifloat: 0.3667 ++double: 1 ++float: 1 ++idouble: 1 ++ifloat: 1 + + # cpow ++Test "Real part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i) == 0.331825439177608832276067945276730566 + 0.131338600281188544930936345230903032 i": ++float: 1 ++ifloat: 1 ++Test "Imaginary part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i) == 0.331825439177608832276067945276730566 + 0.131338600281188544930936345230903032 i": ++float: 1 ++ifloat: 1 ++Test "Real part of: cpow (0.75 + 1.25 i, 0.75 + 1.25 i) == 0.117506293914473555420279832210420483 + 0.346552747708338676483025352060418001 i": ++double: 1 ++float: 4 ++idouble: 1 ++ifloat: 4 ++Test "Real part of: cpow (0.75 + 1.25 i, 1.0 + 1.0 i) == 0.0846958290317209430433805274189191353 + 0.513285749182902449043287190519090481 i": ++double: 2 ++float: 3 ++idouble: 2 ++ifloat: 3 + Test "Real part of: cpow (2 + 3 i, 4 + 0 i) == -119.0 - 120.0 i": + double: 1 + float: 4 +@@ -285,19 +238,14 @@ + idouble: 2 + ifloat: 2 + +-# csin +-Test "Imaginary part of: csin (0.7 + 1.2 i) == 1.1664563419657581376 + 1.1544997246948547371 i": +-float: 1 +-ifloat: 1 +- + # csinh + Test "Imaginary part of: csinh (-2 - 3 i) == 3.5905645899857799520 - 0.5309210862485198052 i": + double: 1 + idouble: 1 +-Test "Real part of: csinh (0.7 + 1.2 i) == 0.27487868678117583582 + 1.1698665727426565139 i": ++Test "Real part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i": + float: 1 + ifloat: 1 +-Test "Imaginary part of: csinh (0.7 + 1.2 i) == 0.27487868678117583582 + 1.1698665727426565139 i": ++Test "Imaginary part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i": + float: 1 + ifloat: 1 + +@@ -308,27 +256,14 @@ + Test "Real part of: csqrt (-2 - 3 i) == 0.89597747612983812471573375529004348 - 1.6741492280355400404480393008490519 i": + float: 1 + ifloat: 1 +-Test "Real part of: csqrt (0.7 + 1.2 i) == 1.022067610030026450706487883081139 + 0.58704531296356521154977678719838035 i": +-double: 1 +-float: 1 +-idouble: 1 +-ifloat: 1 +-Test "Imaginary part of: csqrt (0.7 + 1.2 i) == 1.022067610030026450706487883081139 + 0.58704531296356521154977678719838035 i": +-float: 1 +-ifloat: 1 + + # ctan + Test "Real part of: ctan (-2 - 3 i) == 0.0037640256415042482 - 1.0032386273536098014 i": + double: 1 + idouble: 1 +-Test "Real part of: ctan (0.7 + 1.2 i) == 0.1720734197630349001 + 0.9544807059989405538 i": +-float: 1 +-ifloat: 1 +-Test "Imaginary part of: ctan (0.7 + 1.2 i) == 0.1720734197630349001 + 0.9544807059989405538 i": ++Test "Imaginary part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i": + double: 1 +-float: 1 + idouble: 1 +-ifloat: 1 + + # ctanh + Test "Real part of: ctanh (-2 - 3 i) == -0.9653858790221331242 + 0.0098843750383224937 i": +@@ -339,34 +274,22 @@ + Test "Imaginary part of: ctanh (0 + pi/4 i) == 0.0 + 1.0 i": + float: 1 + ifloat: 1 +-Test "Real part of: ctanh (0.7 + 1.2 i) == 1.3472197399061191630 + 0.4778641038326365540 i": +-double: 2 +-float: 1 +-idouble: 2 +-ifloat: 1 +-Test "Imaginary part of: ctanh (0.7 + 1.2 i) == 1.3472197399061191630 + 0.4778641038326365540 i": +-double: 2 +-float: 1 +-idouble: 2 +-ifloat: 1 ++Test "Real part of: ctanh (0.75 + 1.25 i) == 1.37260757053378320258048606571226857 + 0.385795952609750664177596760720790220 i": ++double: 1 ++idouble: 1 ++ ++# erf ++Test "erf (1.25) == 0.922900128256458230136523481197281140": ++double: 1 ++idouble: 1 + + # erfc +-Test "erfc (0.7) == 0.32219880616258152702": ++Test "erfc (2.0) == 0.00467773498104726583793074363274707139": + double: 1 + idouble: 1 +-Test "erfc (1.2) == 0.089686021770364619762": +-double: 2 +-float: 2 +-idouble: 2 +-ifloat: 2 +-Test "erfc (2.0) == 0.0046777349810472658379": ++Test "erfc (4.125) == 0.542340079956506600531223408575531062e-8": + double: 1 + idouble: 1 +-Test "erfc (4.1) == 0.67000276540848983727e-8": +-double: 24 +-float: 12 +-idouble: 24 +-ifloat: 12 + + # exp10 + Test "exp10 (-1) == 0.1": +@@ -374,8 +297,10 @@ + float: 1 + idouble: 2 + ifloat: 1 +-Test "exp10 (0.7) == 5.0118723362727228500155418688494574": ++Test "exp10 (0.75) == 5.62341325190349080394951039776481231": ++double: 1 + float: 1 ++idouble: 1 + ifloat: 1 + Test "exp10 (3) == 1000": + double: 6 +@@ -384,32 +309,13 @@ + ifloat: 2 + + # expm1 ++Test "expm1 (0.75) == 1.11700001661267466854536981983709561": ++double: 1 ++idouble: 1 + Test "expm1 (1) == M_El - 1.0": + float: 1 + ifloat: 1 + +-# fmod +-Test "fmod (-6.5, -2.3) == -1.9": +-double: 2 +-float: 1 +-idouble: 2 +-ifloat: 1 +-Test "fmod (-6.5, 2.3) == -1.9": +-double: 2 +-float: 1 +-idouble: 2 +-ifloat: 1 +-Test "fmod (6.5, -2.3) == 1.9": +-double: 2 +-float: 1 +-idouble: 2 +-ifloat: 1 +-Test "fmod (6.5, 2.3) == 1.9": +-double: 2 +-float: 1 +-idouble: 2 +-ifloat: 1 +- + # hypot + Test "hypot (-0.7, -12.4) == 12.419742348374220601176836866763271": + float: 1 +@@ -426,9 +332,6 @@ + Test "hypot (0.7, -12.4) == 12.419742348374220601176836866763271": + float: 1 + ifloat: 1 +-Test "hypot (0.7, 1.2) == 1.3892443989449804508432547041028554": +-double: 1 +-idouble: 1 + Test "hypot (0.7, 12.4) == 12.419742348374220601176836866763271": + float: 1 + ifloat: 1 +@@ -440,95 +343,110 @@ + ifloat: 1 + + # j0 +-Test "j0 (10.0) == -0.24593576445134833520": ++Test "j0 (-4.0) == -3.9714980986384737228659076845169804197562E-1": ++double: 1 ++float: 1 ++idouble: 1 ++ifloat: 1 ++Test "j0 (0.75) == 0.864242275166648623555731103820923211": ++float: 1 ++ifloat: 1 ++Test "j0 (10.0) == -0.245935764451348335197760862485328754": + double: 2 + float: 1 + idouble: 2 + ifloat: 1 +-Test "j0 (2.0) == 0.22389077914123566805": ++Test "j0 (2.0) == 0.223890779141235668051827454649948626": + float: 2 + ifloat: 2 +-Test "j0 (8.0) == 0.17165080713755390609": +-float: 1 +-ifloat: 1 + Test "j0 (4.0) == -3.9714980986384737228659076845169804197562E-1": + double: 1 +-float: 1 +-idouble: 1 +-ifloat: 1 +-ildouble: 1 +-ldouble: 1 +-Test "j0 (-4.0) == -3.9714980986384737228659076845169804197562E-1": +-double: 1 +-float: 1 ++float: 1 + idouble: 1 +-ifloat: 1 +-ildouble: 1 +-ldouble: 1 +- ++ifloat: 1 ++Test "j0 (8.0) == 0.171650807137553906090869407851972001": ++float: 1 ++ifloat: 1 + + # j1 +-Test "j1 (10.0) == 0.043472746168861436670": ++Test "j1 (10.0) == 0.0434727461688614366697487680258592883": + float: 2 + ifloat: 2 +-Test "j1 (2.0) == 0.57672480775687338720": ++Test "j1 (2.0) == 0.576724807756873387202448242269137087": + double: 1 + idouble: 1 +-Test "j1 (8.0) == 0.23463634685391462438": ++Test "j1 (8.0) == 0.234636346853914624381276651590454612": + double: 1 + idouble: 1 + + # jn +-Test "jn (0, 10.0) == -0.24593576445134833520": ++Test "jn (0, -4.0) == -3.9714980986384737228659076845169804197562E-1": ++double: 1 ++float: 1 ++idouble: 1 ++ifloat: 1 ++Test "jn (0, 0.75) == 0.864242275166648623555731103820923211": ++float: 1 ++ifloat: 1 ++Test "jn (0, 10.0) == -0.245935764451348335197760862485328754": + double: 2 + float: 1 + idouble: 2 + ifloat: 1 +-Test "jn (0, 2.0) == 0.22389077914123566805": ++Test "jn (0, 2.0) == 0.223890779141235668051827454649948626": + float: 2 + ifloat: 2 +-Test "jn (0, 8.0) == 0.17165080713755390609": ++Test "jn (0, 4.0) == -3.9714980986384737228659076845169804197562E-1": ++double: 1 ++float: 1 ++idouble: 1 ++ifloat: 1 ++Test "jn (0, 8.0) == 0.171650807137553906090869407851972001": + float: 1 + ifloat: 1 +-Test "jn (1, 10.0) == 0.043472746168861436670": ++Test "jn (1, 10.0) == 0.0434727461688614366697487680258592883": + float: 2 + ifloat: 2 +-Test "jn (1, 2.0) == 0.57672480775687338720": ++Test "jn (1, 2.0) == 0.576724807756873387202448242269137087": + double: 1 + idouble: 1 +-Test "jn (1, 8.0) == 0.23463634685391462438": ++Test "jn (1, 8.0) == 0.234636346853914624381276651590454612": + double: 1 + idouble: 1 +-Test "jn (10, 0.1) == 0.26905328954342155795e-19": +-double: 6 +-float: 4 +-idouble: 6 +-ifloat: 4 +-Test "jn (10, 0.7) == 0.75175911502153953928e-11": +-double: 3 ++Test "jn (10, 0.125) == 0.250543369809369890173993791865771547e-18": ++double: 1 + float: 1 +-idouble: 3 ++idouble: 1 ++ifloat: 1 ++Test "jn (10, 0.75) == 0.149621713117596814698712483621682835e-10": ++double: 1 ++float: 1 ++idouble: 1 + ifloat: 1 +-Test "jn (10, 10.0) == 0.20748610663335885770": ++Test "jn (10, 10.0) == 0.207486106633358857697278723518753428": + double: 4 + float: 3 + idouble: 4 + ifloat: 3 +-Test "jn (10, 2.0) == 0.25153862827167367096e-6": ++Test "jn (10, 2.0) == 0.251538628271673670963516093751820639e-6": + float: 4 + ifloat: 4 +-Test "jn (3, 0.1) == 0.000020820315754756261429": ++Test "jn (3, 0.125) == 0.406503832554912875023029337653442868e-4": + double: 1 ++float: 1 + idouble: 1 +-Test "jn (3, 0.7) == 0.0069296548267508408077": ++ifloat: 1 ++Test "jn (3, 0.75) == 0.848438342327410884392755236884386804e-2": ++double: 1 + float: 1 ++idouble: 1 + ifloat: 1 +-Test "jn (3, 10.0) == 0.058379379305186812343": ++Test "jn (3, 10.0) == 0.0583793793051868123429354784103409563": + double: 3 + float: 1 + idouble: 3 + ifloat: 1 +-Test "jn (3, 2.0) == 0.12894324947440205110": ++Test "jn (3, 2.0) == 0.128943249474402051098793332969239835": + double: 1 + float: 2 + idouble: 1 +@@ -546,87 +464,45 @@ + idouble: 1 + ifloat: 2 + +-# log +-Test "log (0.7) == -0.35667494393873237891263871124118447": +-double: 1 +-float: 1 +-idouble: 1 +-ifloat: 1 +- + # log10 +-Test "log10 (0.7) == -0.15490195998574316929": ++Test "log10 (0.75) == -0.124938736608299953132449886193870744": + double: 1 +-float: 1 ++float: 2 + idouble: 1 +-ifloat: 1 ++ifloat: 2 + Test "log10 (e) == log10(e)": + float: 1 + ifloat: 1 + + # log1p +-Test "log1p (-0.3) == -0.35667494393873237891263871124118447": +-double: 1 +-float: 1 +-idouble: 1 +-ifloat: 1 +- +-# log2 +-Test "log2 (0.7) == -0.51457317282975824043": +-double: 1 ++Test "log1p (-0.25) == -0.287682072451780927439219005993827432": + float: 1 +-idouble: 1 + ifloat: 1 + + # sincos +-Test "sincos (0.7, &sin_res, &cos_res) puts 0.76484218728448842625585999019186495 in cos_res": ++Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.5 in cos_res": + double: 1 + float: 1 + idouble: 1 + ifloat: 1 +-Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.5 in cos_res": +-double: 1 +-float: 0.5 +-idouble: 1 +-ifloat: 0.5 + Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in sin_res": + double: 1 + float: 1 + idouble: 1 + ifloat: 1 + Test "sincos (pi/2, &sin_res, &cos_res) puts 0 in cos_res": +-double: 0.2758 +-float: 0.3667 +-idouble: 0.2758 +-ifloat: 0.3667 +-Test "sincos (pi/6, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in cos_res": +-float: 1 +-ifloat: 1 +- +-# sinh +-Test "sinh (0.7) == 0.75858370183953350346": + double: 1 + float: 1 + idouble: 1 + ifloat: 1 ++Test "sincos (pi/6, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in cos_res": ++float: 1 ++ifloat: 1 + + # tan + Test "tan (pi/4) == 1": +-double: 0.5 +-idouble: 0.5 +- +-# tanh +-Test "tanh (0.7) == 0.60436777711716349631": + double: 1 +-float: 1 + idouble: 1 +-ifloat: 1 +-Test "tanh (-0.7) == -0.60436777711716349631": +-double: 1 +-float: 1 +-idouble: 1 +-ifloat: 1 +-ildouble: 1 +-ldouble: 1 + + # tgamma + Test "tgamma (-0.5) == -2 sqrt (pi)": +@@ -644,174 +520,130 @@ + ifloat: 1 + + # y0 +-Test "y0 (0.7) == -0.19066492933739506743": +-double: 2 +-float: 1 +-idouble: 2 +-ifloat: 1 +-Test "y0 (1.0) == 0.088256964215676957983": ++Test "y0 (1.0) == 0.0882569642156769579829267660235151628": + double: 2 + float: 1 + idouble: 2 + ifloat: 1 +-Test "y0 (1.5) == 0.38244892379775884396": ++Test "y0 (1.5) == 0.382448923797758843955068554978089862": + double: 2 + float: 1 + idouble: 2 + ifloat: 1 +-Test "y0 (10.0) == 0.055671167283599391424": ++Test "y0 (10.0) == 0.0556711672835993914244598774101900481": + float: 1 + ifloat: 1 +-Test "y0 (8.0) == 0.22352148938756622053": ++Test "y0 (8.0) == 0.223521489387566220527323400498620359": + double: 1 + float: 1 + idouble: 1 + ifloat: 1 + + # y1 +-Test "y1 (0.1) == -6.4589510947020269877": ++Test "y1 (0.125) == -5.19993611253477499595928744876579921": + double: 1 + idouble: 1 +-Test "y1 (0.7) == -1.1032498719076333697": +-double: 1 ++Test "y1 (1.5) == -0.412308626973911295952829820633445323": + float: 1 +-idouble: 1 + ifloat: 1 +-Test "y1 (1.5) == -0.41230862697391129595": +-float: 1 +-ifloat: 1 +-Test "y1 (10.0) == 0.24901542420695388392": ++Test "y1 (10.0) == 0.249015424206953883923283474663222803": + double: 3 + float: 1 + idouble: 3 + ifloat: 1 +-Test "y1 (2.0) == -0.10703243154093754689": ++Test "y1 (2.0) == -0.107032431540937546888370772277476637": + double: 1 + float: 1 + idouble: 1 + ifloat: 1 +-Test "y1 (8.0) == -0.15806046173124749426": ++Test "y1 (8.0) == -0.158060461731247494255555266187483550": + double: 1 + float: 2 + idouble: 1 + ifloat: 2 + + # yn +-Test "yn (0, 0.7) == -0.19066492933739506743": ++Test "yn (0, 1.0) == 0.0882569642156769579829267660235151628": + double: 2 + float: 1 + idouble: 2 + ifloat: 1 +-Test "yn (0, 1.0) == 0.088256964215676957983": ++Test "yn (0, 1.5) == 0.382448923797758843955068554978089862": + double: 2 + float: 1 + idouble: 2 + ifloat: 1 +-Test "yn (0, 1.5) == 0.38244892379775884396": +-double: 2 +-float: 1 +-idouble: 2 +-ifloat: 1 +-Test "yn (0, 10.0) == 0.055671167283599391424": ++Test "yn (0, 10.0) == 0.0556711672835993914244598774101900481": + float: 1 + ifloat: 1 +-Test "yn (0, 8.0) == 0.22352148938756622053": ++Test "yn (0, 8.0) == 0.223521489387566220527323400498620359": + double: 1 + float: 1 + idouble: 1 + ifloat: 1 +-Test "yn (1, 0.1) == -6.4589510947020269877": ++Test "yn (1, 0.125) == -5.19993611253477499595928744876579921": + double: 1 + idouble: 1 +-Test "yn (1, 0.7) == -1.1032498719076333697": +-double: 1 +-float: 1 +-idouble: 1 +-ifloat: 1 +-Test "yn (1, 1.5) == -0.41230862697391129595": ++Test "yn (1, 1.5) == -0.412308626973911295952829820633445323": + float: 1 + ifloat: 1 +-Test "yn (1, 10.0) == 0.24901542420695388392": ++Test "yn (1, 10.0) == 0.249015424206953883923283474663222803": + double: 3 + float: 1 + idouble: 3 + ifloat: 1 +-Test "yn (1, 2.0) == -0.10703243154093754689": ++Test "yn (1, 2.0) == -0.107032431540937546888370772277476637": + double: 1 + float: 1 + idouble: 1 + ifloat: 1 +-Test "yn (1, 8.0) == -0.15806046173124749426": ++Test "yn (1, 8.0) == -0.158060461731247494255555266187483550": + double: 1 + float: 2 + idouble: 1 + ifloat: 2 +-Test "yn (10, 0.1) == -0.11831335132045197885e19": +-double: 2 +-float: 2 +-idouble: 2 +-ifloat: 2 +-Test "yn (10, 0.7) == -0.42447194260703866924e10": +-double: 3 +-idouble: 3 +-Test "yn (10, 1.0) == -0.12161801427868918929e9": ++Test "yn (10, 0.125) == -127057845771019398.252538486899753195": + double: 1 + idouble: 1 +-Test "yn (10, 10.0) == -0.35981415218340272205": ++Test "yn (10, 0.75) == -2133501638.90573424452445412893839236": + double: 1 + float: 1 + idouble: 1 + ifloat: 1 +-Test "yn (10, 2.0) == -129184.54220803928264": +-double: 2 +-idouble: 2 +-Test "yn (3, 0.1) == -5099.3323786129048894": ++Test "yn (10, 1.0) == -121618014.278689189288130426667971145": + double: 1 +-float: 1 + idouble: 1 +-ifloat: 1 +-Test "yn (3, 0.7) == -15.819479052819633505": +-double: 3 +-float: 1 +-idouble: 3 +-ifloat: 1 +-Test "yn (3, 10.0) == -0.25136265718383732978": ++Test "yn (10, 10.0) == -0.359814152183402722051986577343560609": + double: 1 + float: 1 + idouble: 1 + ifloat: 1 +-Test "yn (3, 2.0) == -1.1277837768404277861": +-double: 1 +-idouble: 1 +- +-# Maximal error of functions: +-Function: "asin": +-double: 1 +-float: 2 +-idouble: 1 +-ifloat: 2 +- +-Function: "atan2": +-float: 4 +-ifloat: 4 +- +-Function: "atanh": ++Test "yn (10, 2.0) == -129184.542208039282635913145923304214": ++double: 2 ++idouble: 2 ++Test "yn (3, 0.125) == -2612.69757350066712600220955744091741": + double: 1 + idouble: 1 +- +-Function: "cabs": ++Test "yn (3, 0.75) == -12.9877176234475433186319774484809207": + double: 1 + float: 1 + idouble: 1 + ifloat: 1 +- +-Function: Real part of "cacos": ++Test "yn (3, 10.0) == -0.251362657183837329779204747654240998": + double: 1 + float: 1 + idouble: 1 + ifloat: 1 ++Test "yn (3, 2.0) == -1.12778377684042778608158395773179238": ++double: 1 ++idouble: 1 ++ ++# Maximal error of functions: ++Function: "atan2": ++float: 3 ++ifloat: 3 + +-Function: Imaginary part of "cacos": ++Function: "atanh": + float: 1 + ifloat: 1 + +@@ -828,13 +660,9 @@ + ifloat: 3 + + Function: Real part of "casin": +-double: 3 +-float: 2 +-idouble: 3 +-ifloat: 2 +- +-Function: Imaginary part of "casin": ++double: 1 + float: 1 ++idouble: 1 + ifloat: 1 + + Function: Real part of "casinh": +@@ -861,14 +689,10 @@ + + Function: Real part of "catanh": + double: 4 +-float: 1 + idouble: 4 +-ifloat: 1 + + Function: Imaginary part of "catanh": +-double: 1 + float: 6 +-idouble: 1 + ifloat: 6 + + Function: "cbrt": +@@ -877,12 +701,12 @@ + + Function: Real part of "ccos": + double: 1 ++float: 1 + idouble: 1 ++ifloat: 1 + + Function: Imaginary part of "ccos": +-double: 1 + float: 1 +-idouble: 1 + ifloat: 1 + + Function: Real part of "ccosh": +@@ -892,31 +716,27 @@ + ifloat: 1 + + Function: Imaginary part of "ccosh": +-double: 1 + float: 1 +-idouble: 1 + ifloat: 1 + + Function: Real part of "cexp": +-double: 1 + float: 1 +-idouble: 1 + ifloat: 1 + + Function: Imaginary part of "cexp": + float: 1 + ifloat: 1 + ++Function: Real part of "clog": ++float: 1 ++ifloat: 1 ++ + Function: Imaginary part of "clog": +-double: 1 + float: 3 +-idouble: 1 + ifloat: 3 + + Function: Real part of "clog10": +-double: 1 + float: 1 +-idouble: 1 + ifloat: 1 + + Function: Imaginary part of "clog10": +@@ -932,21 +752,17 @@ + ifloat: 1 + + Function: Real part of "cpow": +-double: 1 ++double: 2 + float: 4 +-idouble: 1 ++idouble: 2 + ifloat: 4 + + Function: Imaginary part of "cpow": +-double: 1.1031 ++double: 2 + float: 2 +-idouble: 1.1031 ++idouble: 2 + ifloat: 2 + +-Function: Imaginary part of "csin": +-float: 1 +-ifloat: 1 +- + Function: Real part of "csinh": + float: 1 + ifloat: 1 +@@ -958,44 +774,34 @@ + ifloat: 1 + + Function: Real part of "csqrt": +-double: 1 +-float: 1 +-idouble: 1 +-ifloat: 1 +- +-Function: Imaginary part of "csqrt": + float: 1 + ifloat: 1 + + Function: Real part of "ctan": + double: 1 +-float: 1 + idouble: 1 +-ifloat: 1 + + Function: Imaginary part of "ctan": + double: 1 +-float: 1 + idouble: 1 +-ifloat: 1 + + Function: Real part of "ctanh": +-double: 2 ++double: 1 + float: 2 +-idouble: 2 ++idouble: 1 + ifloat: 2 + + Function: Imaginary part of "ctanh": +-double: 2 + float: 1 +-idouble: 2 + ifloat: 1 + ++Function: "erf": ++double: 1 ++idouble: 1 ++ + Function: "erfc": +-double: 24 +-float: 12 +-idouble: 24 +-ifloat: 12 ++double: 1 ++idouble: 1 + + Function: "exp10": + double: 6 +@@ -1004,19 +810,13 @@ + ifloat: 2 + + Function: "expm1": ++double: 1 + float: 1 +-ifloat: 1 +- +-Function: "fmod": +-double: 2 +-float: 1 +-idouble: 2 ++idouble: 1 + ifloat: 1 + + Function: "hypot": +-double: 1 + float: 1 +-idouble: 1 + ifloat: 1 + + Function: "j0": +@@ -1032,9 +832,9 @@ + ifloat: 2 + + Function: "jn": +-double: 6 ++double: 4 + float: 4 +-idouble: 6 ++idouble: 4 + ifloat: 4 + + Function: "lgamma": +@@ -1043,28 +843,14 @@ + idouble: 1 + ifloat: 2 + +-Function: "log": +-double: 1 +-float: 1 +-idouble: 1 +-ifloat: 1 +- + Function: "log10": + double: 1 +-float: 1 ++float: 2 + idouble: 1 +-ifloat: 1 ++ifloat: 2 + + Function: "log1p": +-double: 1 + float: 1 +-idouble: 1 +-ifloat: 1 +- +-Function: "log2": +-double: 1 +-float: 1 +-idouble: 1 + ifloat: 1 + + Function: "sincos": +@@ -1073,21 +859,9 @@ + idouble: 1 + ifloat: 1 + +-Function: "sinh": +-double: 1 +-float: 1 +-idouble: 1 +-ifloat: 1 +- + Function: "tan": +-double: 0.5 +-idouble: 0.5 +- +-Function: "tanh": + double: 1 +-float: 1 + idouble: 1 +-ifloat: 1 + + Function: "tgamma": + double: 1 diff --git a/sys-libs/glibc/glibc-2.3.1-r2.ebuild b/sys-libs/glibc/glibc-2.3.1-r2.ebuild index c5018ae00319..69a12e8ae595 100644 --- a/sys-libs/glibc/glibc-2.3.1-r2.ebuild +++ b/sys-libs/glibc/glibc-2.3.1-r2.ebuild @@ -1,6 +1,6 @@ # Copyright 1999-2002 Gentoo Technologies, Inc. # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/sys-libs/glibc/glibc-2.3.1-r2.ebuild,v 1.14 2002/12/17 12:45:51 cretin Exp $ +# $Header: /var/cvsroot/gentoo-x86/sys-libs/glibc/glibc-2.3.1-r2.ebuild,v 1.15 2003/01/15 00:36:35 azarah Exp $ IUSE="nls pic build" @@ -44,7 +44,7 @@ SRC_URI="http://ftp.gnu.org/gnu/glibc/glibc-${PV}.tar.gz http://ftp.gnu.org/gnu/glibc/glibc-linuxthreads-${PV}.tar.gz" HOMEPAGE="http://www.gnu.org/software/libc/libc.html" -KEYWORDS="x86 ppc sparc alpha" +KEYWORDS="x86 ppc sparc alpha mips" # Is 99% compadible, just some .a's bork SLOT="2.2" LICENSE="GPL-2" @@ -93,7 +93,7 @@ src_unpack() { # Thanks to Jan Gutter <jangutter@tuks.co.za> for reporting it. # # <azarah@gentoo.org> (26 Oct 2002). - cd ${S}; epatch ${FILESDIR}/${PV}/${P}-ctype-compat-v2.patch + cd ${S}; epatch ${FILESDIR}/${PV}/${P}-ctype-compat-v3.patch # One more compat issue which breaks sun-jdk-1.3.1. See bug #8766 for more # info, and also: @@ -117,6 +117,27 @@ src_unpack() { # http://sources.redhat.com/ml/libc-alpha/2002-11/msg00151.html # <cretin@gentoo.org> (17 Nov 2002). cd ${S}; epatch ${FILESDIR}/${PV}/${P}-prelinkfix.patch + + # Fix 'locale -a' not listing all locales. This to Stefan Jones + # <cretin@gentoo.org> for this fix, bug #13240. + cd ${S}; epatch ${FILESDIR}/${PV}/${P}-locale.patch + + # A few patches only for the MIPS platform. Descriptions of what they + # do can be found in the patch headers. + # <tuxus@gentoo.org> thx <dragon@gentoo.org> (11 Jan 2003) + if [ "${ARCH}" = "mips" ] + then + cd ${S} + epatch ${FILESDIR}/${PV}/${P}-elf-machine-rela-mips.patch + epatch ${FILESDIR}/${PV}/${P}-exit-syscall-mips.patch + epatch ${FILESDIR}/${PV}/${P}-fpu-cw-mips.patch +# epatch ${FILESDIR}/${PV}/${P}-inline-syscall-mips.patch + epatch ${FILESDIR}/${PV}/${P}-libgcc-compat-mips.patch + epatch ${FILESDIR}/${PV}/${P}-librt-mips.patch + epatch ${FILESDIR}/${PV}/${P}-tst-rndseek-mips.patch + epatch ${FILESDIR}/${PV}/${P}-ulps-mips.patch + fi + } src_compile() { |