From 382054020099eb8d0350a305d3719f92317e7912 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Sun, 4 Jul 2004 23:12:44 +0000 Subject: Update. 2004-07-04 Matthew Reppert * sysdeps/unix/sysv/linux/i386/glob64.c (glob64): Use libc_hidden_ver instead of libc_hidden_def. --- nptl/ChangeLog | 9 +++++++ .../sysv/linux/x86_64/pthread_rwlock_timedrdlock.S | 4 +-- nptl/tst-rwlock14.c | 30 +++++++++++++++++++++- 3 files changed, 40 insertions(+), 3 deletions(-) (limited to 'nptl') diff --git a/nptl/ChangeLog b/nptl/ChangeLog index 1b6f3d764c..8a81100cf4 100644 --- a/nptl/ChangeLog +++ b/nptl/ChangeLog @@ -1,3 +1,12 @@ +2004-07-04 Jakub Jelinek + + * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S + (pthread_rwlock_timedrdlock): Use cmpq instead of cmpl to check + for valid tv_nsec. + * tst-rwlock14.c (do_test): Test for invalid tv_nsec equal to + 1 billion and 64-bit tv_nsec which is valid when truncated to 32 + bits. + 2004-06-29 Roland McGrath * Banner: NPTL no longer has its own version number. diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S index 924e20868f..aadc90c974 100644 --- a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S +++ b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S @@ -1,4 +1,4 @@ -/* Copyright (C) 2002, 2003 Free Software Foundation, Inc. +/* Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 2002. @@ -71,7 +71,7 @@ pthread_rwlock_timedrdlock: je 5f /* Check the value of the timeout parameter. */ -3: cmpl $1000000000, 8(%r13) +3: cmpq $1000000000, 8(%r13) jae 19f incl READERS_QUEUED(%r12) diff --git a/nptl/tst-rwlock14.c b/nptl/tst-rwlock14.c index 4451a023f7..b9611a81f0 100644 --- a/nptl/tst-rwlock14.c +++ b/nptl/tst-rwlock14.c @@ -104,7 +104,7 @@ do_test (void) result = 1; } - ts.tv_nsec = 2000000000; + ts.tv_nsec = 1000000000; e = pthread_rwlock_timedrdlock (&r, &ts); if (e == 0) @@ -130,6 +130,34 @@ do_test (void) result = 1; } + ts.tv_nsec = 0x100001000LL; + if (ts.tv_nsec != 0x100001000LL) + ts.tv_nsec = 2000000000; + + e = pthread_rwlock_timedrdlock (&r, &ts); + if (e == 0) + { + puts ("third rwlock_timedrdlock did not fail"); + result = 1; + } + else if (e != EINVAL) + { + puts ("third rwlock_timedrdlock did not return EINVAL"); + result = 1; + } + + e = pthread_rwlock_timedrdlock (&r, &ts); + if (e == 0) + { + puts ("third rwlock_timedrdlock did not fail"); + result = 1; + } + else if (e != EINVAL) + { + puts ("third rwlock_timedrdlock did not return EINVAL"); + result = 1; + } + if (result == 0) puts ("no bugs"); -- cgit 1.4.1