From aeca85c13afa016c2168009cef4d71263d02fe36 Mon Sep 17 00:00:00 2001 From: Kung Hsu Date: Tue, 12 Sep 1995 23:05:22 +0000 Subject: [PATCH] * stabsread.c (read_one_struct_field): Add a patch to handle cfront generated stabs that each field is in full mangled name. --- gdb/ChangeLog | 3 +++ gdb/stabsread.c | 31 ++++++++++++++++++++++++++++++- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 7d599ec1fa..4ebb524f5e 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,8 @@ Tue Sep 12 15:46:18 1995 Kung Hsu + * stabsread.c (read_one_struct_field): Add a patch to handle cfront + generated stabs that each field is in full mangled name. + * infcmd.c (attach_command): Add solibs only when auto_solib_add_at_startup is set. diff --git a/gdb/stabsread.c b/gdb/stabsread.c index 5221c44b18..f9c619b12c 100644 --- a/gdb/stabsread.c +++ b/gdb/stabsread.c @@ -2344,7 +2344,36 @@ read_one_struct_field (fip, pp, p, type, objfile) struct type *type; struct objfile *objfile; { - fip -> list -> field.name = + /* The following is code to work around cfront generated stabs. + The stabs contains full mangled name for each field. + We try to demangle the name and extract the field name out of it. + */ + if (current_language->la_language == language_cplus) + { + char save_p; + char *dem, *dem_p; + save_p = *p; + *p = '\0'; + dem = cplus_demangle (*pp, DMGL_ANSI | DMGL_PARAMS); + if (dem != NULL) + { + dem_p = strrchr (dem, ':'); + if (dem_p != 0 && *(dem_p-1)==':') + dem_p++; + fip->list->field.name = + obsavestring (dem_p, strlen(dem_p), &objfile -> type_obstack); + } + else + { + fip->list->field.name = + obsavestring (*pp, p - *pp, &objfile -> type_obstack); + } + *p = save_p; + } + /* end of code for cfront work around */ + + else + fip -> list -> field.name = obsavestring (*pp, p - *pp, &objfile -> type_obstack); *pp = p + 1;