* stabsread.c (read_member_functions): Fix is_stub test for

static member functions, improve comment.
This commit is contained in:
Peter Schauer 2002-03-08 17:19:39 +00:00
parent effb06016a
commit 4ea09c106d
2 changed files with 29 additions and 7 deletions

View File

@ -1,3 +1,8 @@
2002-03-08 Peter Schauer <pes@regent.e-technik.tu-muenchen.de>
* stabsread.c (read_member_functions): Fix is_stub test for
static member functions, improve comment.
2002-03-07 Richard Earnshaw <rearnsha@arm.com>
* remote-rdi.c (myprint): Replace 'PTR' with 'void *'.

View File

@ -3287,13 +3287,30 @@ read_member_functions (struct field_info *fip, char **pp, struct type *type,
}
case '?':
/* static member function. */
new_sublist->fn_field.voffset = VOFFSET_STATIC;
if (strncmp (new_sublist->fn_field.physname,
main_fn_name, strlen (main_fn_name)))
{
new_sublist->fn_field.is_stub = 1;
}
break;
{
int slen = strlen (main_fn_name);
new_sublist->fn_field.voffset = VOFFSET_STATIC;
/* For static member functions, we can't tell if they
are stubbed, as they are put out as functions, and not as
methods.
GCC v2 emits the fully mangled name if
dbxout.c:flag_minimal_debug is not set, so we have to
detect a fully mangled physname here and set is_stub
accordingly. Fully mangled physnames in v2 start with
the member function name, followed by two underscores.
GCC v3 currently always emits stubbed member functions,
but with fully mangled physnames, which start with _Z. */
if (!(strncmp (new_sublist->fn_field.physname,
main_fn_name, slen) == 0
&& new_sublist->fn_field.physname[slen] == '_'
&& new_sublist->fn_field.physname[slen + 1] == '_'))
{
new_sublist->fn_field.is_stub = 1;
}
break;
}
default:
/* error */