This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH 2/3] gdb: Improve output from "info types" commad
On 7/12/19 12:37 PM, Andrew Burgess wrote:
> This commit makes two changes to the "info types" command:
>
> First, only use typedef_print for printing typedefs, and use
> type_print for printing non-typedef scalar (non-struct) types. The
> result of this is the output for builtin types goes from this:
>
> typedef double;
> typedef float;
> typedef int;
>
> to this:
>
> double;
> float;
> int;
>
> which seems to make more sense.
>
> Next GDB no longer matches msymbols as possible type names. When
> looking for function symbols it makes sense to report matching
> msymbols from the text sections, and for variables msymbols from the
> data/bss sections, but when reporting types GDB would match msymbols
> of type absolute. But I don't see why these are likely to indicate
> type names. As such I've updated the msymbol matching lists in
> symtab.c:search_symbols so that when searching in the TYPES_DOMAIN, we
> never match any msymbols.
>
That sounds fine to me.
> * symtab.c (search_symbols): Adjust msymbol matching type arrays
> so that GDB doesn't match any msymbols when searching in the
> TYPES_DOMAIN.
> (print_symbol_info): Print using typedef_print or type_print based
> on the type of the symbol. Add updated FIXME comment mobed from...
> (_initialize_symtab): ... move and update FIXME comment to above.
>
Typo: "mobed".
> gdb/testsuite/ChangeLog:
>
> * gdb.base/info-types.c: New file.
> * gdb.base/info-types.exp: New file.
> * gdb.cp/info-types.cc: New file.
> * gdb.cp/info-types.exp: New file.
I'm not immediately seeing what the C++ testcase is trying to
test. If you replace "class" with struct, and use "typedef struct AA"
instead of "typedef AA", isn't that code basically C code as well?
Also, might it be a good idea to check the info-types.c stuff in
C++ mode as well, to make sure we normalize C and C++ modes?
I.e., make gdb.base/info-types.exp compile once as a C program, and
once as a C++ program?
Thanks,
Pedro Alves