X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Fvalprint.h;h=e242134d85643747e4bad20897931812e7ab5f93;hb=74375d182e992778ef8701278c02a742db6be77e;hp=0bd3f1966c493101929a6d6457546b850e7a26d0;hpb=000439d52897541ad00a84026ac471b4f8cb3c97;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/valprint.h b/gdb/valprint.h index 0bd3f1966c..e242134d85 100644 --- a/gdb/valprint.h +++ b/gdb/valprint.h @@ -1,6 +1,6 @@ /* Declarations for value printing routines 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. @@ -20,6 +20,8 @@ #ifndef VALPRINT_H #define VALPRINT_H +#include "cli/cli-option.h" + /* This is used to pass formatting options to various value-printing functions. */ struct value_print_options @@ -28,23 +30,23 @@ struct value_print_options enum val_prettyformat prettyformat; /* Controls pretty formatting of arrays. */ - int prettyformat_arrays; + bool prettyformat_arrays; /* Controls pretty formatting of structures. */ - int prettyformat_structs; + bool prettyformat_structs; /* Controls printing of virtual tables. */ - int vtblprint; + bool vtblprint; /* Controls printing of nested unions. */ - int unionprint; + bool unionprint; /* Controls printing of addresses. */ - int addressprint; + bool addressprint; /* Controls looking up an object's derived type using what we find in its vtables. */ - int objectprint; + bool objectprint; /* Maximum number of chars to print for a string pointer value or vector contents, or UINT_MAX for no limit. Note that "set print elements 0" @@ -64,42 +66,47 @@ struct value_print_options int format; /* Stop printing at null character? */ - int stop_print_at_null; + bool stop_print_at_null; /* True if we should print the index of each element when printing an array. */ - int print_array_indexes; + bool print_array_indexes; - /* If nonzero, then dereference references, otherwise just print + /* If true, then dereference references, otherwise just print them like pointers. */ - int deref_ref; + bool deref_ref; - /* If nonzero, print static fields. */ - int static_field_print; + /* If true, print static fields. */ + bool static_field_print; - /* If nonzero, print static fields for Pascal. FIXME: C++ has a + /* If true, print static fields for Pascal. FIXME: C++ has a flag, why not share with Pascal too? */ - int pascal_static_field_print; + bool pascal_static_field_print; - /* If non-zero don't do Python pretty-printing. */ - int raw; + /* If true, don't do Python pretty-printing. */ + bool raw; - /* If nonzero, print the value in "summary" form. - If raw and summary are both non-zero, don't print non-scalar values + /* If true, print the value in "summary" form. + If raw and summary are both true, don't print non-scalar values ("..." is printed instead). */ - int summary; + bool summary; - /* If nonzero, when printing a pointer, print the symbol to which it + /* If true, when printing a pointer, print the symbol to which it points, if any. */ - int symbol_print; + bool symbol_print; /* Maximum print depth when printing nested aggregates. */ int max_depth; /* Whether "finish" should print the value. */ - int finish_print; + bool finish_print; }; +/* Create an option_def_group for the value_print options, with OPTS + as context. */ +extern gdb::option::option_def_group make_value_print_options_def_group + (value_print_options *opts); + /* The global print options set by the user. In general this should not be directly accessed, except by set/show commands. Ordinary code should call get_user_print_options instead. */ @@ -233,19 +240,33 @@ struct format_data }; extern void print_command_parse_format (const char **expp, const char *cmdname, - struct format_data *fmtp); -extern void print_value (struct value *val, const struct format_data *fmtp); + value_print_options *opts); + +/* Print VAL to console according to OPTS, including recording it to + the history. */ +extern void print_value (value *val, const value_print_options &opts); + +/* Completer for the "print", "call", and "compile print" + commands. */ +extern void print_command_completer (struct cmd_list_element *ignore, + completion_tracker &tracker, + const char *text, const char *word); /* Given an address ADDR return all the elements needed to print the address in a symbolic form. NAME can be mangled or not depending on DO_DEMANGLE (and also on the asm_demangle global variable, - manipulated via ''set print asm-demangle''). Return 0 in case of - success, when all the info in the OUT paramters is valid. Return 1 - otherwise. */ + manipulated via ''set print asm-demangle''). When + PREFER_SYM_OVER_MINSYM is true, names (and offsets) from minimal + symbols won't be used except in instances where no symbol was + found; otherwise, a minsym might be used in some instances (mostly + involving function with non-contiguous address ranges). Return + 0 in case of success, when all the info in the OUT parameters is + valid. Return 1 otherwise. */ extern int build_address_symbolic (struct gdbarch *, CORE_ADDR addr, - int do_demangle, + bool do_demangle, + bool prefer_sym_over_minsym, std::string *name, int *offset, std::string *filename,