Re: RFA: "maint print type" should print all the flag bits

Jim Blandy
2001-12-10T03:08:11Z

Approved.

Fred Fish <fnf@ns1.ninemoons.com> writes:

>
> The "maint print type" command does not print all the flag
> bits. It also should to use the defined macros to test for
> the bits.
>
> -Fred
>
> 2001-12-09 Fred Fish <fnf@redhat.com>
>
> * gdbtypes.c (TYPE_FLAG_UNSIGNED, TYPE_FLAG_STUB): Use
> TYPE_UNSIGNED and TYPE_NOSIGN to determine when to print these
> rather than testing the bits directly.
> (TYPE_FLAG_NOSIGN, TYPE_FLAG_TARGET_STUB, TYPE_FLAG_STATIC,
> TYPE_FLAG_CONST, TYPE_FLAG_VOLATILE, TYPE_FLAG_PROTOTYPED,
> TYPE_FLAG_INCOMPLETE, TYPE_FLAG_CODE_SPACE, TYPE_FLAG_DATA_SPACE,
> TYPE_FLAG_VARARGS): Test for and print these bits as well.
>
> Index: gdbtypes.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/gdbtypes.c,v
> retrieving revision 1.29
> diff -u -p -r1.29 gdbtypes.c
> --- gdbtypes.c 2001/12/07 22:11:51 1.29
> +++ gdbtypes.c 2001/12/09 19:08:25
> @@ -2846,14 +2844,54 @@ recursive_dump_type (struct type *type,
> gdb_print_host_address (TYPE_REFERENCE_TYPE (type), gdb_stdout);
> printf_filtered ("\n");
> printfi_filtered (spaces, "flags 0x%x", TYPE_FLAGS (type));
> - if (TYPE_FLAGS (type) & TYPE_FLAG_UNSIGNED)
> + if (TYPE_UNSIGNED (type))
> {
> puts_filtered (" TYPE_FLAG_UNSIGNED");
> }
> - if (TYPE_FLAGS (type) & TYPE_FLAG_STUB)
> + if (TYPE_NOSIGN (type))
> {
> + puts_filtered (" TYPE_FLAG_NOSIGN");
> + }
> + if (TYPE_STUB (type))
> + {
> puts_filtered (" TYPE_FLAG_STUB");
> }
> + if (TYPE_TARGET_STUB (type))
> + {
> + puts_filtered (" TYPE_FLAG_TARGET_STUB");
> + }
> + if (TYPE_STATIC (type))
> + {
> + puts_filtered (" TYPE_FLAG_STATIC");
> + }
> + if (TYPE_CONST (type))
> + {
> + puts_filtered (" TYPE_FLAG_CONST");
> + }
> + if (TYPE_VOLATILE (type))
> + {
> + puts_filtered (" TYPE_FLAG_VOLATILE");
> + }
> + if (TYPE_PROTOTYPED (type))
> + {
> + puts_filtered (" TYPE_FLAG_PROTOTYPED");
> + }
> + if (TYPE_INCOMPLETE (type))
> + {
> + puts_filtered (" TYPE_FLAG_INCOMPLETE");
> + }
> + if (TYPE_CODE_SPACE (type))
> + {
> + puts_filtered (" TYPE_FLAG_CODE_SPACE");
> + }
> + if (TYPE_DATA_SPACE (type))
> + {
> + puts_filtered (" TYPE_FLAG_DATA_SPACE");
> + }
> + if (TYPE_VARARGS (type))
> + {
> + puts_filtered (" TYPE_FLAG_VARARGS");
> + }
> puts_filtered ("\n");
> printfi_filtered (spaces, "nfields %d ", TYPE_NFIELDS (type));
> gdb_print_host_address (TYPE_FIELDS (type), gdb_stdout);
>