summaryrefslogtreecommitdiff
path: root/nptl/sysdeps
diff options
context:
space:
mode:
Diffstat (limited to 'nptl/sysdeps')
-rw-r--r--nptl/sysdeps/pthread/aio_misc.h5
-rw-r--r--nptl/sysdeps/sparc/sparc64/jmpbuf-unwind.h3
-rw-r--r--nptl/sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h2
-rw-r--r--nptl/sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h2
-rw-r--r--nptl/sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h2
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h4
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h4
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h7
-rw-r--r--nptl/sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h2
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;