diff options
Diffstat (limited to 'libc/sysdeps/s390')
-rw-r--r-- | libc/sysdeps/s390/fpu/e_sqrt.c | 5 | ||||
-rw-r--r-- | libc/sysdeps/s390/fpu/e_sqrtf.c | 5 | ||||
-rw-r--r-- | libc/sysdeps/s390/fpu/e_sqrtl.c | 5 | ||||
-rw-r--r-- | libc/sysdeps/s390/fpu/libm-test-ulps | 42 | ||||
-rw-r--r-- | libc/sysdeps/s390/s390-32/dl-machine.h | 12 | ||||
-rw-r--r-- | libc/sysdeps/s390/s390-32/elf/configure | 11 | ||||
-rw-r--r-- | libc/sysdeps/s390/s390-32/elf/configure.in | 6 | ||||
-rw-r--r-- | libc/sysdeps/s390/s390-64/dl-machine.h | 10 | ||||
-rw-r--r-- | libc/sysdeps/s390/s390-64/elf/configure | 11 | ||||
-rw-r--r-- | libc/sysdeps/s390/s390-64/elf/configure.in | 6 |
10 files changed, 72 insertions, 41 deletions
diff --git a/libc/sysdeps/s390/fpu/e_sqrt.c b/libc/sysdeps/s390/fpu/e_sqrt.c index e4b183e4c..affd3a1a5 100644 --- a/libc/sysdeps/s390/fpu/e_sqrt.c +++ b/libc/sysdeps/s390/fpu/e_sqrt.c @@ -1,5 +1,5 @@ -/* Copyright (C) 2004 Free Software Foundation, Inc. - Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). +/* Copyright (C) 2004, 2011 Free Software Foundation, Inc. + Contributed by Martin Schwidefsky <schwidefsky@de.ibm.com>. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -27,3 +27,4 @@ __ieee754_sqrt (double x) asm ( "sqdbr %0,%1" : "=f" (res) : "f" (x) ); return res; } +strong_alias (__ieee754_sqrt, __sqrt_finite) diff --git a/libc/sysdeps/s390/fpu/e_sqrtf.c b/libc/sysdeps/s390/fpu/e_sqrtf.c index 5b5e06e8a..4272f059d 100644 --- a/libc/sysdeps/s390/fpu/e_sqrtf.c +++ b/libc/sysdeps/s390/fpu/e_sqrtf.c @@ -1,5 +1,5 @@ -/* Copyright (C) 2004 Free Software Foundation, Inc. - Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). +/* Copyright (C) 2004, 2011 Free Software Foundation, Inc. + Contributed by Martin Schwidefsky <schwidefsky@de.ibm.com>. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -27,3 +27,4 @@ __ieee754_sqrtf (float x) asm ( "sqebr %0,%1" : "=f" (res) : "f" (x) ); return res; } +strong_alias (__ieee754_sqrtf, __sqrtf_finite) diff --git a/libc/sysdeps/s390/fpu/e_sqrtl.c b/libc/sysdeps/s390/fpu/e_sqrtl.c index e1daac197..45d0a0e67 100644 --- a/libc/sysdeps/s390/fpu/e_sqrtl.c +++ b/libc/sysdeps/s390/fpu/e_sqrtl.c @@ -1,6 +1,6 @@ /* Square root. S/390 FPU version. - Copyright (C) 2004, 2006 Free Software Foundation, Inc. - Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). + Copyright (C) 2004, 2006, 2011 Free Software Foundation, Inc. + Contributed by Martin Schwidefsky <schwidefsky@de.ibm.com>. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -28,3 +28,4 @@ __ieee754_sqrtl (long double x) asm ( "sqxbr %0,%1" : "=f" (res) : "f" (x) ); return res; } +strong_alias (__ieee754_sqrtl, __sqrtl_finite) diff --git a/libc/sysdeps/s390/fpu/libm-test-ulps b/libc/sysdeps/s390/fpu/libm-test-ulps index 989722e65..a014bafd4 100644 --- a/libc/sysdeps/s390/fpu/libm-test-ulps +++ b/libc/sysdeps/s390/fpu/libm-test-ulps @@ -647,8 +647,15 @@ ifloat: 3 ildouble: 2 ldouble: 2 Test "jn (10, 2.0) == 0.251538628271673670963516093751820639e-6": +double: 1 float: 4 +idouble: 1 ifloat: 4 +Test "jn (2, 2.4048255576957729) == 0.43175480701968038399746111312430703": +double: 2 +float: 1 +idouble: 2 +ifloat: 1 Test "jn (3, 0.125) == 0.406503832554912875023029337653442868e-4": double: 1 float: 1 @@ -671,6 +678,37 @@ double: 1 float: 2 idouble: 1 ifloat: 2 +Test "jn (3, 2.4048255576957729) == 0.19899990535769083404042146764530813": +double: 3 +idouble: 3 +Test "jn (4, 2.4048255576957729) == 0.647466661641779720084932282551219891E-1": +double: 1 +idouble: 1 +Test "jn (5, 2.4048255576957729) == 0.163892432048058525099230549946147698E-1": +double: 3 +float: 1 +idouble: 3 +ifloat: 1 +Test "jn (6, 2.4048255576957729) == 0.34048184720278336646673682895929161E-2": +double: 4 +float: 3 +idouble: 4 +ifloat: 3 +Test "jn (7, 2.4048255576957729) == 0.60068836573295394221291569249883076E-3": +double: 3 +float: 5 +idouble: 3 +ifloat: 5 +Test "jn (8, 2.4048255576957729) == 0.92165786705344923232879022467054148E-4": +double: 3 +float: 2 +idouble: 3 +ifloat: 2 +Test "jn (9, 2.4048255576957729) == 0.12517270977961513005428966643852564E-4": +double: 1 +float: 2 +idouble: 1 +ifloat: 2 # lgamma Test "lgamma (-0.5) == log(2*sqrt(pi))": @@ -1245,9 +1283,9 @@ ldouble: 4 Function: "jn": double: 4 -float: 4 +float: 5 idouble: 4 -ifloat: 4 +ifloat: 5 ildouble: 4 ldouble: 4 diff --git a/libc/sysdeps/s390/s390-32/dl-machine.h b/libc/sysdeps/s390/s390-32/dl-machine.h index 415b38801..ea7c6a68b 100644 --- a/libc/sysdeps/s390/s390-32/dl-machine.h +++ b/libc/sysdeps/s390/s390-32/dl-machine.h @@ -1,5 +1,5 @@ /* Machine-dependent ELF dynamic relocation inline functions. S390 Version. - Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2011 Free Software Foundation, Inc. Contributed by Carl Pederson & Martin Schwidefsky. This file is part of the GNU C Library. @@ -43,7 +43,7 @@ elf_machine_matches_host (const Elf32_Ehdr *ehdr) return 0; return (ehdr->e_machine == EM_S390 || ehdr->e_machine == EM_S390_OLD) - && ehdr->e_ident[EI_CLASS] == ELFCLASS32; + && ehdr->e_ident[EI_CLASS] == ELFCLASS32; } @@ -275,7 +275,7 @@ auto inline void __attribute__ ((always_inline)) elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc, const Elf32_Sym *sym, const struct r_found_version *version, - void *const reloc_addr_arg) + void *const reloc_addr_arg, int skip_ifunc) { Elf32_Addr *const reloc_addr = reloc_addr_arg; const unsigned int r_type = ELF32_R_TYPE (reloc->r_info); @@ -316,8 +316,7 @@ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc, *reloc_addr = value + reloc->r_addend; break; -#if (!defined RTLD_BOOTSTRAP || USE___THREAD) \ - && !defined RESOLVE_CONFLICT_FIND_MAP +#ifndef RESOLVE_CONFLICT_FIND_MAP case R_390_TLS_DTPMOD: # ifdef RTLD_BOOTSTRAP /* During startup the dynamic linker is always the module @@ -434,7 +433,8 @@ elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc, auto inline void __attribute__ ((always_inline)) elf_machine_lazy_rel (struct link_map *map, - Elf32_Addr l_addr, const Elf32_Rela *reloc) + Elf32_Addr l_addr, const Elf32_Rela *reloc, + int skip_ifunc) { Elf32_Addr *const reloc_addr = (void *) (l_addr + reloc->r_offset); const unsigned int r_type = ELF32_R_TYPE (reloc->r_info); diff --git a/libc/sysdeps/s390/s390-32/elf/configure b/libc/sysdeps/s390/s390-32/elf/configure index 72abdbdd7..fa25a0080 100644 --- a/libc/sysdeps/s390/s390-32/elf/configure +++ b/libc/sysdeps/s390/s390-32/elf/configure @@ -1,7 +1,6 @@ # This file is generated from configure.in by Autoconf. DO NOT EDIT! # Local configure fragment for sysdeps/s390/elf. -if test "$usetls" != no; then # Check for support of thread-local storage handling in assembler and # linker. { $as_echo "$as_me:$LINENO: checking for s390 TLS support" >&5 @@ -38,12 +37,10 @@ rm -f conftest* fi { $as_echo "$as_me:$LINENO: result: $libc_cv_390_tls" >&5 $as_echo "$libc_cv_390_tls" >&6; } -if test $libc_cv_390_tls = yes; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_TLS_SUPPORT 1 -_ACEOF - -fi +if test $libc_cv_390_tls = no; then + { { $as_echo "$as_me:$LINENO: error: the assembler must support TLS" >&5 +$as_echo "$as_me: error: the assembler must support TLS" >&2;} + { (exit 1); exit 1; }; } fi cat >>confdefs.h <<\_ACEOF diff --git a/libc/sysdeps/s390/s390-32/elf/configure.in b/libc/sysdeps/s390/s390-32/elf/configure.in index fcf932999..d1f40a375 100644 --- a/libc/sysdeps/s390/s390-32/elf/configure.in +++ b/libc/sysdeps/s390/s390-32/elf/configure.in @@ -1,7 +1,6 @@ GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory. # Local configure fragment for sysdeps/s390/elf. -if test "$usetls" != no; then # Check for support of thread-local storage handling in assembler and # linker. AC_CACHE_CHECK(for s390 TLS support, libc_cv_390_tls, [dnl @@ -27,9 +26,8 @@ else libc_cv_390_tls=no fi rm -f conftest*]) -if test $libc_cv_390_tls = yes; then - AC_DEFINE(HAVE_TLS_SUPPORT) -fi +if test $libc_cv_390_tls = no; then + AC_MSG_ERROR([the assembler must support TLS]) fi dnl It is always possible to access static and hidden symbols in an diff --git a/libc/sysdeps/s390/s390-64/dl-machine.h b/libc/sysdeps/s390/s390-64/dl-machine.h index c4df274cd..68015a7a0 100644 --- a/libc/sysdeps/s390/s390-64/dl-machine.h +++ b/libc/sysdeps/s390/s390-64/dl-machine.h @@ -1,6 +1,6 @@ /* Machine-dependent ELF dynamic relocation inline functions. 64 bit S/390 Version. - Copyright (C) 2001-2005, 2006 Free Software Foundation, Inc. + Copyright (C) 2001-2005, 2006, 2011 Free Software Foundation, Inc. Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). This file is part of the GNU C Library. @@ -247,7 +247,7 @@ auto inline void __attribute__ ((always_inline)) elf_machine_rela (struct link_map *map, const Elf64_Rela *reloc, const Elf64_Sym *sym, const struct r_found_version *version, - void *const reloc_addr_arg) + void *const reloc_addr_arg, int skip_ifunc) { Elf64_Addr *const reloc_addr = reloc_addr_arg; const unsigned int r_type = ELF64_R_TYPE (reloc->r_info); @@ -288,8 +288,7 @@ elf_machine_rela (struct link_map *map, const Elf64_Rela *reloc, *reloc_addr = value + reloc->r_addend; break; -#if (!defined RTLD_BOOTSTRAP || USE___THREAD) \ - && !defined RESOLVE_CONFLICT_FIND_MAP +#ifndef RESOLVE_CONFLICT_FIND_MAP case R_390_TLS_DTPMOD: # ifdef RTLD_BOOTSTRAP /* During startup the dynamic linker is always the module @@ -413,7 +412,8 @@ elf_machine_rela_relative (Elf64_Addr l_addr, const Elf64_Rela *reloc, auto inline void __attribute__ ((always_inline)) elf_machine_lazy_rel (struct link_map *map, - Elf64_Addr l_addr, const Elf64_Rela *reloc) + Elf64_Addr l_addr, const Elf64_Rela *reloc, + int skip_ifunc) { Elf64_Addr *const reloc_addr = (void *) (l_addr + reloc->r_offset); const unsigned int r_type = ELF64_R_TYPE (reloc->r_info); diff --git a/libc/sysdeps/s390/s390-64/elf/configure b/libc/sysdeps/s390/s390-64/elf/configure index 3851674c7..db3caea59 100644 --- a/libc/sysdeps/s390/s390-64/elf/configure +++ b/libc/sysdeps/s390/s390-64/elf/configure @@ -1,7 +1,6 @@ # This file is generated from configure.in by Autoconf. DO NOT EDIT! # Local configure fragment for sysdeps/s390/elf. -if test "$usetls" != no; then # Check for support of thread-local storage handling in assembler and # linker. { $as_echo "$as_me:$LINENO: checking for s390 TLS support" >&5 @@ -38,12 +37,10 @@ rm -f conftest* fi { $as_echo "$as_me:$LINENO: result: $libc_cv_390_tls" >&5 $as_echo "$libc_cv_390_tls" >&6; } -if test $libc_cv_390_tls = yes; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_TLS_SUPPORT 1 -_ACEOF - -fi +if test $libc_cv_390_tls = no; then + { { $as_echo "$as_me:$LINENO: error: the assembler must support TLS" >&5 +$as_echo "$as_me: error: the assembler must support TLS" >&2;} + { (exit 1); exit 1; }; } fi cat >>confdefs.h <<\_ACEOF diff --git a/libc/sysdeps/s390/s390-64/elf/configure.in b/libc/sysdeps/s390/s390-64/elf/configure.in index ac953fcff..007e3838a 100644 --- a/libc/sysdeps/s390/s390-64/elf/configure.in +++ b/libc/sysdeps/s390/s390-64/elf/configure.in @@ -1,7 +1,6 @@ GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory. # Local configure fragment for sysdeps/s390/elf. -if test "$usetls" != no; then # Check for support of thread-local storage handling in assembler and # linker. AC_CACHE_CHECK(for s390 TLS support, libc_cv_390_tls, [dnl @@ -27,9 +26,8 @@ else libc_cv_390_tls=no fi rm -f conftest*]) -if test $libc_cv_390_tls = yes; then - AC_DEFINE(HAVE_TLS_SUPPORT) -fi +if test $libc_cv_390_tls = no; then + AC_MSG_ERROR([the assembler must support TLS]) fi dnl It is always possible to access static and hidden symbols in an |