diff options
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/xcoffread.c | 10 |
2 files changed, 15 insertions, 0 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 4533c5d..243cee8 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +Tue Apr 6 09:54:29 1993 Jim Kingdon (kingdon@cygnus.com) + + * xcoffread.c (read_xcoff_symtab): Deal correctly with symbols of + exactly 8 characters. + Tue Apr 6 10:31:26 1993 Stu Grossman (grossman@cygnus.com) * configure.in: Sparclite uses sparc config dir. Also has it's diff --git a/gdb/xcoffread.c b/gdb/xcoffread.c index cbe5f2c..443b19f 100644 --- a/gdb/xcoffread.c +++ b/gdb/xcoffread.c @@ -1064,6 +1064,16 @@ read_xcoff_symtab (objfile, nsyms) pointed to by cs->c_name will persist throughout xcoffread. If we use the new field, it gets overwritten for each symbol. */ cs->c_name = ((struct external_syment *)raw_symbol)->e.e_name; + /* If it's exactly 8 characters long it isn't '\0'-terminated. */ + if (cs->c_name[7] != '\0') + { + char *p; + p = obstack_alloc (&objfile->symbol_obstack, 9); + strncpy (p, cs->c_name, 8); + p[8] = '\0'; + cs->c_name = p; + symname_alloced = 1; + } } else if (symbol->n_sclass & 0x80) { cs->c_name = debugsec + symbol->n_offset; symname_alloced = 0; |