mirror of git://sourceware.org/git/glibc.git
Update.
2004-07-07 Ulrich Drepper <drepper@redhat.com> * elf/dl-fini.c (_dl_fini): Move the unlock of the ld.so lock before the loop running the destructors.
This commit is contained in:
parent
e782376c01
commit
8e5aaad9da
|
@ -1,3 +1,8 @@
|
||||||
|
2004-07-07 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
|
* elf/dl-fini.c (_dl_fini): Move the unlock of the ld.so lock
|
||||||
|
before the loop running the destructors.
|
||||||
|
|
||||||
2004-05-18 Andreas Schwab <schwab@suse.de>
|
2004-05-18 Andreas Schwab <schwab@suse.de>
|
||||||
|
|
||||||
* elf/dl-load.c (_dl_map_object_from_fd): Use the end address of
|
* elf/dl-load.c (_dl_map_object_from_fd): Use the end address of
|
||||||
|
|
|
@ -126,6 +126,14 @@ _dl_fini (void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* We do not rely on the linked list of loaded object anymore from
|
||||||
|
this point on. We have our own list here (maps). The various
|
||||||
|
members of this list cannot vanish since the open count is too
|
||||||
|
high and will be decremented in this loop. So we release the
|
||||||
|
lock so that some code which might be called from a destructor
|
||||||
|
can directly or indirectly access the lock. */
|
||||||
|
__rtld_lock_unlock_recursive (GL(dl_load_lock));
|
||||||
|
|
||||||
/* 'maps' now contains the objects in the right order. Now call the
|
/* 'maps' now contains the objects in the right order. Now call the
|
||||||
destructors. We have to process this array from the front. */
|
destructors. We have to process this array from the front. */
|
||||||
for (i = 0; i < GL(dl_nloaded); ++i)
|
for (i = 0; i < GL(dl_nloaded); ++i)
|
||||||
|
@ -171,8 +179,6 @@ _dl_fini (void)
|
||||||
--l->l_opencount;
|
--l->l_opencount;
|
||||||
}
|
}
|
||||||
|
|
||||||
__rtld_lock_unlock_recursive (GL(dl_load_lock));
|
|
||||||
|
|
||||||
if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_STATISTICS, 0))
|
if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_STATISTICS, 0))
|
||||||
_dl_debug_printf ("\nruntime linker statistics:\n"
|
_dl_debug_printf ("\nruntime linker statistics:\n"
|
||||||
" final number of relocations: %lu\n"
|
" final number of relocations: %lu\n"
|
||||||
|
|
|
@ -1,3 +1,9 @@
|
||||||
|
2004-07-07 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
|
* Makefile: Add rules to build and run tst-fini1.
|
||||||
|
* tst-fini1.c: New file.
|
||||||
|
* tst-fini1mod.c: New file.
|
||||||
|
|
||||||
2004-07-05 Ulrich Drepper <drepper@redhat.com>
|
2004-07-05 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
* sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Define NO_CANCELLATION
|
* sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Define NO_CANCELLATION
|
||||||
|
|
|
@ -263,7 +263,8 @@ tests += tst-cancelx2 tst-cancelx3 tst-cancelx4 tst-cancelx5 \
|
||||||
tst-oncex3 tst-oncex4
|
tst-oncex3 tst-oncex4
|
||||||
endif
|
endif
|
||||||
ifeq ($(build-shared),yes)
|
ifeq ($(build-shared),yes)
|
||||||
tests += tst-atfork2 tst-tls3 tst-tls4 tst-tls5 tst-_res1
|
tests += tst-atfork2 tst-tls3 tst-tls4 tst-tls5 tst-_res1 tst-fini1
|
||||||
|
tests-nolibpthread += tst-fini1
|
||||||
ifeq ($(have-z-execstack),yes)
|
ifeq ($(have-z-execstack),yes)
|
||||||
tests += tst-execstack
|
tests += tst-execstack
|
||||||
endif
|
endif
|
||||||
|
@ -272,7 +273,7 @@ endif
|
||||||
modules-names = tst-atfork2mod tst-tls3mod tst-tls4moda tst-tls4modb \
|
modules-names = tst-atfork2mod tst-tls3mod tst-tls4moda tst-tls4modb \
|
||||||
tst-tls5mod tst-tls5moda tst-tls5modb tst-tls5modc \
|
tst-tls5mod tst-tls5moda tst-tls5modb tst-tls5modc \
|
||||||
tst-tls5modd tst-tls5mode tst-tls5modf \
|
tst-tls5modd tst-tls5mode tst-tls5modf \
|
||||||
tst-_res1mod1 tst-_res1mod2 tst-execstack-mod
|
tst-_res1mod1 tst-_res1mod2 tst-execstack-mod tst-fini1mod
|
||||||
extra-objs += $(addsuffix .os,$(strip $(modules-names))) tst-cleanup4aux.o
|
extra-objs += $(addsuffix .os,$(strip $(modules-names))) tst-cleanup4aux.o
|
||||||
test-extras += $(modules-names)
|
test-extras += $(modules-names)
|
||||||
test-modules = $(addprefix $(objpfx),$(addsuffix .so,$(modules-names)))
|
test-modules = $(addprefix $(objpfx),$(addsuffix .so,$(modules-names)))
|
||||||
|
@ -450,6 +451,8 @@ endif
|
||||||
|
|
||||||
$(objpfx)tst-dlsym1: $(libdl) $(shared-thread-library)
|
$(objpfx)tst-dlsym1: $(libdl) $(shared-thread-library)
|
||||||
|
|
||||||
|
$(objpfx)tst-fini1: $(shared-thread-library) $(objpfx)tst-fini1mod.so
|
||||||
|
|
||||||
ifeq (yes,$(build-shared))
|
ifeq (yes,$(build-shared))
|
||||||
$(objpfx)tst-cond11: $(common-objpfx)rt/librt.so
|
$(objpfx)tst-cond11: $(common-objpfx)rt/librt.so
|
||||||
$(objpfx)tst-cond19: $(common-objpfx)rt/librt.so
|
$(objpfx)tst-cond19: $(common-objpfx)rt/librt.so
|
||||||
|
@ -579,6 +582,8 @@ $(objpfx)tst-execstack: $(libdl)
|
||||||
$(objpfx)tst-execstack.out: $(objpfx)tst-execstack-mod.so
|
$(objpfx)tst-execstack.out: $(objpfx)tst-execstack-mod.so
|
||||||
LDFLAGS-tst-execstack = -Wl,-z,noexecstack
|
LDFLAGS-tst-execstack = -Wl,-z,noexecstack
|
||||||
|
|
||||||
|
$(objpfx)tst-fini1mod.so: $(shared-thread-library)
|
||||||
|
|
||||||
# The tests here better do not run in parallel
|
# The tests here better do not run in parallel
|
||||||
ifneq ($(filter %tests,$(MAKECMDGOALS)),)
|
ifneq ($(filter %tests,$(MAKECMDGOALS)),)
|
||||||
.NOTPARALLEL:
|
.NOTPARALLEL:
|
||||||
|
|
Loading…
Reference in New Issue