* somsolib.c (som_solib_add): Just give a warning if a file
authorJeff Law <law@redhat.com>
Fri, 13 Oct 1995 17:05:53 +0000 (17:05 +0000)
committerJeff Law <law@redhat.com>
Fri, 13 Oct 1995 17:05:53 +0000 (17:05 +0000)
        mentioned in the dld_list can't be found.
Warning seems more reasonable than croaking.

        * config/pa/tm-hppah.h (FRAME_SAVED_PC_IN_SIGTRAMP): Dig out
        the PC from the PC queues rather than %r31.
Fixes net bug.  Might also fix one of the hpux10 corefile.exp failures,
not sure (will test when I get back monday morning).

gdb/ChangeLog
gdb/somsolib.c

index 350f7119e8b0b1be9464362d6b4066e8fa8ce80d..0383189bce78b20c77562f8d8d27cd1dc98021d7 100644 (file)
@@ -1,3 +1,10 @@
+Fri Oct 13 10:57:40 1995  Jeffrey A Law  (law@cygnus.com)
+
+       * somsolib.c (som_solib_add): Just give a warning if a file
+       mentioned in the dld_list can't be found.
+       * config/pa/tm-hppah.h (FRAME_SAVED_PC_IN_SIGTRAMP): Dig out
+       the PC from the PC queues rather than %r31.
+
 Thu Oct 12 13:36:15 1995  Jeffrey A Law  (law@cygnus.com)
 
        * corelow.c (core_open): Don't update the to_sections and
index 2744e5c9a048d2c0251de354c9e57be9bfa6651b..595752c203ea00226f1e3379ee24e53854e6bdb4 100644 (file)
@@ -234,6 +234,7 @@ som_solib_add (arg_string, from_tty, target)
       struct so_list *new_so;
       struct so_list *so_list = so_list_head;
       struct section_table *p;
+      struct stat statbuf;
 
       if (addr == 0)
        break;
@@ -268,7 +269,22 @@ som_solib_add (arg_string, from_tty, target)
          so_list = so_list->next;
        }
 
-      /* We've already loaded this one or it's the main program, skip it.  */
+      /* See if the file exists.  If not, give a warning, but don't
+        die.  */
+      status = stat (name, &statbuf);
+      if (status == -1)
+       {
+         warning ("Can't find file %s referenced in dld_list.", name);
+
+         status = target_read_memory (addr + 36, buf, 4);
+         if (status != 0)
+           goto err;
+
+         addr = (CORE_ADDR) extract_unsigned_integer (buf, 4);
+         continue;
+       }
+
+      /* If we've already loaded this one or it's the main program, skip it.  */
       if (so_list || !strcmp (name, symfile_objfile->name))
        {
          status = target_read_memory (addr + 36, buf, 4);