aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/elfread.c18
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);