diff options
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/elfread.c | 18 |
2 files changed, 18 insertions, 5 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 85bf2c9..f7caf06 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +Sat Jul 16 23:39:17 1994 Peter Schauer (pes@regent.e-technik.tu-muenchen.de) + + * elfread.c (elf_symtab_read): Handle error return from + bfd_get_dynamic_symtab_upper_bound gracefully. + Sat Jul 16 14:43:17 1994 Stan Shebs (shebs@andros.cygnus.com) * inferior.h (ARCH_NUM_REGS): New macro, actual number of diff --git a/gdb/elfread.c b/gdb/elfread.c index 214197c..67ce608 100644 --- a/gdb/elfread.c +++ b/gdb/elfread.c @@ -264,12 +264,20 @@ elf_symtab_read (abfd, addr, objfile, dynamic) int stripped = (bfd_get_symcount (abfd) == 0); if (dynamic) - storage_needed = bfd_get_dynamic_symtab_upper_bound (abfd); + { + storage_needed = bfd_get_dynamic_symtab_upper_bound (abfd); + + /* Nothing to be done if there is no dynamic symtab. */ + if (storage_needed < 0) + return; + } else - storage_needed = bfd_get_symtab_upper_bound (abfd); - if (storage_needed < 0) - error ("Can't read symbols from %s: %s", bfd_get_filename (abfd), - bfd_errmsg (bfd_get_error ())); + { + storage_needed = bfd_get_symtab_upper_bound (abfd); + if (storage_needed < 0) + error ("Can't read symbols from %s: %s", bfd_get_filename (abfd), + bfd_errmsg (bfd_get_error ())); + } if (storage_needed > 0) { symbol_table = (asymbol **) xmalloc (storage_needed); |