2005-11-03 Wu Zhou <woodzltc@cn.ibm.com>

Checked in by Elena Zannoni  <ezannoni@redhat.com>

       * dwarf2read.c (read_structure_type): Add IBM XL C++
       specific code to set TYPE_VPTR_FIELDNO and TYPE_VPTR_BASETYPE
       of a virtual class if a field named "__vfp" is found.
This commit is contained in:
Elena Zannoni 2005-11-04 02:50:30 +00:00
parent e2126a1475
commit f6235d4cfa
2 changed files with 30 additions and 0 deletions

View File

@ -1,3 +1,11 @@
2005-11-03 Wu Zhou <woodzltc@cn.ibm.com>
Checked in by Elena Zannoni <ezannoni@redhat.com>
* dwarf2read.c (read_structure_type): Add IBM XL C++
specific code to set TYPE_VPTR_FIELDNO and TYPE_VPTR_BASETYPE
of a virtual class if a field named "__vfp" is found.
2005-11-03 Jim Blandy <jimb@redhat.com>
Checked in by Elena Zannoni <ezannoni@redhat.com>

View File

@ -3855,6 +3855,28 @@ read_structure_type (struct die_info *die, struct dwarf2_cu *cu)
TYPE_VPTR_FIELDNO (type) = TYPE_VPTR_FIELDNO (t);
}
}
else if (cu->producer
&& strncmp (cu->producer,
"IBM(R) XL C/C++ Advanced Edition", 32) == 0)
{
/* The IBM XLC compiler does not provide direct indication
of the containing type, but the vtable pointer is
always named __vfp. */
int i;
for (i = TYPE_NFIELDS (type) - 1;
i >= TYPE_N_BASECLASSES (type);
--i)
{
if (strcmp (TYPE_FIELD_NAME (type, i), "__vfp") == 0)
{
TYPE_VPTR_FIELDNO (type) = i;
TYPE_VPTR_BASETYPE (type) = type;
break;
}
}
}
}
do_cleanups (back_to);