Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Simon Marchi <simark@simark.ca>
To: Matthieu Longo <matthieu.longo@arm.com>, gdb-patches@sourceware.org
Subject: Re: [PATCH v2] gdbtypes: improve documentation of composite type helpers
Date: Mon, 17 Aug 2026 14:50:12 -0400	[thread overview]
Message-ID: <381a0161-9b9b-45ba-89ae-16e6a085b75d@simark.ca> (raw)
In-Reply-To: <20260814104941.522777-1-matthieu.longo@arm.com>

On 8/14/26 6:49 AM, Matthieu Longo wrote:
> Document how arch_composite_type handles a null NAME, and clarify the
> semantics of an empty field name for the append_composite_type* helpers.
> 
> Suggested-By: Simon Marchi <simark@simark.ca>
> ---
>  gdb/gdbtypes.c | 12 ++++--------
>  gdb/gdbtypes.h | 30 ++++++++++++++++++++++++++----
>  2 files changed, 30 insertions(+), 12 deletions(-)
> 
> diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
> index 4b6c01910f4..e0c25c58d83 100644
> --- a/gdb/gdbtypes.c
> +++ b/gdb/gdbtypes.c
> @@ -5412,8 +5412,7 @@ append_flags_type_flag (struct type *type, int bitpos, const char *name)
>  			   name);
>  }
>  
> -/* Allocate a TYPE_CODE_STRUCT or TYPE_CODE_UNION type structure (as
> -   specified by CODE) associated with GDBARCH.  NAME is the type name.  */
> +/* See gdbtypes.h.  */
>  
>  struct type *
>  arch_composite_type (struct gdbarch *gdbarch, const char *name,
> @@ -5428,9 +5427,7 @@ arch_composite_type (struct gdbarch *gdbarch, const char *name,
>    return t;
>  }
>  
> -/* Add new field with name NAME and type FIELD to composite type T.
> -   Do not set the field's position or adjust the type's length;
> -   the caller should do so.  Return the new field.  */
> +/* See gdbtypes.h.  */
>  
>  struct field *
>  append_composite_type_field_raw (struct type *t, const char *name,
> @@ -5448,8 +5445,7 @@ append_composite_type_field_raw (struct type *t, const char *name,
>    return f;
>  }
>  
> -/* Add new field with name NAME and type FIELD to composite type T.
> -   ALIGNMENT (if non-zero) specifies the minimum field alignment.  */
> +/* See gdbtypes.h.  */
>  
>  void
>  append_composite_type_field_aligned (struct type *t, const char *name,
> @@ -5489,7 +5485,7 @@ append_composite_type_field_aligned (struct type *t, const char *name,
>      }
>  }
>  
> -/* Add new field with name NAME and type FIELD to composite type T.  */
> +/* See gdbtypes.h.  */
>  
>  void
>  append_composite_type_field (struct type *t, const char *name,
> diff --git a/gdb/gdbtypes.h b/gdb/gdbtypes.h
> index dd2d24fa8e2..f7853430d64 100644
> --- a/gdb/gdbtypes.h
> +++ b/gdb/gdbtypes.h
> @@ -2431,20 +2431,42 @@ extern struct type *init_pointer_type (type_allocator &alloc, int bit,
>  extern struct type *init_fixed_point_type (type_allocator &, int, int,
>  					   const char *);
>  
> -/* Helper functions to construct a struct or record type.  An
> -   initially empty type is created using arch_composite_type().
> -   Fields are then added using append_composite_type_field*().  A union
> -   type has its size set to the largest field.  A struct type has each
> +/* Helper functions to construct a struct or record type.  An initially empty
> +   type is created using arch_composite_type().  Fields are then added using
> +   append_composite_type_field*().
> +   A union type has its size set to the largest field.  A struct type has each
>     field packed against the previous.  */

I would get rid of this generic comment and move the information to the
other comments.

 - The doc of arch_composite_type can mention that the type initially
   has no fields, and that fields can be added with the
   append_composite_type_field*() functions

 - The part about union and struct sizes can be moved to the doc of
   append_composite_type_field().

To avoid repeating things between all the three variants of
append_composite_type_field*(), I would suggest using a form where the
common information is documented at only one place (probably
append_composite_type_field()) and the other functions refer to it

This is what I propose:

/* Allocate a structure or union type (as specified by CODE) associated with
   GDBARCH.

   NAME is the type name.  If it is nullptr, the type is anonymous.

   The new type initially has no fields.  Fields can be added by calling
   append_composite_type_field*.  */

extern struct type *arch_composite_type (struct gdbarch *gdbarch,
					 const char *name, enum type_code code);

/* Add a new field named NAME with type FIELD to composite type T.

   If NAME is an empty string and the field's type is a structure or a union,
   the fields of that structure or union are visible directly in T.

   This function updates the size of T:

     - A union type has its size set to the largest field.
     - A structure type has each field packed against the previous.  */

extern void append_composite_type_field (struct type *t, const char *name,
					 struct type *field);

/* Like append_composite_type_field, except that ALIGNMENT (if non-zero)
   specifies the minimum alignment of the new field.  */

extern void append_composite_type_field_aligned (struct type *t,
						 const char *name,
						 struct type *field,
						 int alignment);

/* Like append_composite_type_field, except that this function does not
   set the field's position or adjust the length of T; the caller is
   responsible for doing so.

   Return the newly added field.  */

struct field *append_composite_type_field_raw (struct type *t, const char *name,
					       struct type *field);

Simon

  reply	other threads:[~2026-08-17 18:50 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-14 10:49 Matthieu Longo
2026-08-17 18:50 ` Simon Marchi [this message]
2026-08-24 13:59   ` Matthieu Longo

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=381a0161-9b9b-45ba-89ae-16e6a085b75d@simark.ca \
    --to=simark@simark.ca \
    --cc=gdb-patches@sourceware.org \
    --cc=matthieu.longo@arm.com \
    /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