From 33ab3b66dd6a851aef4e607abe3e973e82c7fe81 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Fri, 20 Feb 2004 20:21:20 +0000 Subject: [PATCH] Update. * sysdeps/sparc/sparc32/fpu/libm-test-ulps: Add ulps for the 2003-11-27 atan2 test. --- linuxthreads/ChangeLog | 3 +++ nptl/ChangeLog | 4 +++ nptl/DESIGN-barrier.txt | 5 +--- nptl/sysdeps/pthread/pthread_barrier_wait.c | 14 ++++------ sysdeps/alpha/dl-machine.h | 4 --- sysdeps/alpha/dl-sysdep.h | 41 +++++++++++++++++++++++++++++ sysdeps/generic/ldsodefs.h | 12 +++++++-- sysdeps/ia64/dl-machine.h | 4 --- sysdeps/ia64/dl-sysdep.h | 41 +++++++++++++++++++++++++++++ sysdeps/powerpc/fpu/bits/mathinline.h | 6 ++++- sysdeps/sparc/dl-sysdep.h | 41 +++++++++++++++++++++++++++++ sysdeps/sparc/sparc32/dl-machine.h | 4 --- sysdeps/sparc/sparc32/fpu/libm-test-ulps | 7 +++-- sysdeps/sparc/sparc64/dl-machine.h | 4 --- 14 files changed, 156 insertions(+), 34 deletions(-) create mode 100644 sysdeps/alpha/dl-sysdep.h create mode 100644 sysdeps/ia64/dl-sysdep.h create mode 100644 sysdeps/sparc/dl-sysdep.h diff --git a/linuxthreads/ChangeLog b/linuxthreads/ChangeLog index 3cc1a21..b25ce57 100644 --- a/linuxthreads/ChangeLog +++ b/linuxthreads/ChangeLog @@ -1,5 +1,8 @@ 2004-02-20 Jakub Jelinek + * sysdeps/sparc/sparc32/fpu/libm-test-ulps: Add ulps for the + 2003-11-27 atan2 test. + * sysdeps/unix/sysv/linux/ia64/dl-sysdep.h (DL_ARGV_NOT_RELRO): Define. 2004-02-10 Steven Munroe diff --git a/nptl/ChangeLog b/nptl/ChangeLog index 9a3b463..6c9002a 100644 --- a/nptl/ChangeLog +++ b/nptl/ChangeLog @@ -1,3 +1,7 @@ +2004-02-20 Jakub Jelinek + + * sysdeps/unix/sysv/linux/ia64/dl-sysdep.h (DL_ARGV_NOT_RELRO): Define. + 2004-02-19 Andreas Schwab * sysdeps/pthread/pthread_barrier_wait.c (pthread_barrier_wait): diff --git a/nptl/DESIGN-barrier.txt b/nptl/DESIGN-barrier.txt index 754e471..b0fbf14 100644 --- a/nptl/DESIGN-barrier.txt +++ b/nptl/DESIGN-barrier.txt @@ -31,12 +31,9 @@ pthread_barrier_wait(barrier_t *barrier) result = BARRIER_SERIAL_THREAD; } else { event = barrier->curr_event; + lll_unlock(barrier->lock); do { - lll_unlock(barrier->lock); - futex_wait(&barrier->curr_event, event) - - lll_lock(barrier->lock); } while (event == barrier->curr_event); } diff --git a/nptl/sysdeps/pthread/pthread_barrier_wait.c b/nptl/sysdeps/pthread/pthread_barrier_wait.c index f0f65b0..aa5b42d 100644 --- a/nptl/sysdeps/pthread/pthread_barrier_wait.c +++ b/nptl/sysdeps/pthread/pthread_barrier_wait.c @@ -55,17 +55,13 @@ pthread_barrier_wait (barrier) /* The number of the event we are waiting for. The barrier's event number must be bumped before we continue. */ unsigned int event = ibarrier->curr_event; - do - { - /* Before suspending, make the barrier available to others. */ - lll_unlock (ibarrier->lock); - /* Wait for the event counter of the barrier to change. */ - lll_futex_wait (&ibarrier->curr_event, event); + /* Before suspending, make the barrier available to others. */ + lll_unlock (ibarrier->lock); - /* We are going to access shared data. */ - lll_lock (ibarrier->lock); - } + /* Wait for the event counter of the barrier to change. */ + do + lll_futex_wait (&ibarrier->curr_event, event); while (event == ibarrier->curr_event); } diff --git a/sysdeps/alpha/dl-machine.h b/sysdeps/alpha/dl-machine.h index cf96b77..3616fae 100644 --- a/sysdeps/alpha/dl-machine.h +++ b/sysdeps/alpha/dl-machine.h @@ -293,10 +293,6 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile) strong_alias (_dl_runtime_resolve, _dl_runtime_profile); #endif -/* _dl_argv cannot be attribute_relro, because _dl_start_user below - might write into it after _dl_start returns. */ -#define DL_ARGV_NOT_RELRO 1 - /* Initial entry point code for the dynamic linker. The C function `_dl_start' is the real entry point; its return value is the user program's entry point. */ diff --git a/sysdeps/alpha/dl-sysdep.h b/sysdeps/alpha/dl-sysdep.h new file mode 100644 index 0000000..0b4c805 --- /dev/null +++ b/sysdeps/alpha/dl-sysdep.h @@ -0,0 +1,41 @@ +/* System-specific settings for dynamic linker code. Alpha version. + Copyright (C) 2002, 2003, 2004 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. */ + +#ifndef _DL_SYSDEP_H +#define _DL_SYSDEP_H 1 + +/* This macro must be defined to either 0 or 1. + + If 1, then an errno global variable hidden in ld.so will work right with + all the errno-using libc code compiled for ld.so, and there is never a + need to share the errno location with libc. This is appropriate only if + all the libc functions that ld.so uses are called without PLT and always + get the versions linked into ld.so rather than the libc ones. */ + +#ifdef IS_IN_rtld +# define RTLD_PRIVATE_ERRNO 1 +#else +# define RTLD_PRIVATE_ERRNO 0 +#endif + +/* _dl_argv cannot be attribute_relro, because _dl_start_user + might write into it after _dl_start returns. */ +#define DL_ARGV_NOT_RELRO 1 + +#endif /* dl-sysdep.h */ diff --git a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h index 73d154a..a3d7935 100644 --- a/sysdeps/generic/ldsodefs.h +++ b/sysdeps/generic/ldsodefs.h @@ -469,9 +469,17 @@ rtld_hidden_proto (__libc_stack_end) /* Parameters passed to the dynamic linker. */ extern int _dl_argc attribute_hidden attribute_relro; -extern char **_dl_argv attribute_relro; +extern char **_dl_argv +#ifndef DL_ARGV_NOT_RELRO + attribute_relro +#endif + ; #ifdef IS_IN_rtld -extern char **_dl_argv_internal attribute_hidden attribute_relro; +extern char **_dl_argv_internal attribute_hidden +# ifndef DL_ARGV_NOT_RELRO + attribute_relro +# endif + ; # define rtld_progname (INTUSE(_dl_argv)[0]) #else # define rtld_progname _dl_argv[0] diff --git a/sysdeps/ia64/dl-machine.h b/sysdeps/ia64/dl-machine.h index 50a8822..ca47752 100644 --- a/sysdeps/ia64/dl-machine.h +++ b/sysdeps/ia64/dl-machine.h @@ -272,10 +272,6 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile) #define DL_STACK_END(cookie) \ ((void *) (((long) (cookie)) - 16)) -/* _dl_argv cannot be attribute_relro, because _dl_start_user below - might write into it after _dl_start returns. */ -#define DL_ARGV_NOT_RELRO 1 - /* Initial entry point code for the dynamic linker. The C function `_dl_start' is the real entry point; its return value is the user program's entry point. */ diff --git a/sysdeps/ia64/dl-sysdep.h b/sysdeps/ia64/dl-sysdep.h new file mode 100644 index 0000000..352bb3b --- /dev/null +++ b/sysdeps/ia64/dl-sysdep.h @@ -0,0 +1,41 @@ +/* System-specific settings for dynamic linker code. IA-64 version. + Copyright (C) 2002, 2003, 2004 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. */ + +#ifndef _DL_SYSDEP_H +#define _DL_SYSDEP_H 1 + +/* This macro must be defined to either 0 or 1. + + If 1, then an errno global variable hidden in ld.so will work right with + all the errno-using libc code compiled for ld.so, and there is never a + need to share the errno location with libc. This is appropriate only if + all the libc functions that ld.so uses are called without PLT and always + get the versions linked into ld.so rather than the libc ones. */ + +#ifdef IS_IN_rtld +# define RTLD_PRIVATE_ERRNO 1 +#else +# define RTLD_PRIVATE_ERRNO 0 +#endif + +/* _dl_argv cannot be attribute_relro, because _dl_start_user + might write into it after _dl_start returns. */ +#define DL_ARGV_NOT_RELRO 1 + +#endif /* dl-sysdep.h */ diff --git a/sysdeps/powerpc/fpu/bits/mathinline.h b/sysdeps/powerpc/fpu/bits/mathinline.h index 34309c1..dcd506d 100644 --- a/sysdeps/powerpc/fpu/bits/mathinline.h +++ b/sysdeps/powerpc/fpu/bits/mathinline.h @@ -1,5 +1,6 @@ /* Inline math functions for powerpc. - Copyright (C) 1995,1996,1997,1998,1999,2000 Free Software Foundation, Inc. + Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2004 + 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 @@ -58,6 +59,8 @@ #endif /* __cplusplus */ #ifdef __USE_ISOC99 + +# ifndef __powerpc64__ __MATH_INLINE long int lrint (double __x) __THROW; __MATH_INLINE long int lrint (double __x) __THROW @@ -81,6 +84,7 @@ lrintf (float __x) __THROW __asm__ ("fctiw %0,%1" : "=f"(__u.__d) : "f"(__x)); return __u.__ll[1]; } +# endif __MATH_INLINE double fdim (double __x, double __y) __THROW; __MATH_INLINE double diff --git a/sysdeps/sparc/dl-sysdep.h b/sysdeps/sparc/dl-sysdep.h new file mode 100644 index 0000000..eb6a788 --- /dev/null +++ b/sysdeps/sparc/dl-sysdep.h @@ -0,0 +1,41 @@ +/* System-specific settings for dynamic linker code. SPARC version. + Copyright (C) 2002, 2003, 2004 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. */ + +#ifndef _DL_SYSDEP_H +#define _DL_SYSDEP_H 1 + +/* This macro must be defined to either 0 or 1. + + If 1, then an errno global variable hidden in ld.so will work right with + all the errno-using libc code compiled for ld.so, and there is never a + need to share the errno location with libc. This is appropriate only if + all the libc functions that ld.so uses are called without PLT and always + get the versions linked into ld.so rather than the libc ones. */ + +#ifdef IS_IN_rtld +# define RTLD_PRIVATE_ERRNO 1 +#else +# define RTLD_PRIVATE_ERRNO 0 +#endif + +/* _dl_argv cannot be attribute_relro, because _dl_start_user + might write into it after _dl_start returns. */ +#define DL_ARGV_NOT_RELRO 1 + +#endif /* dl-sysdep.h */ diff --git a/sysdeps/sparc/sparc32/dl-machine.h b/sysdeps/sparc/sparc32/dl-machine.h index 70ba0ae..c2a5026 100644 --- a/sysdeps/sparc/sparc32/dl-machine.h +++ b/sysdeps/sparc/sparc32/dl-machine.h @@ -253,10 +253,6 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile) #define DL_STACK_END(cookie) \ ((void *) (((long) (cookie)) - (22 - 6) * 4)) -/* _dl_argv cannot be attribute_relro, because _dl_start_user below - might write into it after _dl_start returns. */ -#define DL_ARGV_NOT_RELRO 1 - /* Initial entry point code for the dynamic linker. The C function `_dl_start' is the real entry point; its return value is the user program's entry point. */ diff --git a/sysdeps/sparc/sparc32/fpu/libm-test-ulps b/sysdeps/sparc/sparc32/fpu/libm-test-ulps index 73172b4..765ddc5 100644 --- a/sysdeps/sparc/sparc32/fpu/libm-test-ulps +++ b/sysdeps/sparc/sparc32/fpu/libm-test-ulps @@ -10,6 +10,9 @@ ifloat: 3 Test "atan2 (1.390625, 0.9296875) == 0.981498387184244311516296577615519772": float: 1 ifloat: 1 +Test "atan2 (-0.00756827042671106339, -.001792735857538728036) == -1.80338464113663849327153994380": +float: 6 +ifloat: 6 # atanh Test "atanh (0.75) == 0.972955074527656652552676371721589865": @@ -640,8 +643,8 @@ idouble: 1 # Maximal error of functions: Function: "atan2": -float: 3 -ifloat: 3 +float: 6 +ifloat: 6 Function: "atanh": float: 1 diff --git a/sysdeps/sparc/sparc64/dl-machine.h b/sysdeps/sparc/sparc64/dl-machine.h index b40d2fb..ff7ea8a 100644 --- a/sysdeps/sparc/sparc64/dl-machine.h +++ b/sysdeps/sparc/sparc64/dl-machine.h @@ -671,10 +671,6 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile) #define DL_STACK_END(cookie) \ ((void *) (((long) (cookie)) - (22 - 6) * 8 - STACK_BIAS)) -/* _dl_argv cannot be attribute_relro, because _dl_start_user below - might write into it after _dl_start returns. */ -#define DL_ARGV_NOT_RELRO 1 - /* Initial entry point code for the dynamic linker. The C function `_dl_start' is the real entry point; its return value is the user program's entry point. */ -- 2.7.4