mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-24 12:23:31 +08:00
* ieee.c (ieee_define_named_type): When creating a tag for an
anonymous struct, copy the name into memory. (ieee_tag_type): Likewise. * debug.c (debug_write_type): Only check and set id field for an unnamed object. (debug_write_class_type): Likewise.
This commit is contained in:
@ -1,5 +1,12 @@
|
|||||||
Wed Jan 24 12:06:05 1996 Ian Lance Taylor <ian@cygnus.com>
|
Wed Jan 24 12:06:05 1996 Ian Lance Taylor <ian@cygnus.com>
|
||||||
|
|
||||||
|
* ieee.c (ieee_define_named_type): When creating a tag for an
|
||||||
|
anonymous struct, copy the name into memory.
|
||||||
|
(ieee_tag_type): Likewise.
|
||||||
|
* debug.c (debug_write_type): Only check and set id field for an
|
||||||
|
unnamed object.
|
||||||
|
(debug_write_class_type): Likewise.
|
||||||
|
|
||||||
* ieee.c: Various changes to write out types for functions and
|
* ieee.c: Various changes to write out types for functions and
|
||||||
references, and to not write out unnecessary function types.
|
references, and to not write out unnecessary function types.
|
||||||
|
|
||||||
|
@ -2576,7 +2576,7 @@ debug_write_type (info, fns, fhandle, type, name)
|
|||||||
if (type->u.kclass != NULL)
|
if (type->u.kclass != NULL)
|
||||||
{
|
{
|
||||||
if (info->class_mark == type->u.kclass->mark
|
if (info->class_mark == type->u.kclass->mark
|
||||||
|| type->u.kclass->id > info->base_id)
|
|| (tag == NULL && type->u.kclass->id > info->base_id))
|
||||||
{
|
{
|
||||||
/* We are currently outputting this struct, or we have
|
/* We are currently outputting this struct, or we have
|
||||||
already output it. I don't know if this can happen,
|
already output it. I don't know if this can happen,
|
||||||
@ -2586,9 +2586,12 @@ debug_write_type (info, fns, fhandle, type, name)
|
|||||||
type->kind);
|
type->kind);
|
||||||
}
|
}
|
||||||
type->u.kclass->mark = info->class_mark;
|
type->u.kclass->mark = info->class_mark;
|
||||||
|
if (tag == NULL)
|
||||||
|
{
|
||||||
++info->class_id;
|
++info->class_id;
|
||||||
type->u.kclass->id = info->class_id;
|
type->u.kclass->id = info->class_id;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (! (*fns->start_struct_type) (fhandle, tag,
|
if (! (*fns->start_struct_type) (fhandle, tag,
|
||||||
(type->u.kclass != NULL
|
(type->u.kclass != NULL
|
||||||
@ -2748,7 +2751,7 @@ debug_write_class_type (info, fns, fhandle, type, tag)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (info->class_mark == type->u.kclass->mark
|
if (info->class_mark == type->u.kclass->mark
|
||||||
|| type->u.kclass->id > info->base_id)
|
|| (tag == NULL && type->u.kclass->id > info->base_id))
|
||||||
{
|
{
|
||||||
/* We are currently outputting this class, or we have
|
/* We are currently outputting this class, or we have
|
||||||
already output it. This can happen when there are
|
already output it. This can happen when there are
|
||||||
@ -2758,9 +2761,12 @@ debug_write_class_type (info, fns, fhandle, type, tag)
|
|||||||
type->kind);
|
type->kind);
|
||||||
}
|
}
|
||||||
type->u.kclass->mark = info->class_mark;
|
type->u.kclass->mark = info->class_mark;
|
||||||
|
if (tag == NULL)
|
||||||
|
{
|
||||||
++info->class_id;
|
++info->class_id;
|
||||||
id = info->class_id;
|
type->u.kclass->id = info->class_id;
|
||||||
type->u.kclass->id = id;
|
}
|
||||||
|
id = type->u.kclass->id;
|
||||||
|
|
||||||
vptrbase = type->u.kclass->vptrbase;
|
vptrbase = type->u.kclass->vptrbase;
|
||||||
if (vptrbase != NULL && vptrbase != type)
|
if (vptrbase != NULL && vptrbase != type)
|
||||||
|
@ -4190,6 +4190,8 @@ ieee_define_named_type (info, name, tagp, id, size, unsignedp, ppbuf)
|
|||||||
{
|
{
|
||||||
nt = (struct ieee_name_type *) xmalloc (sizeof *nt);
|
nt = (struct ieee_name_type *) xmalloc (sizeof *nt);
|
||||||
memset (nt, 0, sizeof *nt);
|
memset (nt, 0, sizeof *nt);
|
||||||
|
if (tag != name)
|
||||||
|
tag = xstrdup (ab);
|
||||||
nt->name = tag;
|
nt->name = tag;
|
||||||
nt->next = info->tags;
|
nt->next = info->tags;
|
||||||
info->tags = nt;
|
info->tags = nt;
|
||||||
@ -5701,6 +5703,8 @@ ieee_tag_type (p, name, id, kind)
|
|||||||
nt = (struct ieee_name_type *) xmalloc (sizeof *nt);
|
nt = (struct ieee_name_type *) xmalloc (sizeof *nt);
|
||||||
memset (nt, 0, sizeof *nt);
|
memset (nt, 0, sizeof *nt);
|
||||||
|
|
||||||
|
if (name == ab)
|
||||||
|
name = xstrdup (ab);
|
||||||
nt->name = name;
|
nt->name = name;
|
||||||
nt->type.indx = info->type_indx;
|
nt->type.indx = info->type_indx;
|
||||||
++info->type_indx;
|
++info->type_indx;
|
||||||
|
Reference in New Issue
Block a user