aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog4
-rw-r--r--gdb/xcoffread.c26
2 files changed, 25 insertions, 5 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index acf2aef..390b591 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,9 @@
Wed Apr 20 08:37:16 1994 Jim Kingdon (kingdon@lioth.cygnus.com)
+ * xcoffread.c (xcoff_next_symbol_text): Don't return before
+ updating raw_symbol and symnum. Return a value in the case where
+ we complained.
+
* dstread.c, coffread.c: Don't define pending_blocks; buildsym.c
takes care of it.
* parse.c: Don't define block_found; it is defined in symtab.c.
diff --git a/gdb/xcoffread.c b/gdb/xcoffread.c
index 7d93098..de8f77a 100644
--- a/gdb/xcoffread.c
+++ b/gdb/xcoffread.c
@@ -983,16 +983,32 @@ xcoff_next_symbol_text ()
struct internal_syment symbol;
static struct complaint msg =
{"Unexpected symbol continuation", 0, 0};
+ char *retval;
bfd_coff_swap_sym_in (current_objfile->obfd, raw_symbol, &symbol);
if (symbol.n_zeroes)
- complain (&msg);
+ {
+ complain (&msg);
+
+ /* Return something which points to '\0' and hope the symbol reading
+ code does something reasonable. */
+ retval = "";
+ }
else if (symbol.n_sclass & 0x80)
- return debugsec + symbol.n_offset;
+ {
+ retval = debugsec + symbol.n_offset;
+ raw_symbol += coff_data (current_objfile->obfd)->local_symesz;
+ ++symnum;
+ }
else
- complain (&msg);
- raw_symbol += coff_data (current_objfile->obfd)->local_symesz;
- ++symnum;
+ {
+ complain (&msg);
+
+ /* Return something which points to '\0' and hope the symbol reading
+ code does something reasonable. */
+ retval = "";
+ }
+ return retval;
}
/* read the whole symbol table of a given bfd. */