This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [patch] Add support for <struct> and <flags> in target descriptions


On Mon, Feb 22, 2010 at 8:45 AM, Daniel Jacobowitz <dan@codesourcery.com> wrote:
> Hi H.J.,
>
> This patch adds <flags> support to the XML language. ?Could you try
> using this to move the two x86 flags registers from out of
> target-descriptions.c?
>
> The flags support is straightforward and covered by the manual.
> It's not tested because I couldn't find a way to do so; you can't
> ptype a flags register, and you can't add dummy registers whose value
> you can get at, only for ptype.
>
> The patch also adds <struct>, which is a little more interesting.
> It's got two forms:
>
> * Register containing integer bitfields. ?Each field must be
> explicitly positioned. ?The size must be pre-declared - otherwise
> the representation GDB uses for big-endian bitfields can't figure out
> how far from the MSB edge of the register the field is.
>
> * Register containing typed non-bitfield structures. ?Each field must
> be implicitly positioned. ?There's no support for padding.
>
> These are somewhat annoying limitations, but they suffice for
> everything I've needed this for since I wrote the patch, which was
> originally several years ago; it's been stuck in my submission queue
> because it was tangled up with other local patches. ?Since they are
> "must" restrictions, they are easy to lift in the future; we can make
> GDB more permissive.
>
> These I was able to type, although I'd have liked more exhaustive
> tests... for that, I'd need typeof, which turns out to be annoyingly
> hard to implement in GDB's parser :-(
>
> Eli, how's the documentation?
>
> --
> Daniel Jacobowitz
> CodeSourcery
>
> 2010-02-22 ?Daniel Jacobowitz ?<dan@codesourcery.com>
>
> ? ? ? ?* gdbtypes.c (append_composite_type_field_raw): New.
> ? ? ? ?(append_composite_type_field_aligned): Use the new function.
> ? ? ? ?* gdbtypes.h (append_composite_type_field_raw): Declare.
> ? ? ? ?* target-descriptions.c (struct tdesc_type_field): Add start and end.
> ? ? ? ?(struct tdesc_type_flag): New type.
> ? ? ? ?(struct tdesc_type): Add TDESC_TYPE_STRUCT and TDESC_TYPE_FLAGS to
> ? ? ? ?kind. ?Add size to u.u. ?Add u.f for flags.
> ? ? ? ?(tdesc_gdb_type): Handle TDESC_TYPE_STRUCT and TDESC_TYPE_FLAGS.
> ? ? ? ?(tdesc_free_type): Likewise.
> ? ? ? ?(tdesc_create_struct, tdesc_set_struct_size, tdesc_create_flags): New.
> ? ? ? ?(tdesc_add_field): Handle TDESC_TYPE_STRUCT.
> ? ? ? ?(tdesc_add_bitfield, tdesc_add_flag): New.
> ? ? ? ?* target-descriptions.h (tdesc_create_struct, tdesc_set_struct_size)
> ? ? ? ?(tdesc_create_flags, tdesc_add_bitfield, tdesc_add_flag): Declare.
> ? ? ? ?* xml-tdesc.c (struct tdesc_parsing_data): Rename current_union to
> ? ? ? ?current_type. ?Add current_type_size and current_type_is_flags.
> ? ? ? ?(tdesc_start_union): Clear the new fields.
> ? ? ? ?(tdesc_start_struct, tdesc_start_flags): New.
> ? ? ? ?(tdesc_start_field): Handle struct fields, including bitfields.
> ? ? ? ?(field_attributes): Make type optional. ?Add start and end.
> ? ? ? ?(union_children): Rename to struct_union_children.
> ? ? ? ?(union_attributes): Rename to struct_union_attributes. ?Add optional
> ? ? ? ?size.
> ? ? ? ?(flags_attributes): New.
> ? ? ? ?(feature_children): Add struct and flags.
> ? ? ? ?* features/gdb-target.dtd: Add flags and struct to features.
> ? ? ? ?Make field type optional. ?Add field start and end.
>
> ? ? ? ?* gdb.texinfo (Types): Describe <struct> and <flags>.
>
> ? ? ? ?* gdb.xml/extra-regs.xml: Add struct1, struct2, and flags
> ? ? ? ?types. ?Add structreg, bitfields, and flags registers.
> ? ? ? ?* gdb.xml/tdesc-regs.exp: Test structreg and bitfields
> ? ? ? ?registers.
>

It doesn't work. "case TDESC_TYPE_FLAGS:" is missing in
maint_print_c_tdesc_cmd.



-- 
H.J.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]