From: Ulrich Drepper Date: Thu, 2 Sep 2004 22:47:23 +0000 (+0000) Subject: Update. X-Git-Tag: cvs/fedora-base~129 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f76c8499101d2826013989954dcbccf5fb8321be;p=thirdparty%2Fglibc.git Update. * sysdeps/alpha/jmpbuf-unwind.h: Define __libc_unwind_longjmp. * sysdeps/i386/jmpbuf-unwind.h: Likewise * sysdeps/powerpc/jmpbuf-unwind.h: Likewise. * sysdeps/s390/jmpbuf-unwind.h: Likewise. * sysdeps/sh/jmpbuf-unwind.h: Likewise. * sysdeps/sparc/sparc32/jmpbuf-unwind.h: Likewise. * sysdeps/unix/sysv/linux/ia64/jmpbuf-unwind.h: Likewise. * sysdeps/x86_64/jmpbuf-unwind.h: Likewise. * unwind.c: Use it. --- diff --git a/nptl/ChangeLog b/nptl/ChangeLog index 6306a7b0c66..344e7fb69f8 100644 --- a/nptl/ChangeLog +++ b/nptl/ChangeLog @@ -1,5 +1,15 @@ 2004-09-02 Ulrich Drepper + * sysdeps/alpha/jmpbuf-unwind.h: Define __libc_unwind_longjmp. + * sysdeps/i386/jmpbuf-unwind.h: Likewise + * sysdeps/powerpc/jmpbuf-unwind.h: Likewise. + * sysdeps/s390/jmpbuf-unwind.h: Likewise. + * sysdeps/sh/jmpbuf-unwind.h: Likewise. + * sysdeps/sparc/sparc32/jmpbuf-unwind.h: Likewise. + * sysdeps/unix/sysv/linux/ia64/jmpbuf-unwind.h: Likewise. + * sysdeps/x86_64/jmpbuf-unwind.h: Likewise. + * unwind.c: Use it. + * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h (pthread_cond_t): Rename __data.__clock to __data.__nwaiters, make it unsigned int. * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h (pthread_cond_t): diff --git a/nptl/sysdeps/alpha/jmpbuf-unwind.h b/nptl/sysdeps/alpha/jmpbuf-unwind.h index ad77816ca09..5cef8b1cf54 100644 --- a/nptl/sysdeps/alpha/jmpbuf-unwind.h +++ b/nptl/sysdeps/alpha/jmpbuf-unwind.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. +/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Jakub Jelinek , 2003. @@ -26,3 +26,6 @@ #define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \ ((uintptr_t) (_address) - (_adj) < (uintptr_t) (_jmpbuf)[JB_SP] - (_adj)) + +/* We use the normal lobngjmp for unwinding. */ +#define __libc_unwind_longjmp(buf, val) __libc_longjmp (buf, val) diff --git a/nptl/sysdeps/i386/jmpbuf-unwind.h b/nptl/sysdeps/i386/jmpbuf-unwind.h index ad77816ca09..5cef8b1cf54 100644 --- a/nptl/sysdeps/i386/jmpbuf-unwind.h +++ b/nptl/sysdeps/i386/jmpbuf-unwind.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. +/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Jakub Jelinek , 2003. @@ -26,3 +26,6 @@ #define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \ ((uintptr_t) (_address) - (_adj) < (uintptr_t) (_jmpbuf)[JB_SP] - (_adj)) + +/* We use the normal lobngjmp for unwinding. */ +#define __libc_unwind_longjmp(buf, val) __libc_longjmp (buf, val) diff --git a/nptl/sysdeps/powerpc/jmpbuf-unwind.h b/nptl/sysdeps/powerpc/jmpbuf-unwind.h index dc8bebf99cf..0b817160d36 100644 --- a/nptl/sysdeps/powerpc/jmpbuf-unwind.h +++ b/nptl/sysdeps/powerpc/jmpbuf-unwind.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. +/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Jakub Jelinek , 2003. @@ -26,3 +26,6 @@ #define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \ ((uintptr_t) (_address) - (_adj) < (uintptr_t) (_jmpbuf)[JB_GPR1] - (_adj)) + +/* We use the normal lobngjmp for unwinding. */ +#define __libc_unwind_longjmp(buf, val) __libc_longjmp (buf, val) diff --git a/nptl/sysdeps/pthread/pthread_cond_timedwait.c b/nptl/sysdeps/pthread/pthread_cond_timedwait.c index c6606c9bf94..fdbf43eae82 100644 --- a/nptl/sysdeps/pthread/pthread_cond_timedwait.c +++ b/nptl/sysdeps/pthread/pthread_cond_timedwait.c @@ -99,7 +99,8 @@ __pthread_cond_timedwait (cond, mutex, abstime) INTERNAL_SYSCALL_DECL (err); int ret; ret = INTERNAL_SYSCALL (clock_gettime, err, 2, - cond->__data.__nwaiters & COND_CLOCK_BITS, + (cond->__data.__nwaiters + & ((1 << COND_CLOCK_BITS) - 1)), &rt); # ifndef __ASSUME_POSIX_TIMERS if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P (ret, err), 0)) diff --git a/nptl/sysdeps/s390/jmpbuf-unwind.h b/nptl/sysdeps/s390/jmpbuf-unwind.h index 409408f5d2d..19d0729a947 100644 --- a/nptl/sysdeps/s390/jmpbuf-unwind.h +++ b/nptl/sysdeps/s390/jmpbuf-unwind.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. +/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Jakub Jelinek , 2003. @@ -27,3 +27,6 @@ #define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \ ((uintptr_t) (_address) - (_adj) \ < (uintptr_t) (_jmpbuf)->__gregs[__JB_GPR15] - (_adj)) + +/* We use the normal lobngjmp for unwinding. */ +#define __libc_unwind_longjmp(buf, val) __libc_longjmp (buf, val) diff --git a/nptl/sysdeps/sh/jmpbuf-unwind.h b/nptl/sysdeps/sh/jmpbuf-unwind.h index 7e36d830c05..cf6d25f0414 100644 --- a/nptl/sysdeps/sh/jmpbuf-unwind.h +++ b/nptl/sysdeps/sh/jmpbuf-unwind.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. +/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Jakub Jelinek , 2003. @@ -26,3 +26,6 @@ #define _JMPBUF_UNWINDS_ADJ(jmpbuf, address, adj) \ ((uintptr_t) (address) - (adj) < (uintptr_t) (jmpbuf)[0].__regs[7] - (adj)) + +/* We use the normal lobngjmp for unwinding. */ +#define __libc_unwind_longjmp(buf, val) __libc_longjmp (buf, val) diff --git a/nptl/sysdeps/sparc/sparc32/jmpbuf-unwind.h b/nptl/sysdeps/sparc/sparc32/jmpbuf-unwind.h index ad77816ca09..5cef8b1cf54 100644 --- a/nptl/sysdeps/sparc/sparc32/jmpbuf-unwind.h +++ b/nptl/sysdeps/sparc/sparc32/jmpbuf-unwind.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. +/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Jakub Jelinek , 2003. @@ -26,3 +26,6 @@ #define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \ ((uintptr_t) (_address) - (_adj) < (uintptr_t) (_jmpbuf)[JB_SP] - (_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/ia64/jmpbuf-unwind.h b/nptl/sysdeps/unix/sysv/linux/ia64/jmpbuf-unwind.h index 90b5764e81e..b821ab00f2e 100644 --- a/nptl/sysdeps/unix/sysv/linux/ia64/jmpbuf-unwind.h +++ b/nptl/sysdeps/unix/sysv/linux/ia64/jmpbuf-unwind.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. +/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Jakub Jelinek , 2003. @@ -31,3 +31,6 @@ #define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \ ((uintptr_t)(_address) - (_adj) < (uintptr_t)(((long *)_jmpbuf)[0]) - (_adj)) + +/* We use the normal lobngjmp for unwinding. */ +#define __libc_unwind_longjmp(buf, val) __libc_longjmp (buf, val) diff --git a/nptl/sysdeps/x86_64/jmpbuf-unwind.h b/nptl/sysdeps/x86_64/jmpbuf-unwind.h index f0a22e7d9c3..345ed557c5e 100644 --- a/nptl/sysdeps/x86_64/jmpbuf-unwind.h +++ b/nptl/sysdeps/x86_64/jmpbuf-unwind.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. +/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Jakub Jelinek , 2003. @@ -26,3 +26,6 @@ #define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \ ((uintptr_t) (_address) - (_adj) < (uintptr_t) (_jmpbuf)[JB_RSP] - (_adj)) + +/* We use the normal lobngjmp for unwinding. */ +#define __libc_unwind_longjmp(buf, val) __libc_longjmp (buf, val) diff --git a/nptl/tst-cond20.c b/nptl/tst-cond20.c index ba50d58534a..18918f32e60 100644 --- a/nptl/tst-cond20.c +++ b/nptl/tst-cond20.c @@ -46,7 +46,7 @@ tf (void *p) struct timeval tv; gettimeofday (&tv, NULL); struct timespec ts; - /* Wait three second. */ + /* Wait three seconds. */ ts.tv_sec = tv.tv_sec + 3; ts.tv_nsec = tv.tv_usec * 1000; pthread_cond_timedwait (&cond, &mut, &ts); diff --git a/nptl/unwind.c b/nptl/unwind.c index f72c33891d3..56a42381583 100644 --- a/nptl/unwind.c +++ b/nptl/unwind.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. +/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper and Richard Henderson , 2003. @@ -47,7 +47,7 @@ unwind_stop (int version, _Unwind_Action actions, struct pthread *self = THREAD_SELF; struct _pthread_cleanup_buffer *curp = THREAD_GETMEM (self, cleanup); int do_longjump = 0; - + /* Adjust all pointers used in comparisons, so that top of thread's stack is at the top of address space. Without that, things break if stack is allocated above the main stack. */ @@ -93,7 +93,7 @@ unwind_stop (int version, _Unwind_Action actions, } if (do_longjump) - __libc_longjmp ((struct __jmp_buf_tag *) buf->cancel_jmp_buf, 1); + __libc_unwind_longjmp ((struct __jmp_buf_tag *) buf->cancel_jmp_buf, 1); return _URC_NO_REASON; } @@ -155,7 +155,7 @@ __pthread_unwind (__pthread_unwind_buf_t *buf) } /* We simply jump to the registered setjmp buffer. */ - __libc_longjmp ((struct __jmp_buf_tag *) ibuf->cancel_jmp_buf, 1); + __libc_unwind_longjmp ((struct __jmp_buf_tag *) ibuf->cancel_jmp_buf, 1); #endif /* NOTREACHED */