diff options
-rw-r--r-- | gdb/ChangeLog | 4 | ||||
-rw-r--r-- | gdb/xcoffread.c | 26 |
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. */ |