2003-12-10  Ulrich Drepper  <drepper@redhat.com>

	* sysdeps/pthread/bits/libc-lock.h (__rtld_lock_initialize): Define.
	* sysdeps/unix/sysv/linux/fork.c (__libc_fork): Call
	__rtld_lock_initialize for ld.so lock.
	Patch in part by Adam Li <adam.li@intel.com>.
This commit is contained in:
Ulrich Drepper 2003-12-11 04:52:17 +00:00
parent c776b3d717
commit 1d9d0b80d1
3 changed files with 13 additions and 0 deletions

View File

@ -1,3 +1,10 @@
2003-12-10 Ulrich Drepper <drepper@redhat.com>
* sysdeps/pthread/bits/libc-lock.h (__rtld_lock_initialize): Define.
* sysdeps/unix/sysv/linux/fork.c (__libc_fork): Call
__rtld_lock_initialize for ld.so lock.
Patch in part by Adam Li <adam.li@intel.com>.
2003-12-02 David Mosberger <davidm@hpl.hp.com> 2003-12-02 David Mosberger <davidm@hpl.hp.com>
* Makefile (link-libc-static): Remove -lgcc_eh---it's already mentioned * Makefile (link-libc-static): Remove -lgcc_eh---it's already mentioned

View File

@ -131,6 +131,9 @@ typedef pthread_key_t __libc_key_t;
#define _RTLD_LOCK_RECURSIVE_INITIALIZER \ #define _RTLD_LOCK_RECURSIVE_INITIALIZER \
{PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP} {PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP}
#define __rtld_lock_initialize(NAME) \
(void) ((NAME) = (__rtld_lock_recursive_t) _RTLD_LOCK_RECURSIVE_INITIALIZER)
/* If we check for a weakly referenced symbol and then perform a /* If we check for a weakly referenced symbol and then perform a
normal jump to it te code generated for some platforms in case of normal jump to it te code generated for some platforms in case of
PIC is unnecessarily slow. What would happen is that the function PIC is unnecessarily slow. What would happen is that the function

View File

@ -151,6 +151,9 @@ __libc_fork (void)
/* Reset locks in the I/O code. */ /* Reset locks in the I/O code. */
_IO_list_resetlock (); _IO_list_resetlock ();
/* Reset the lock the dynamic loader uses to protect its data. */
__rtld_lock_initialize (GL(dl_load_lock));
/* Run the handlers registered for the child. */ /* Run the handlers registered for the child. */
while (allp != NULL) while (allp != NULL)
{ {