about summary refs log tree commit diff
path: root/elf/dl-lookup.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2002-06-30 07:17:02 +0000
committerUlrich Drepper <drepper@redhat.com>2002-06-30 07:17:02 +0000
commit6d78cd000fac9854c589ef98a00227de5d1be610 (patch)
tree05be7d53d1a1dad7f995448640a3a96626dd3129 /elf/dl-lookup.c
parent95fdc6a0f61a389e92a6b84250c2286b4808b626 (diff)
downloadglibc-6d78cd000fac9854c589ef98a00227de5d1be610.tar.gz
glibc-6d78cd000fac9854c589ef98a00227de5d1be610.tar.xz
glibc-6d78cd000fac9854c589ef98a00227de5d1be610.zip
Update.
2002-06-30  Ulrich Drepper  <drepper@redhat.com>

	* elf/dl-lookup.c (add_dependency): It is not necessary to add
	dependencies if they are created between objects which are created
	while processing RTLD_NOW for objects loaded as part of the same
	dlopen call.

2002-06-14  H.J. Lu  <hjl@gnu.org>

	* elf/Makefile (tests): Add circleload1.
	(modules-names): Add circlemod1, circlemod2, circlemod3,
	circlemod1a, circlemod2a and circlemod3a.
	($(objpfx)circleload1): New target.
	($(objpfx)circleload1.out): Likewise.
	($(objpfx)circlemod1.so): Likewise.
	($(objpfx)circlemod2.so): Likewise.
	($(objpfx)circlemod1a.so): Likewise.
	($(objpfx)circlemod2a.so): Likewise.
	* elf/circleload1.c: New file.
	* elf/circlemod1.c: New file.
	* elf/circlemod1a.c: New file.
	* elf/circlemod2.c: New file.
	* elf/circlemod2a.c: New file.
	* elf/circlemod3.c: New file.
	* elf/circlemod3a.c: New file.
Diffstat (limited to 'elf/dl-lookup.c')
-rw-r--r--elf/dl-lookup.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/elf/dl-lookup.c b/elf/dl-lookup.c
index b21eeb097a..773f73df9b 100644
--- a/elf/dl-lookup.c
+++ b/elf/dl-lookup.c
@@ -94,6 +94,11 @@ add_dependency (struct link_map *undef_map, struct link_map *map)
   if (undef_map == map)
     return 0;
 
+  /* Don't create cross-reference between modules which are
+     dynamically loaded by the same dlopen() call.  */
+  if (undef_map->l_opencount == 0 && map->l_opencount == 0)
+    return 0;
+
   /* Make sure nobody can unload the object while we are at it.  */
   __libc_lock_lock_recursive (GL(dl_load_lock));