Update.
authorUlrich Drepper <drepper@redhat.com>
Tue, 26 Jun 2001 04:17:42 +0000 (04:17 +0000)
committerUlrich Drepper <drepper@redhat.com>
Tue, 26 Jun 2001 04:17:42 +0000 (04:17 +0000)
2001-06-25  Ulrich Drepper  <drepper@redhat.com>

* elf/dl-deps.c (_dl_map_object_deps): Fix handling of failing
_dl_catch_error calls.

ChangeLog
elf/dl-deps.c

index 0cb258b..46b2414 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2001-06-25  Ulrich Drepper  <drepper@redhat.com>
+
+       * elf/dl-deps.c (_dl_map_object_deps): Fix handling of failing
+       _dl_catch_error calls.
+
 2001-06-22  Jakub Jelinek  <jakub@redhat.com>
 
        * posix/regex.c (regex_compile, re_match_2_internal): Fix comment
index 9bdaa46..e40f08a 100644 (file)
@@ -222,16 +222,18 @@ _dl_map_object_deps (struct link_map *map,
              {
                /* Map in the needed object.  */
                struct link_map *dep;
+               int err;
 
                /* Recognize DSTs.  */
                name = expand_dst (l, strtab + d->d_un.d_val, 0);
                /* Store the tag in the argument structure.  */
                args.name = name;
 
-               if (_dl_catch_error (&objname, &errstring, openaux, &args))
+               err = _dl_catch_error (&objname, &errstring, openaux, &args);
+               if (__builtin_expect (errstring != NULL, 0))
                  {
-                   if (errno)
-                     errno_reason = errno;
+                   if (err)
+                     errno_reason = err;
                    else
                      errno_reason = -1;
                    goto out;
@@ -273,6 +275,8 @@ _dl_map_object_deps (struct link_map *map,
 
                if (d->d_tag == DT_AUXILIARY)
                  {
+                   int err;
+
                    /* Say that we are about to load an auxiliary library.  */
                    if (__builtin_expect (_dl_debug_mask & DL_DEBUG_LIBS, 0))
                      _dl_debug_printf ("load auxiliary object=%s"
@@ -282,7 +286,9 @@ _dl_map_object_deps (struct link_map *map,
 
                    /* We must be prepared that the addressed shared
                       object is not available.  */
-                   if (_dl_catch_error (&objname, &errstring, openaux, &args))
+                   err = _dl_catch_error (&objname, &errstring, openaux,
+                                          &args);
+                   if (__builtin_expect (errstring != NULL, 0))
                      {
                        /* We are not interested in the error message.  */
                        assert (errstring != NULL);
@@ -295,6 +301,8 @@ _dl_map_object_deps (struct link_map *map,
                  }
                else
                  {
+                   int err;
+
                    /* Say that we are about to load an auxiliary library.  */
                    if (__builtin_expect (_dl_debug_mask & DL_DEBUG_LIBS, 0))
                      _dl_debug_printf ("load filtered object=%s"
@@ -303,10 +311,12 @@ _dl_map_object_deps (struct link_map *map,
                                        ? l->l_name : _dl_argv[0]);
 
                    /* For filter objects the dependency must be available.  */
-                   if (_dl_catch_error (&objname, &errstring, openaux, &args))
+                   err = _dl_catch_error (&objname, &errstring, openaux,
+                                          &args);
+                   if (__builtin_expect (errstring != NULL, 0))
                      {
-                       if (errno)
-                         errno_reason = errno;
+                       if (err)
+                         errno_reason = err;
                        else
                          errno_reason = -1;
                        goto out;