summary refs log tree commit diff
path: root/elf/dl-runtime.c
diff options
context:
space:
mode:
Diffstat (limited to 'elf/dl-runtime.c')
-rw-r--r--elf/dl-runtime.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/elf/dl-runtime.c b/elf/dl-runtime.c
index 53601b809f..5c1f290fe5 100644
--- a/elf/dl-runtime.c
+++ b/elf/dl-runtime.c
@@ -64,7 +64,11 @@ _dl_object_relocation_scope (struct link_map *l)
 	 dependency tree that first caused this object to be loaded.  */
       while (l->l_loader)
 	l = l->l_loader;
-      *_dl_global_scope_end = l;
+      /* There is no point in searching the same list twice.  This isn't
+	 guaranteed to always find all duplicates if new objects are added
+	 to the global scope, but is good enough most of the time.  */
+      if (_dl_global_scope[2] != l)
+	*_dl_global_scope_end = l;
       return &_dl_global_scope[2];
     }
 }