[PATCH v1] gdbtypes: improve documentation of composite type helpers

Matthieu Longo <[email protected]>
Newsgroups gmane.comp.gdb.patches
Message-ID <[email protected]>
Document how arch_composite_type handles a null NAME, and clarify the
semantics of a null or empty field name for the append_composite_type*
helpers.

Suggested-By: Simon Marchi <[email protected]>
---
 gdb/gdbtypes.c | 21 ++++++++++++++-------
 gdb/gdbtypes.h | 13 +++++++++----
 2 files changed, 23 insertions(+), 11 deletions(-)

diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
index 4b6c01910f4..7d8b7503da2 100644
--- a/gdb/gdbtypes.c
+++ b/gdb/gdbtypes.c
@@ -5413,7 +5413,8 @@ append_flags_type_flag (struct type *type, int bitpos, const char *name)
 }
 
 /* Allocate a TYPE_CODE_STRUCT or TYPE_CODE_UNION type structure (as
-   specified by CODE) associated with GDBARCH.  NAME is the type name.  */
+   specified by CODE) associated with GDBARCH.  NAME is the type name.
+   If NAME is nullptr, the type is anonymous.  */
 
 struct type *
 arch_composite_type (struct gdbarch *gdbarch, const char *name,
@@ -5428,9 +5429,11 @@ 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.  */
+/* Add a new field named NAME with type FIELD to composite type T.
+   This function does not set the field's position or adjust the length of T;
+   the caller is responsible for doing so.  If NAME is nullptr or an empty
+   string, the field represents an anonymous struct or union whose fields
+   are visible directly in the parent scope.  Return the newly added field.  */
 
 struct field *
 append_composite_type_field_raw (struct type *t, const char *name,
@@ -5448,8 +5451,10 @@ 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.  */
+/* Add a new field named NAME with type FIELD to composite type T.
+   ALIGNMENT (if non-zero) specifies the minimum field alignment.
+   If NAME is nullptr or an empty string, the field represents an anonymous
+   struct or union whose fields are visible directly in the parent scope.   */
 
 void
 append_composite_type_field_aligned (struct type *t, const char *name,
@@ -5489,7 +5494,9 @@ append_composite_type_field_aligned (struct type *t, const char *name,
     }
 }
 
-/* Add new field with name NAME and type FIELD to composite type T.  */
+/* Add a new field named NAME with type FIELD to composite type T.
+   If NAME is nullptr or an empty string, the field represents an anonymous
+   struct or union whose fields are visible directly in the parent scope.  */
 
 void
 append_composite_type_field (struct type *t, const char *name,
diff --git a/gdb/gdbtypes.h b/gdb/gdbtypes.h
index dd2d24fa8e2..93bd938d0aa 100644
--- a/gdb/gdbtypes.h
+++ b/gdb/gdbtypes.h
@@ -2431,14 +2431,19 @@ 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.  */
 
+/* Note: if NAME is nullptr, the type is anonymous.  */
 extern struct type *arch_composite_type (struct gdbarch *gdbarch,
 					 const char *name, enum type_code code);
+
+/* Note: for all 3 functions below, if NAME is nullptr or an empty string,
+   the field represents an anonymous struct or union whose fields are visible
+   directly in the parent scope.  */
 extern void append_composite_type_field (struct type *t, const char *name,
 					 struct type *field);
 extern void append_composite_type_field_aligned (struct type *t,
-- 
2.55.0
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.