(_dl_relocate_object): Call elf_machine_runtime_setup unconditionally,
[kopensolaris-gnu/glibc.git] / elf / dl-error.c
index 5f8e4e4..a5c8611 100644 (file)
@@ -30,6 +30,7 @@ _dl_signal_error (int errcode,
                  const char *errstring)
 {
   signalled_errstring = errstring ?: "DYNAMIC LINKER BUG!!!";
+  signalled_objname = objname;
   longjmp (catch_env, errcode ?: -1);
 }
 
@@ -42,8 +43,15 @@ _dl_catch_error (const char **errstring,
 
   signalled_errstring = signalled_objname = NULL;
   errcode = setjmp (catch_env);
-  (*operate) ();
+  if (errcode == 0)
+    {
+      (*operate) ();
+      *errstring = *objname = NULL;
+      return 0;
+    }
+
+  /* We get here only if we longjmp'd out of OPERATE.  */
   *errstring = signalled_errstring;
   *objname = signalled_objname;
-  return *errstring ? errcode : 0;
+  return errcode == -1 ? 0 : errcode;
 }