From: "H.J. Lu" <hjl.tools@gmail.com>
To: gdb-patches@sourceware.org, "H.J. Lu" <hjl.tools@gmail.com>,
Eli Zaretskii <eliz@gnu.org>
Subject: Re: [patch] Add support for <struct> and <flags> in target descriptions
Date: Mon, 01 Mar 2010 00:15:00 -0000 [thread overview]
Message-ID: <6dc9ffc81002281615s376df02cm1807b3b1189fd0f0@mail.gmail.com> (raw)
In-Reply-To: <20100222164509.GE30100@caradoc.them.org>
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.
next prev parent reply other threads:[~2010-03-01 0:15 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-02-22 16:45 Daniel Jacobowitz
2010-02-22 19:32 ` Eli Zaretskii
2010-03-01 0:15 ` H.J. Lu [this message]
2010-03-01 0:57 ` H.J. Lu
2010-03-01 2:20 ` H.J. Lu
2010-03-01 17:20 ` Daniel Jacobowitz
2010-03-01 17:26 ` H.J. Lu
2010-03-01 2:46 ` Daniel Jacobowitz
2010-03-01 3:06 ` H.J. Lu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=6dc9ffc81002281615s376df02cm1807b3b1189fd0f0@mail.gmail.com \
--to=hjl.tools@gmail.com \
--cc=eliz@gnu.org \
--cc=gdb-patches@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox