From 3b016d57ebe79552dbfa00642c2728bf3f5cd213 Mon Sep 17 00:00:00 2001 From: Daniel Jacobowitz Date: Thu, 11 Oct 2007 19:48:02 +0000 Subject: [PATCH] PR gdb/2280 * coffread.c (read_one_sym): Check for read errors. --- gdb/ChangeLog | 5 +++++ gdb/coffread.c | 15 ++++++++++++--- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 0faea7c..f4eb180 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2007-10-11 Daniel Jacobowitz + + PR gdb/2280 + * coffread.c (read_one_sym): Check for read errors. + 2007-10-11 Ulrich Weigand * linux-nat.c (lin_lwp_attach_lwp): Use "Linux kernel 2.6.19" diff --git a/gdb/coffread.c b/gdb/coffread.c index b767eaf..c492749 100644 --- a/gdb/coffread.c +++ b/gdb/coffread.c @@ -1116,20 +1116,29 @@ read_one_sym (struct coff_symbol *cs, union internal_auxent *aux) { int i; + bfd_size_type bytes; cs->c_symnum = symnum; - bfd_bread (temp_sym, local_symesz, nlist_bfd_global); + bytes = bfd_bread (temp_sym, local_symesz, nlist_bfd_global); + if (bytes != local_symesz) + error ("%s: error reading symbols", current_objfile->name); bfd_coff_swap_sym_in (symfile_bfd, temp_sym, (char *) sym); cs->c_naux = sym->n_numaux & 0xff; if (cs->c_naux >= 1) { - bfd_bread (temp_aux, local_auxesz, nlist_bfd_global); + bytes = bfd_bread (temp_aux, local_auxesz, nlist_bfd_global); + if (bytes != local_auxesz) + error ("%s: error reading symbols", current_objfile->name); bfd_coff_swap_aux_in (symfile_bfd, temp_aux, sym->n_type, sym->n_sclass, 0, cs->c_naux, (char *) aux); /* If more than one aux entry, read past it (only the first aux is important). */ for (i = 1; i < cs->c_naux; i++) - bfd_bread (temp_aux, local_auxesz, nlist_bfd_global); + { + bytes = bfd_bread (temp_aux, local_auxesz, nlist_bfd_global); + if (bytes != local_auxesz) + error ("%s: error reading symbols", current_objfile->name); + } } cs->c_name = getsymname (sym); cs->c_value = sym->n_value; -- 2.7.4