From fdacb17d4819c7112a147195c5ce3c82147f4b46 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Mon, 29 Jun 1998 12:44:22 +0000 Subject: Update. 1998-06-29 12:27 Ulrich Drepper * argp/argp.h: Use __PMT instead of __P for function pointer. * iconv/gconv.h: Likewise. * io/fts.h: Likewise. * io/ftw.h: Likewise. * libio/libio.h: Likewise. * malloc/mcheck.h: Likewise. * misc/search.h: Likewise. * posix/glob.h: Likewise. * resolv/resolv.h: Likewise. * signal/signal.h: Likewise. * stdlib/stdlib.h: Likewise. * sysdeps/unix/sysv/linux/bits/sigaction.h: Likewise. * sysdeps/unix/sysv/linux/bits/siginfo.h: Likewise. 1998-06-26 Andreas Schwab * Makeconfig (CPPFLAGS): Use $($(subdir)-CPPFLAGS) only once. 1998-06-27 Andreas Schwab * posix/wordexp.c (parse_param): Fix memory leak. 1998-06-27 Andreas Schwab * libc.map: Export _IO_ftrylockfile. 1998-06-27 Andreas Schwab * sysdeps/unix/sysv/linux/aio_sigqueue.c: Use get[pu]id instead of __get[pu]id. 1998-06-28 Andreas Schwab * elf/dl-misc.c (_dl_debug_message): Don't cache the pid. * elf/dl-runtime.c (_dl_object_relocation_scope): Avoid adding the same search list twice. 1998-06-29 Andreas Jaeger * login/programs/utmpd.c (handle_requests): Set and use maximal fd used to optimize loop/select. 1998-06-24 Andreas Schwab * sysdeps/generic/init-first.c: Don't define __libc_pid. * sysdeps/unix/sysv/linux/init-first.c: Likewise. * sysdeps/mach/hurd/i386/init-first.c: Likewise. * sysdeps/mach/hurd/mips/init-first.c: Likewise. * sysdeps/arm/init-first.c: Likewise. * posix/getopt_init.c: Don't use __libc_pid. * sysdeps/unix/sysv/linux/aio_sigqueue.c: Likewise. * sysdeps/unix/sysv/linux/sigqueue.c: Likewise. * libc.map: Remove __libc_uid and __libc_pid. --- elf/dl-runtime.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'elf/dl-runtime.c') 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]; } } -- cgit v1.2.3