mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-27 09:38:57 +00:00
Check index in type::field
This changes gdb to check the index that is passed to type::field. This caught one bug in the Ada code when running the test suite (actually I found the bug first, then realized that the check would have helped), so this patch fixes that as well. Regression tested on x86-64 Fedora 34.
This commit is contained in:
@@ -7539,7 +7539,7 @@ ada_template_to_fixed_record_type_1 (struct type *type,
|
||||
that follow this one. */
|
||||
if (ada_is_aligner_type (field_type))
|
||||
{
|
||||
long field_offset = TYPE_FIELD_BITPOS (field_type, f);
|
||||
long field_offset = TYPE_FIELD_BITPOS (type, f);
|
||||
|
||||
field_valaddr = cond_offset_host (field_valaddr, field_offset);
|
||||
field_address = cond_offset_target (field_address, field_offset);
|
||||
|
||||
@@ -5842,11 +5842,11 @@ append_flags_type_field (struct type *type, int start_bitpos, int nr_bits,
|
||||
gdb_assert (nr_bits >= 1 && (start_bitpos + nr_bits) <= type_bitsize);
|
||||
gdb_assert (name != NULL);
|
||||
|
||||
type->set_num_fields (type->num_fields () + 1);
|
||||
type->field (field_nr).set_name (xstrdup (name));
|
||||
type->field (field_nr).set_type (field_type);
|
||||
type->field (field_nr).set_loc_bitpos (start_bitpos);
|
||||
TYPE_FIELD_BITSIZE (type, field_nr) = nr_bits;
|
||||
type->set_num_fields (type->num_fields () + 1);
|
||||
}
|
||||
|
||||
/* Special version of append_flags_type_field to add a flag field.
|
||||
|
||||
@@ -1047,6 +1047,7 @@ struct type
|
||||
/* Get the field at index IDX. */
|
||||
struct field &field (int idx) const
|
||||
{
|
||||
gdb_assert (idx >= 0 && idx < num_fields ());
|
||||
return this->fields ()[idx];
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user