FILE *stream;
{
struct type *domain;
- struct fn_field *f;
- int j;
+ struct fn_field *f = NULL;
+ int j = 0;
int len2;
int offset;
char *kind = "";
unsigned len;
unsigned int i;
+ check_stub_type (TYPE_TARGET_TYPE (type));
domain = TYPE_DOMAIN_TYPE (TYPE_TARGET_TYPE (type));
+ if (domain == (struct type *)NULL)
+ {
+ fprintf_filtered (stream, "<unknown>");
+ return;
+ }
addr = unpack_pointer (lookup_pointer_type (builtin_type_void), valaddr);
if (METHOD_PTR_IS_VIRTUAL (addr))
{
struct type *type;
{
char *typename = type_name_no_tag (type);
- static const char vtbl_ptr_name[] =
+ /* This was what it was for gcc 2.4.5 and earlier. */
+ static const char vtbl_ptr_name_old[] =
{ CPLUS_MARKER,'v','t','b','l','_','p','t','r','_','t','y','p','e', 0 };
+ /* It was changed to this after 2.4.5. */
+ static const char vtbl_ptr_name[] =
+ { '_','_','v','t','b','l','_','p','t','r','_','t','y','p','e', 0 };
- return (typename != NULL && STREQ(typename, vtbl_ptr_name));
+ return (typename != NULL
+ && (STREQ (typename, vtbl_ptr_name)
+ || STREQ (typename, vtbl_ptr_name_old)));
}
/* Return truth value for the assertion that TYPE is of the type
{
char *baddr;
int err;
+ char *basename = TYPE_NAME (TYPE_BASECLASS (type, i));
if (BASETYPE_VIA_VIRTUAL (type, i))
{
/* Fix to use baseclass_offset instead. FIXME */
baddr = baseclass_addr (type, i, valaddr, 0, &err);
if (err == 0 && baddr == 0)
- error ("could not find virtual baseclass `%s'\n",
- type_name_no_tag (TYPE_BASECLASS (type, i)));
+ error ("could not find virtual baseclass %s\n",
+ basename ? basename : "");
if (pretty)
{
print_spaces_filtered (2 * recurse, stream);
}
fputs_filtered ("<", stream);
- fputs_filtered (type_name_no_tag (TYPE_BASECLASS (type, i)), stream);
+ /* Not sure what the best notation is in the case where there is no
+ baseclass name. */
+ fputs_filtered (basename ? basename : "", stream);
fputs_filtered ("> = ", stream);
if (err != 0)
- fprintf_filtered (stream, "<invalid address 0x%x>", baddr);
+ fprintf_filtered (stream,
+ "<invalid address 0x%lx>", (unsigned long) baddr);
else
cp_print_value_fields (TYPE_BASECLASS (type, i), baddr, stream, format,
recurse, pretty,