[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