summary refs log tree commit diff
path: root/nptl
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2006-10-18 19:26:30 +0000
committerUlrich Drepper <drepper@redhat.com>2006-10-18 19:26:30 +0000
commit609cf61467154868c88b1ede078322fb4b48a528 (patch)
tree4034dfeb635a3f4fb133314a370f653578a7331a /nptl
parent4a85a8ee31c357ce499529ca76136cce0b6773e9 (diff)
downloadglibc-609cf61467154868c88b1ede078322fb4b48a528.tar.gz
glibc-609cf61467154868c88b1ede078322fb4b48a528.tar.xz
glibc-609cf61467154868c88b1ede078322fb4b48a528.zip
[BZ #3313]
2006-10-17  Jakub Jelinek  <jakub@redhat.com>
	* sunrpc/xdr_mem.c (xdrmem_setpos): Don't compare addresses
	as signed longs, check for x_base + pos overflow.
	* sunrpc/Makefile (tests): Add tst-xdrmem2.
	* sunrpc/tst-xdrmem2.c: New test.

2006-10-18  Ulrich Drepper  <drepper@redhat.com>

	* elf/dl-lookup.c (_dl_lookup_symbol_x): Add warning to
	_dl_lookup_symbol_x code.

2006-10-17  Jakub Jelinek  <jakub@redhat.com>

	* elf/dl-runtime.c: Include sysdep-cancel.h.
	(_dl_fixup, _dl_profile_fixup): Use __rtld_mrlock_* and
	scoperec->nusers only if !SINGLE_THREAD_P.  Use atomic_*
	instead of catomic_* macros.
	* elf/dl-sym.c: Include sysdep-cancel.h.
	(do_sym): Use __rtld_mrlock_* and scoperec->nusers only
	if !SINGLE_THREAD_P.  Use atomic_* instead of catomic_* macros.
	* elf/dl-close.c: Include sysdep-cancel.h.
	(_dl_close): Use __rtld_mrlock_* and scoperec->nusers only
	if !SINGLE_THREAD_P.  Use atomic_* instead of catomic_* macros.
	* elf/dl-open.c: Include sysdep-cancel.h.
	(dl_open_worker): Use __rtld_mrlock_* and scoperec->nusers only
	if !SINGLE_THREAD_P.  Use atomic_* instead of catomic_* macros.

2006-10-17  Jakub Jelinek  <jakub@redhat.com>

	[BZ #3313]
	* malloc/malloc.c (malloc_consolidate): Set maxfb to address of last
	fastbin rather than end of fastbin array.

2006-10-18  Ulrich Drepper  <drepper@redhat.com>

	* sysdeps/i386/i486/bits/atomic.h (catomic_decrement): Use correct
	body macro.
	* sysdeps/x86_64/bits/atomic.h
	(__arch_c_compare_and_exchange_val_64_acq): Add missing casts.
	(catomic_decrement): Use correct body macro.

2006-10-17  Jakub Jelinek  <jakub@redhat.com>

	* include/atomic.h: Add a unique prefix to all local variables
	in macros.
	* csu/tst-atomic.c (do_test): Test also catomic_* macros.

	* include/link.h: Include <rtld-lowlevel.h>.  Define struct
Diffstat (limited to 'nptl')
-rw-r--r--nptl/ChangeLog6
-rw-r--r--nptl/sysdeps/unix/sysv/linux/rtld-lowlevel.h18
2 files changed, 15 insertions, 9 deletions
diff --git a/nptl/ChangeLog b/nptl/ChangeLog
index a1e64928ae..43933219e8 100644
--- a/nptl/ChangeLog
+++ b/nptl/ChangeLog
@@ -1,3 +1,9 @@
+2006-10-17  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/unix/sysv/linux/rtld-lowlevel.h (__rtld_mrlock_lock,
+	__rtld_mrlock_unlock, __rtld_mrlock_change, __rtld_mrlock_done): Use
+	atomic_* instead of catomic_* macros.
+
 2006-10-12  Ulrich Drepper  <drepper@redhat.com>
 
 	[BZ #3285]
diff --git a/nptl/sysdeps/unix/sysv/linux/rtld-lowlevel.h b/nptl/sysdeps/unix/sysv/linux/rtld-lowlevel.h
index b16fd2165d..7152dd20aa 100644
--- a/nptl/sysdeps/unix/sysv/linux/rtld-lowlevel.h
+++ b/nptl/sysdeps/unix/sysv/linux/rtld-lowlevel.h
@@ -62,9 +62,9 @@ typedef int __rtld_mrlock_t;
 	      {								      \
 		int newval = ((oldval & __RTLD_MRLOCK_RBITS)		      \
 			      + __RTLD_MRLOCK_INC);			      \
-		int ret = catomic_compare_and_exchange_val_acq (&(lock),      \
-								newval,	      \
-								oldval);      \
+		int ret = atomic_compare_and_exchange_val_acq (&(lock),	      \
+							       newval,	      \
+							       oldval);	      \
 		if (__builtin_expect (ret == oldval, 1))		      \
 		  goto out;						      \
 	      }								      \
@@ -72,7 +72,7 @@ typedef int __rtld_mrlock_t;
 	  }								      \
 	if ((oldval & __RTLD_MRLOCK_RWAIT) == 0)			      \
 	  {								      \
-	    catomic_or (&(lock), __RTLD_MRLOCK_RWAIT);			      \
+	    atomic_or (&(lock), __RTLD_MRLOCK_RWAIT);			      \
 	    oldval |= __RTLD_MRLOCK_RWAIT;				      \
 	  }								      \
 	lll_futex_wait (lock, oldval);					      \
@@ -83,7 +83,7 @@ typedef int __rtld_mrlock_t;
 
 #define __rtld_mrlock_unlock(lock) \
   do {									      \
-    int oldval = catomic_exchange_and_add (&(lock), -__RTLD_MRLOCK_INC);      \
+    int oldval = atomic_exchange_and_add (&(lock), -__RTLD_MRLOCK_INC);	      \
     if (__builtin_expect ((oldval					      \
 			   & (__RTLD_MRLOCK_RBITS | __RTLD_MRLOCK_WWAIT))     \
 			  == (__RTLD_MRLOCK_INC | __RTLD_MRLOCK_WWAIT), 0))   \
@@ -103,11 +103,11 @@ typedef int __rtld_mrlock_t;
 	for (int tries = 0; tries < __RTLD_MRLOCK_TRIES; ++tries)	      \
 	  {								      \
 	    oldval = lock;						      \
-	    while (__builtin_expect ((oldval & __RTLD_MRLOCK_RBITS) == 0, 1))\
+	    while (__builtin_expect ((oldval & __RTLD_MRLOCK_RBITS) == 0, 1)) \
 	      {								      \
 		int newval = ((oldval & __RTLD_MRLOCK_RWAIT)		      \
 			      + __RTLD_MRLOCK_WRITER);			      \
-		int ret = catomic_compare_and_exchange_val_acq (&(lock),      \
+		int ret = atomic_compare_and_exchange_val_acq (&(lock),	      \
 							       newval,	      \
 							       oldval);	      \
 		if (__builtin_expect (ret == oldval, 1))		      \
@@ -115,7 +115,7 @@ typedef int __rtld_mrlock_t;
 	      }								      \
 	    atomic_delay ();						      \
 	  }								      \
-	catomic_or (&(lock), __RTLD_MRLOCK_WWAIT);			      \
+	atomic_or (&(lock), __RTLD_MRLOCK_WWAIT);			      \
 	oldval |= __RTLD_MRLOCK_WWAIT;					      \
 	lll_futex_wait (lock, oldval);					      \
       }									      \
@@ -125,7 +125,7 @@ typedef int __rtld_mrlock_t;
 
 #define __rtld_mrlock_done(lock) \
   do {				 \
-    int oldval = catomic_exchange_and_add (&(lock), -__RTLD_MRLOCK_WRITER);   \
+    int oldval = atomic_exchange_and_add (&(lock), -__RTLD_MRLOCK_WRITER);    \
     if (__builtin_expect ((oldval & __RTLD_MRLOCK_RWAIT) != 0, 0))	      \
       lll_futex_wake (&(lock), 0x7fffffff);				      \
   } while (0)