diff options
-rw-r--r-- | gdb/ChangeLog | 7 | ||||
-rw-r--r-- | gdb/somsolib.c | 18 |
2 files changed, 24 insertions, 1 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 350f711..0383189 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -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 diff --git a/gdb/somsolib.c b/gdb/somsolib.c index 2744e5c..595752c 100644 --- a/gdb/somsolib.c +++ b/gdb/somsolib.c @@ -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); |