* stabsread.c (read_one_struct_field): Add a patch to handle cfront

generated stabs that each field is in full mangled name.
This commit is contained in:
Kung Hsu 1995-09-12 23:05:22 +00:00
parent f434284a2c
commit aeca85c13a
2 changed files with 33 additions and 1 deletions

View File

@ -1,5 +1,8 @@
Tue Sep 12 15:46:18 1995 Kung Hsu <kung@mexican.cygnus.com>
* 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.

View File

@ -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;