Avoid crash in resolve_dynamic_struct
resolve_dynamic_struct says: gdb_assert (type->num_fields () > 0); However, a certain Ada program has a structure with no fields but with a dynamic size, causing this assertion to fire. It is difficult to be certain, but we think this is a compiler bug. However, in the meantime this assertion does not seem to be checking any kind of internal consistency; so this patch removes it. gdb/ChangeLog 2021-02-09 Tom Tromey <tromey@adacore.com> * gdbtypes.c (resolve_dynamic_struct): Handle structure with no fields.
This commit is contained in:
parent
5f128a25f2
commit
a4f0544b1b
@ -1,3 +1,8 @@
|
||||
2021-02-09 Tom Tromey <tromey@adacore.com>
|
||||
|
||||
* gdbtypes.c (resolve_dynamic_struct): Handle structure with no
|
||||
fields.
|
||||
|
||||
2021-02-08 Shahab Vahedi <shahab@synopsys.com>
|
||||
|
||||
PR tdep/27369
|
||||
|
@ -2545,7 +2545,6 @@ resolve_dynamic_struct (struct type *type,
|
||||
unsigned resolved_type_bit_length = 0;
|
||||
|
||||
gdb_assert (type->code () == TYPE_CODE_STRUCT);
|
||||
gdb_assert (type->num_fields () > 0);
|
||||
|
||||
resolved_type = copy_type (type);
|
||||
|
||||
@ -2564,9 +2563,10 @@ resolve_dynamic_struct (struct type *type,
|
||||
((struct field *)
|
||||
TYPE_ALLOC (resolved_type,
|
||||
resolved_type->num_fields () * sizeof (struct field)));
|
||||
memcpy (resolved_type->fields (),
|
||||
type->fields (),
|
||||
resolved_type->num_fields () * sizeof (struct field));
|
||||
if (type->num_fields () > 0)
|
||||
memcpy (resolved_type->fields (),
|
||||
type->fields (),
|
||||
resolved_type->num_fields () * sizeof (struct field));
|
||||
}
|
||||
|
||||
for (i = 0; i < resolved_type->num_fields (); ++i)
|
||||
|
Loading…
Reference in New Issue
Block a user