summaryrefslogtreecommitdiff
path: root/libc/sysdeps/s390
diff options
context:
space:
mode:
Diffstat (limited to 'libc/sysdeps/s390')
-rw-r--r--libc/sysdeps/s390/fpu/e_sqrt.c5
-rw-r--r--libc/sysdeps/s390/fpu/e_sqrtf.c5
-rw-r--r--libc/sysdeps/s390/fpu/e_sqrtl.c5
-rw-r--r--libc/sysdeps/s390/fpu/libm-test-ulps42
-rw-r--r--libc/sysdeps/s390/s390-32/dl-machine.h12
-rw-r--r--libc/sysdeps/s390/s390-32/elf/configure11
-rw-r--r--libc/sysdeps/s390/s390-32/elf/configure.in6
-rw-r--r--libc/sysdeps/s390/s390-64/dl-machine.h10
-rw-r--r--libc/sysdeps/s390/s390-64/elf/configure11
-rw-r--r--libc/sysdeps/s390/s390-64/elf/configure.in6
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