diff options
author | Tom Tromey <tromey@adacore.com> | 2023-09-21 10:43:58 -0600 |
---|---|---|
committer | Tom Tromey <tromey@adacore.com> | 2023-11-21 14:52:04 -0700 |
commit | e626733c050b011c9c9ea950219e04a104c5e96c (patch) | |
tree | 00740bdab006975e5ec9daa60e4df719cccaecf2 /gdb/gdbtypes.c | |
parent | 97b29a61f7f001550fe985bf2deea1550e3c20dd (diff) | |
download | gdb-e626733c050b011c9c9ea950219e04a104c5e96c.zip gdb-e626733c050b011c9c9ea950219e04a104c5e96c.tar.gz gdb-e626733c050b011c9c9ea950219e04a104c5e96c.tar.bz2 |
Use .def file to stringify type codes
This changes recursive_dump_type to reuse the type-codes.def file when
stringifying type codes.
This version of the patch changes the "unknown" case to an assert.
Acked-By: Simon Marchi <simon.marchi@efficios.com>
Reviewed-by: Keith Seitz <keiths@redhat.com>
Diffstat (limited to 'gdb/gdbtypes.c')
-rw-r--r-- | gdb/gdbtypes.c | 99 |
1 files changed, 18 insertions, 81 deletions
diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c index 04598c6..7241143 100644 --- a/gdb/gdbtypes.c +++ b/gdb/gdbtypes.c @@ -5099,6 +5099,23 @@ dump_dynamic_prop (dynamic_prop const& prop) } } +/* Return a string that represents a type code. */ +static const char * +type_code_name (type_code code) +{ + switch (code) + { +#define OP(X) case X: return # X; +#include "type-codes.def" +#undef OP + + case TYPE_CODE_UNDEF: + return "TYPE_CODE_UNDEF"; + } + + gdb_assert_not_reached ("unhandled type_code"); +} + void recursive_dump_type (struct type *type, int spaces) { @@ -5136,87 +5153,7 @@ recursive_dump_type (struct type *type, int spaces) type->name () ? type->name () : "<NULL>", host_address_to_string (type->name ())); gdb_printf ("%*scode 0x%x ", spaces, "", type->code ()); - switch (type->code ()) - { - case TYPE_CODE_UNDEF: - gdb_printf ("(TYPE_CODE_UNDEF)"); - break; - case TYPE_CODE_PTR: - gdb_printf ("(TYPE_CODE_PTR)"); - break; - case TYPE_CODE_ARRAY: - gdb_printf ("(TYPE_CODE_ARRAY)"); - break; - case TYPE_CODE_STRUCT: - gdb_printf ("(TYPE_CODE_STRUCT)"); - break; - case TYPE_CODE_UNION: - gdb_printf ("(TYPE_CODE_UNION)"); - break; - case TYPE_CODE_ENUM: - gdb_printf ("(TYPE_CODE_ENUM)"); - break; - case TYPE_CODE_FLAGS: - gdb_printf ("(TYPE_CODE_FLAGS)"); - break; - case TYPE_CODE_FUNC: - gdb_printf ("(TYPE_CODE_FUNC)"); - break; - case TYPE_CODE_INT: - gdb_printf ("(TYPE_CODE_INT)"); - break; - case TYPE_CODE_FLT: - gdb_printf ("(TYPE_CODE_FLT)"); - break; - case TYPE_CODE_VOID: - gdb_printf ("(TYPE_CODE_VOID)"); - break; - case TYPE_CODE_SET: - gdb_printf ("(TYPE_CODE_SET)"); - break; - case TYPE_CODE_RANGE: - gdb_printf ("(TYPE_CODE_RANGE)"); - break; - case TYPE_CODE_STRING: - gdb_printf ("(TYPE_CODE_STRING)"); - break; - case TYPE_CODE_ERROR: - gdb_printf ("(TYPE_CODE_ERROR)"); - break; - case TYPE_CODE_MEMBERPTR: - gdb_printf ("(TYPE_CODE_MEMBERPTR)"); - break; - case TYPE_CODE_METHODPTR: - gdb_printf ("(TYPE_CODE_METHODPTR)"); - break; - case TYPE_CODE_METHOD: - gdb_printf ("(TYPE_CODE_METHOD)"); - break; - case TYPE_CODE_REF: - gdb_printf ("(TYPE_CODE_REF)"); - break; - case TYPE_CODE_CHAR: - gdb_printf ("(TYPE_CODE_CHAR)"); - break; - case TYPE_CODE_BOOL: - gdb_printf ("(TYPE_CODE_BOOL)"); - break; - case TYPE_CODE_COMPLEX: - gdb_printf ("(TYPE_CODE_COMPLEX)"); - break; - case TYPE_CODE_TYPEDEF: - gdb_printf ("(TYPE_CODE_TYPEDEF)"); - break; - case TYPE_CODE_NAMESPACE: - gdb_printf ("(TYPE_CODE_NAMESPACE)"); - break; - case TYPE_CODE_FIXED_POINT: - gdb_printf ("(TYPE_CODE_FIXED_POINT)"); - break; - default: - gdb_printf ("(UNKNOWN TYPE CODE)"); - break; - } + gdb_printf ("(%s)", type_code_name (type->code ())); gdb_puts ("\n"); gdb_printf ("%*slength %s\n", spaces, "", pulongest (type->length ())); |