Re: [patch] static_kind -> bit0, bit1 [Re: [gdb] Fortran dynamic arrays]

Joel Brobecker
2008-10-08T03:28:21Z

> No, according to ISO C99 enums with no assignments get values 0, 1, 2...

Yeah, you're right. I checked C90 as well, since I believe we're still
restricted to using C90 for GDB for now, and it says the same thing.

> Included you as a co-author of this patch. OK to apply?

That's very kind, but you really didn't need to do that. You should
get sole credit for this work, as you clearly guided me as much as
I tried to guide you.

> 2008-10-08 Jan Kratochvil <jan.kratochvil@redhat.com>
> Joel Brobecker <brobecker@adacore.com>
>
> Convert static_kind into loc_kind enum.
> * gdbtypes.h (enum field_loc_kind): New.
> (union field_location): New field dwarf_block.
> (struct field): Rename static_kind as loc_kind.
> (FIELD_STATIC_KIND): Rename to ...
> (FIELD_LOC_KIND): ... here.
> (TYPE_FIELD_STATIC_KIND): Rename to ...
> (TYPE_FIELD_LOC_KIND): ... here and use there now new FIELD_LOC_KIND.
> (TYPE_FIELD_STATIC_HAS_ADDR): Remove.
> (TYPE_FIELD_STATIC): Remove.
> (TYPE_FIELD_BITPOS): Reformat.
> (SET_FIELD_BITPOS): New.
> (FIELD_PHYSADDR): Rename to ...
> (FIELD_STATIC_PHYSADDR): ... here.
> (TYPE_FIELD_STATIC_PHYSADDR): Follow the FIELD_PHYSADDR rename.
> (SET_FIELD_PHYSADDR): Use new FIELD_LOC_KIND.
> (FIELD_PHYSNAME): Rename to ...
> (FIELD_STATIC_PHYSNAME): ... here.
> (TYPE_FIELD_STATIC_PHYSNAME): Follow the FIELD_PHYSNAME rename.
> (SET_FIELD_PHYSNAME): Use new FIELD_LOC_KIND.
> (FIELD_DWARF_BLOCK, TYPE_FIELD_DWARF_BLOCK, SET_FIELD_DWARF_BLOCK): New.
> (field_is_static): New declaration.
> * gdbtypes.c (field_is_static): New function.
> (copy_type_recursive): Update throughout.
> * amd64-tdep.c, c-typeprint.c, coffread.c, cp-valprint.c, dwarf2read.c,
> eval.c, jv-typeprint.c, jv-valprint.c, mdebugread.c, p-typeprint.c,
> p-valprint.c, valops.c, value.c, varobj.c: Update throughout.

Almost there: Pre-approved with the following nit fixed...

[in copy_type_recursive]
> + break;
> + default:
> + gdb_assert (0);

Can you change that to using an internal_error, instead? For instance,

internal_error (__FILE__, __LINE__, _("Unexpected ... kind: %d"),
TYPE_FIELD_LOC_KIND (type, i));

Something like that.

Thank you,
--
Joel