diff options
Diffstat (limited to 'nptl/sysdeps')
9 files changed, 19 insertions, 12 deletions
diff --git a/nptl/sysdeps/pthread/aio_misc.h b/nptl/sysdeps/pthread/aio_misc.h index 5aeb34eb98..f285083883 100644 --- a/nptl/sysdeps/pthread/aio_misc.h +++ b/nptl/sysdeps/pthread/aio_misc.h @@ -35,6 +35,7 @@ #define AIO_MISC_WAIT(result, futex, timeout, cancel) \ do { \ + volatile int *futexaddr = &futex; \ int oldval = futex; \ \ if (oldval != 0) \ @@ -48,11 +49,11 @@ int status; \ do \ { \ - status = lll_futex_timed_wait (&futex, oldval, timeout); \ + status = lll_futex_timed_wait (futexaddr, oldval, timeout); \ if (status != -EWOULDBLOCK) \ break; \ \ - oldval = futex; \ + oldval = *futexaddr; \ } \ while (oldval != 0); \ \ diff --git a/nptl/sysdeps/sparc/sparc64/jmpbuf-unwind.h b/nptl/sysdeps/sparc/sparc64/jmpbuf-unwind.h index 92c296b0cf..efb6918c14 100644 --- a/nptl/sysdeps/sparc/sparc64/jmpbuf-unwind.h +++ b/nptl/sysdeps/sparc/sparc64/jmpbuf-unwind.h @@ -25,7 +25,8 @@ _JMPBUF_UNWINDS_ADJ (_jmpbuf, (void *) _Unwind_GetCFA (_context), _adj) #define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \ - ((uintptr_t) (_address) - (_adj) < (uintptr_t) (_jmpbuf)[0].uc_mcontext.mc_fp - (_adj)) + ((uintptr_t) (_address) - (_adj) \ + < (uintptr_t) (_jmpbuf)[0].uc_mcontext.mc_fp + 2047 - (_adj)) /* We use the normal lobngjmp for unwinding. */ #define __libc_unwind_longjmp(buf, val) __libc_longjmp (buf, val) diff --git a/nptl/sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h b/nptl/sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h index 2341a9c650..662f3e54a8 100644 --- a/nptl/sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h +++ b/nptl/sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h @@ -56,7 +56,7 @@ typedef union binary compatibility. */ int __kind; unsigned int __nusers; - union + __extension__ union { int __spins; struct __pthread_mutex_s *__next; diff --git a/nptl/sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h b/nptl/sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h index 56ffef3d0b..493c2ab557 100644 --- a/nptl/sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h +++ b/nptl/sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h @@ -80,7 +80,7 @@ typedef union # define __PTHREAD_MUTEX_HAVE_PREV 1 #else unsigned int __nusers; - union + __extension__ union { int __spins; struct __pthread_mutex_s *__next; diff --git a/nptl/sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h b/nptl/sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h index a2ad05dd54..df8beeb685 100644 --- a/nptl/sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h +++ b/nptl/sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h @@ -79,7 +79,7 @@ typedef union # define __PTHREAD_MUTEX_HAVE_PREV 1 #else unsigned int __nusers; - union + __extension__ union { int __spins; struct __pthread_mutex_s *__next; diff --git a/nptl/sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h b/nptl/sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h index 727ab811c0..211c3fb08e 100644 --- a/nptl/sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h +++ b/nptl/sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc. +/* Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@redhat.com>, 2002. @@ -57,7 +57,7 @@ typedef union __pthread_mutex_u binary compatibility. */ int __kind; unsigned int __nusers; - union + __extension__ union { int __spins; union __pthread_mutex_u *__next; diff --git a/nptl/sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h b/nptl/sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h index 0f4691025e..e948ca10a8 100644 --- a/nptl/sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h +++ b/nptl/sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h @@ -1,5 +1,5 @@ /* Machine-specific pthread type layouts. SPARC version. - Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc. + Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Jakub Jelinek <jakub@redhat.com>, 2003. @@ -80,7 +80,7 @@ typedef union __pthread_mutex_u # define __PTHREAD_MUTEX_HAVE_PREV 1 #else unsigned int __nusers; - union + __extension__ union { int __spins; union __pthread_mutex_u *__next; diff --git a/nptl/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h b/nptl/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h index d8c65aeffd..d69623c145 100644 --- a/nptl/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h +++ b/nptl/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. +/* Copyright (C) 2002, 2003, 2004, 2006 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Jakub Jelinek <jakub@redhat.com>, 2002. @@ -40,7 +40,11 @@ __##syscall_name##_nocancel: \ nop; \ .size __##syscall_name##_nocancel,.-__##syscall_name##_nocancel; \ .subsection 2; \ + cfi_startproc; \ 1: save %sp, -192, %sp; \ + cfi_def_cfa_register (%fp); \ + cfi_window_save; \ + cfi_register (%o7, %i7); \ CENABLE; \ nop; \ mov %o0, %l0; \ @@ -53,6 +57,7 @@ __##syscall_name##_nocancel: \ mov %l0, %o0; \ jmpl %i7 + 8, %g0; \ restore %g0, %l1, %o0; \ + cfi_endproc; \ .previous; \ SYSCALL_ERROR_HANDLER \ SYSCALL_ERROR_HANDLER2 diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h b/nptl/sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h index ba940b35e0..81942bc86c 100644 --- a/nptl/sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h +++ b/nptl/sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h @@ -79,7 +79,7 @@ typedef union # define __PTHREAD_MUTEX_HAVE_PREV 1 #else unsigned int __nusers; - union + __extension__ union { int __spins; struct __pthread_mutex_s *__next; |