From: Daniel Jacobowitz Date: Thu, 11 Oct 2007 19:48:02 +0000 (+0000) Subject: PR gdb/2280 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=3b016d57ebe79552dbfa00642c2728bf3f5cd213;p=binutils-gdb.git PR gdb/2280 * coffread.c (read_one_sym): Check for read errors. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 0faea7cf4a9..f4eb180cdfb 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 b767eaff713..c4927490b99 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;