mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-27 17:40:49 +00:00
Handle missing shared libraries during the examination of a core
dump gracefully. * solib.c (find_solib): Use catch_errors around call to solib_map_sections. Use warning instead of error if reading of the shared library name fails. (solib_map_sections): Change return and argument types to make it callable from catch_errors. (symbol_add_stub): Avoid GDB core dump if solib->abfd is NULL. * irix5-nat.c, osfsolib.c (xfer_link_map_member, solib_map_sections, symbol_add_stub): Ditto.
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/* Handle OSF/1 shared libraries for GDB, the GNU Debugger.
|
||||
Copyright 1993, 1994, 1995, 1996 Free Software Foundation, Inc.
|
||||
Copyright 1993, 1994, 1995, 1996, 1998 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GDB.
|
||||
|
||||
@@ -193,8 +193,8 @@ next_link_map_member PARAMS ((struct so_list *));
|
||||
static void
|
||||
xfer_link_map_member PARAMS ((struct so_list *, struct link_map *));
|
||||
|
||||
static void
|
||||
solib_map_sections PARAMS ((struct so_list *));
|
||||
static int
|
||||
solib_map_sections PARAMS ((char *));
|
||||
|
||||
/*
|
||||
|
||||
@@ -204,7 +204,7 @@ LOCAL FUNCTION
|
||||
|
||||
SYNOPSIS
|
||||
|
||||
static void solib_map_sections (struct so_list *so)
|
||||
static int solib_map_sections (struct so_list *so)
|
||||
|
||||
DESCRIPTION
|
||||
|
||||
@@ -223,10 +223,11 @@ FIXMES
|
||||
expansion stuff?).
|
||||
*/
|
||||
|
||||
static void
|
||||
solib_map_sections (so)
|
||||
struct so_list *so;
|
||||
static int
|
||||
solib_map_sections (arg)
|
||||
char *arg;
|
||||
{
|
||||
struct so_list *so = (struct so_list *) arg; /* catch_errors bogon */
|
||||
char *filename;
|
||||
char *scratch_pathname;
|
||||
int scratch_chan;
|
||||
@@ -288,6 +289,8 @@ solib_map_sections (so)
|
||||
|
||||
/* Free the file names, close the file now. */
|
||||
do_cleanups (old_chain);
|
||||
|
||||
return (1);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -485,7 +488,9 @@ xfer_link_map_member (so_list_ptr, lm)
|
||||
}
|
||||
#endif
|
||||
|
||||
solib_map_sections (so_list_ptr);
|
||||
catch_errors (solib_map_sections, (char *) so_list_ptr,
|
||||
"Error while mapping shared library sections:\n",
|
||||
RETURN_MASK_ALL);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -570,7 +575,7 @@ symbol_add_stub (arg)
|
||||
|
||||
if (so -> textsection)
|
||||
text_addr = so -> textsection -> addr;
|
||||
else
|
||||
else if (so -> abfd != NULL)
|
||||
{
|
||||
asection *lowest_sect;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user