[PATCH v3] 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 an empty field name for the append_composite_type* helpers. Suggested-By: Simon Marchi <[email protected]> --- gdb/gdbtypes.c | 12 ++++-------- gdb/gdbtypes.h | 33 ++++++++++++++++++++++++++++----- 2 files changed, 32 insertions(+), 13 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..b8b6d3751ee 100644 --- a/gdb/gdbtypes.h +++ b/gdb/gdbtypes.h @@ -2431,20 +2431,43 @@ 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 - field packed against the previous. */ +/* 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); -- 2.55.0