freebsd-nq/libexec/rtld-elf/amd64
John Polstra 3600eb76c6 Work around an assert failure in the dynamic linker's default thread
locking functions.  If an application loads a shared object with
dlopen() and the shared object has an init function which requires
lazy binding, then _rtld_bind is called when the thread is already
inside the dynamic linker.  This leads to a recursive acquisition
of the lock, which I was not expecting -- hence the assert failure.

This work-around makes the default locking functions handle recursive
locking.  It is NOT the correct fix -- that should be implemented
at the generic locking level rather than in the default locking
functions.  I will implement the correct fix in a future commit.

Since the dllockinit() interface will likely need to change, warn
about that in both the man page and the header file.
1999-12-28 04:38:17 +00:00
..
elf_rtld.x Eliminate all machine-dependent code from the main source body and 1999-04-09 00:28:43 +00:00
lockdflt.c Work around an assert failure in the dynamic linker's default thread 1999-12-28 04:38:17 +00:00
Makefile.inc Eliminate all machine-dependent code from the main source body and 1999-04-09 00:28:43 +00:00
reloc.c Add a new function dllockinit() for registering thread locking 1999-12-27 04:44:04 +00:00
rtld_machdep.h $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
rtld_start.S $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00