X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Ftypeprint.c;h=37409d9a21033a67e8b19a6b70498cdfefd5a6ba;hb=f16a9f57b50af64ccb9652d20cc934fc5e80cd20;hp=6a052005d4bf484db79f209e5b1a74ed6755d8a9;hpb=89549d7f4d27b63c4aaab4456e21dab1ee96a40a;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/typeprint.c b/gdb/typeprint.c index 6a052005d4..37409d9a21 100644 --- a/gdb/typeprint.c +++ b/gdb/typeprint.c @@ -1,6 +1,6 @@ /* Language independent support for printing types for GDB, the GNU debugger. - Copyright (C) 1986-2019 Free Software Foundation, Inc. + Copyright (C) 1986-2020 Free Software Foundation, Inc. This file is part of GDB. @@ -36,6 +36,7 @@ #include "cli/cli-utils.h" #include "extension.h" #include "completer.h" +#include "cli/cli-style.h" const struct type_print_options type_print_raw_options = { @@ -109,14 +110,14 @@ void print_offset_data::update (struct type *type, unsigned int field_idx, struct ui_file *stream) { - if (field_is_static (&TYPE_FIELD (type, field_idx))) + if (field_is_static (&type->field (field_idx))) { print_spaces_filtered (indentation, stream); return; } - struct type *ftype = check_typedef (TYPE_FIELD_TYPE (type, field_idx)); - if (TYPE_CODE (type) == TYPE_CODE_UNION) + struct type *ftype = check_typedef (type->field (field_idx).type ()); + if (type->code () == TYPE_CODE_UNION) { /* Since union fields don't have the concept of offsets, we just print their sizes. */ @@ -238,7 +239,7 @@ typedef_hash_table::add_template_parameters (struct type *t) continue; tf = XOBNEW (&m_storage, struct decl_field); - tf->name = SYMBOL_LINKAGE_NAME (TYPE_TEMPLATE_ARGUMENT (t, i)); + tf->name = TYPE_TEMPLATE_ARGUMENT (t, i)->linkage_name (); tf->type = SYMBOL_TYPE (TYPE_TEMPLATE_ARGUMENT (t, i)); slot = htab_find_slot (m_table, tf, INSERT); @@ -325,9 +326,8 @@ typedef_hash_table::find_global_typedef (const struct type_print_options *flags, if (applied != NULL) { - new_tf->name - = (const char *) obstack_copy0 (&flags->global_typedefs->m_storage, - applied, strlen (applied)); + new_tf->name = obstack_strdup (&flags->global_typedefs->m_storage, + applied); xfree (applied); } @@ -416,7 +416,8 @@ type_to_string (struct type *type) void type_print_unknown_return_type (struct ui_file *stream) { - fprintf_filtered (stream, _("")); + fprintf_styled (stream, metadata_style.style (), + _("")); } /* See typeprint.h. */ @@ -514,7 +515,7 @@ whatis_exp (const char *exp, int show) Use check_typedef to resolve stubs, but ignore its result because we do not want to dig past all typedefs. */ check_typedef (type); - if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF) + if (type->code () == TYPE_CODE_TYPEDEF) type = TYPE_TARGET_TYPE (type); /* If the expression is actually a type, then there's no @@ -539,16 +540,16 @@ whatis_exp (const char *exp, int show) get_user_print_options (&opts); if (val != NULL && opts.objectprint) { - if (((TYPE_CODE (type) == TYPE_CODE_PTR) || TYPE_IS_REFERENCE (type)) - && (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_STRUCT)) + if (((type->code () == TYPE_CODE_PTR) || TYPE_IS_REFERENCE (type)) + && (TYPE_TARGET_TYPE (type)->code () == TYPE_CODE_STRUCT)) real_type = value_rtti_indirect_type (val, &full, &top, &using_enc); - else if (TYPE_CODE (type) == TYPE_CODE_STRUCT) + else if (type->code () == TYPE_CODE_STRUCT) real_type = value_rtti_type (val, &full, &top, &using_enc); } if (flags.print_offsets - && (TYPE_CODE (type) == TYPE_CODE_STRUCT - || TYPE_CODE (type) == TYPE_CODE_UNION)) + && (type->code () == TYPE_CODE_STRUCT + || type->code () == TYPE_CODE_UNION)) fprintf_filtered (gdb_stdout, "/* offset | size */ "); printf_filtered ("type = "); @@ -614,11 +615,11 @@ print_type_scalar (struct type *type, LONGEST val, struct ui_file *stream) type = check_typedef (type); - switch (TYPE_CODE (type)) + switch (type->code ()) { case TYPE_CODE_ENUM: - len = TYPE_NFIELDS (type); + len = type->num_fields (); for (i = 0; i < len; i++) { if (TYPE_FIELD_ENUMVAL (type, i) == val) @@ -714,21 +715,7 @@ struct cmd_list_element *setprinttypelist; struct cmd_list_element *showprinttypelist; -static void -set_print_type (const char *arg, int from_tty) -{ - printf_unfiltered ( - "\"set print type\" must be followed by the name of a subcommand.\n"); - help_list (setprintlist, "set print type ", all_commands, gdb_stdout); -} - -static void -show_print_type (const char *args, int from_tty) -{ - cmd_show_list (showprinttypelist, from_tty, ""); -} - -static int print_methods = 1; +static bool print_methods = true; static void set_print_type_methods (const char *args, @@ -745,7 +732,7 @@ show_print_type_methods (struct ui_file *file, int from_tty, value); } -static int print_typedefs = 1; +static bool print_typedefs = true; static void set_print_type_typedefs (const char *args, @@ -797,8 +784,9 @@ show_print_type_nested_types (struct ui_file *file, int from_tty, } } +void _initialize_typeprint (); void -_initialize_typeprint (void) +_initialize_typeprint () { struct cmd_list_element *c; @@ -825,12 +813,14 @@ Available FLAGS are:\n\ Only one level of typedefs is unrolled. See also \"ptype\".")); set_cmd_completer (c, expression_completer); - add_prefix_cmd ("type", no_class, show_print_type, - _("Generic command for showing type-printing settings."), - &showprinttypelist, "show print type ", 0, &showprintlist); - add_prefix_cmd ("type", no_class, set_print_type, - _("Generic command for setting how types print."), - &setprinttypelist, "set print type ", 0, &setprintlist); + add_show_prefix_cmd ("type", no_class, + _("Generic command for showing type-printing settings."), + &showprinttypelist, "show print type ", 0, + &showprintlist); + add_basic_prefix_cmd ("type", no_class, + _("Generic command for setting how types print."), + &setprinttypelist, "set print type ", 0, + &setprintlist); add_setshow_boolean_cmd ("methods", no_class, &print_methods, _("\ @@ -863,7 +853,7 @@ Show the number of recursive nested type definitions to print."), NULL, void val_print_not_allocated (struct ui_file *stream) { - fprintf_filtered (stream, _("")); + fprintf_styled (stream, metadata_style.style (), _("")); } /* Print status to stream STREAM. */ @@ -871,5 +861,5 @@ val_print_not_allocated (struct ui_file *stream) void val_print_not_associated (struct ui_file *stream) { - fprintf_filtered (stream, _("")); + fprintf_styled (stream, metadata_style.style (), _("")); }