|
|
|
@ -2953,6 +2953,7 @@ read_member_functions (struct field_info *fip, char **pp, struct type *type, |
|
|
|
{ |
|
|
|
int nfn_fields = 0; |
|
|
|
int length = 0; |
|
|
|
int skip_method; |
|
|
|
/* Total number of member functions defined in this class. If the class
|
|
|
|
defines two `f' functions, and one `g' function, then this will have |
|
|
|
the value 3. */ |
|
|
|
@ -2992,6 +2993,36 @@ read_member_functions (struct field_info *fip, char **pp, struct type *type, |
|
|
|
look_ahead_type = NULL; |
|
|
|
length = 0; |
|
|
|
|
|
|
|
skip_method = 0; |
|
|
|
if (p - *pp == strlen ("__base_ctor") |
|
|
|
&& strncmp (*pp, "__base_ctor", strlen ("__base_ctor")) == 0) |
|
|
|
skip_method = 1; |
|
|
|
else if (p - *pp == strlen ("__base_dtor") |
|
|
|
&& strncmp (*pp, "__base_dtor", strlen ("__base_dtor")) == 0) |
|
|
|
skip_method = 1; |
|
|
|
else if (p - *pp == strlen ("__deleting_dtor") |
|
|
|
&& strncmp (*pp, "__deleting_dtor", |
|
|
|
strlen ("__deleting_dtor")) == 0) |
|
|
|
skip_method = 1; |
|
|
|
|
|
|
|
if (skip_method) |
|
|
|
{ |
|
|
|
/* Skip past '::'. */ |
|
|
|
*pp = p + 2; |
|
|
|
/* Read the type. */ |
|
|
|
read_type (pp, objfile); |
|
|
|
/* Skip past the colon, mangled name, semicolon, flags, and final
|
|
|
|
semicolon. */ |
|
|
|
while (**pp != ';') |
|
|
|
(*pp) ++; |
|
|
|
(*pp) ++; |
|
|
|
while (**pp != ';') |
|
|
|
(*pp) ++; |
|
|
|
(*pp) ++; |
|
|
|
|
|
|
|
continue; |
|
|
|
} |
|
|
|
|
|
|
|
new_fnlist = (struct next_fnfieldlist *) |
|
|
|
xmalloc (sizeof (struct next_fnfieldlist)); |
|
|
|
make_cleanup (xfree, new_fnlist); |
|
|
|
|