about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog10
-rw-r--r--dlfcn/Makefile3
-rw-r--r--elf/dl-deps.c8
-rw-r--r--sysdeps/unix/sysv/linux/i386/scandir64.c1
4 files changed, 17 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 1945002ff4..60814a83d3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -13,6 +13,16 @@
 	* elf/tst-initorder2.c: New file.
 	* elf/tst-initorder2.exp: New file.
 
+2011-08-22  Andreas Schwab  <schwab@redhat.com>
+
+	* sysdeps/unix/sysv/linux/i386/scandir64.c: Include <string.h>.
+
+	* elf/dl-deps.c (_dl_map_object_deps): Move check for missing
+	dependencies back to end of function.
+
+	* dlfcn/Makefile (LDLIBS-bug-atexit3-lib.so): Readd
+	$(elfobjdir)/ld.so.
+
 2011-08-21  Ulrich Drepper  <drepper@gmail.com>
 
 	* sysdeps/unix/sysv/linux/x86_64/gettimeofday.S: Removed.
diff --git a/dlfcn/Makefile b/dlfcn/Makefile
index 578bc3ffe3..dd4fb83dd5 100644
--- a/dlfcn/Makefile
+++ b/dlfcn/Makefile
@@ -124,7 +124,8 @@ $(objpfx)bug-atexit1.out: $(objpfx)bug-atexit1-lib.so
 $(objpfx)bug-atexit2: $(libdl)
 $(objpfx)bug-atexit2.out: $(objpfx)bug-atexit2-lib.so
 
-LDLIBS-bug-atexit3-lib.so = -lstdc++ -lgcc_eh $(common-objpfx)libc_nonshared.a
+LDLIBS-bug-atexit3-lib.so = -lstdc++ -lgcc_eh $(elfobjdir)/ld.so \
+			    $(common-objpfx)libc_nonshared.a
 $(objpfx)bug-atexit3: $(libdl)
 $(objpfx)bug-atexit3.out: $(objpfx)bug-atexit3-lib.so
 
diff --git a/elf/dl-deps.c b/elf/dl-deps.c
index cc0023d381..7fa4d691c3 100644
--- a/elf/dl-deps.c
+++ b/elf/dl-deps.c
@@ -491,10 +491,6 @@ _dl_map_object_deps (struct link_map *map,
   if (errno == 0 && errno_saved != 0)
     __set_errno (errno_saved);
 
-  if (errno_reason)
-    _dl_signal_error (errno_reason == -1 ? 0 : errno_reason, objname,
-		      NULL, errstring);
-
   struct link_map **old_l_initfini = NULL;
   if (map->l_initfini != NULL && map->l_type == lt_loaded)
     {
@@ -691,4 +687,8 @@ Filters not supported with LD_TRACE_PRELINKING"));
     }
   if (old_l_initfini != NULL)
       map->l_orig_initfini = old_l_initfini;
+
+  if (errno_reason)
+    _dl_signal_error (errno_reason == -1 ? 0 : errno_reason, objname,
+		      NULL, errstring);
 }
diff --git a/sysdeps/unix/sysv/linux/i386/scandir64.c b/sysdeps/unix/sysv/linux/i386/scandir64.c
index ae1970e1c3..3953f464bf 100644
--- a/sysdeps/unix/sysv/linux/i386/scandir64.c
+++ b/sysdeps/unix/sysv/linux/i386/scandir64.c
@@ -35,6 +35,7 @@
 versioned_symbol (libc, __scandir64, scandir64, GLIBC_2_2);
 
 #if SHLIB_COMPAT(libc, GLIBC_2_1, GLIBC_2_2)
+# include <string.h>
 # include <errno.h>
 # include "olddirent.h"