mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-07-18 03:27:52 +08:00

I touched symtab.h and was surprised to see how many files were rebuilt. I looked into it a bit, and found that defs.h includes gdbarch.h, which in turn includes many things. gdbarch.h is only needed by a minority ofthe files in gdb, so this patch removes the include from defs.h and updates the fallout. I did "wc -l" on the files in build/gdb/.deps; this patch reduces the line count from 139935 to 137030; so there are definitely future build-time savings here. Note that while I configured with --enable-targets=all, it's possible that some *-nat.c file needs an update. I could not test all of these. The buildbot caught a few problems along these lines. gdb/ChangeLog 2019-07-10 Tom Tromey <tom@tromey.com> * defs.h: Don't include gdbarch.h. * aarch64-ravenscar-thread.c, aarch64-tdep.c, alpha-bsd-tdep.h, alpha-linux-tdep.c, alpha-mdebug-tdep.c, arch-utils.h, arm-tdep.h, ax-general.c, btrace.c, buildsym-legacy.c, buildsym.h, c-lang.c, cli/cli-decode.h, cli/cli-dump.c, cli/cli-script.h, cli/cli-style.h, coff-pe-read.h, compile/compile-c-support.c, compile/compile-cplus.h, compile/compile-loc2c.c, corefile.c, cp-valprint.c, cris-linux-tdep.c, ctf.c, d-lang.c, d-namespace.c, dcache.c, dicos-tdep.c, dictionary.c, disasm-selftests.c, dummy-frame.c, dummy-frame.h, dwarf2-frame-tailcall.c, dwarf2expr.c, expression.h, f-lang.c, frame-base.c, frame-unwind.c, frv-linux-tdep.c, gdbarch-selftests.c, gdbtypes.h, go-lang.c, hppa-nbsd-tdep.c, hppa-obsd-tdep.c, i386-dicos-tdep.c, i386-tdep.h, ia64-vms-tdep.c, interps.h, language.c, linux-record.c, location.h, m2-lang.c, m32r-linux-tdep.c, mem-break.c, memattr.c, mn10300-linux-tdep.c, nios2-linux-tdep.c, objfiles.h, opencl-lang.c, or1k-linux-tdep.c, p-lang.c, parser-defs.h, ppc-tdep.h, probe.h, python/py-record-btrace.c, record-btrace.c, record.h, regcache-dump.c, regcache.h, riscv-fbsd-tdep.c, riscv-linux-tdep.c, rust-exp.y, sh-linux-tdep.c, sh-nbsd-tdep.c, source-cache.c, sparc-nbsd-tdep.c, sparc-obsd-tdep.c, sparc-ravenscar-thread.c, sparc64-fbsd-tdep.c, std-regs.c, target-descriptions.h, target-float.c, tic6x-linux-tdep.c, tilegx-linux-tdep.c, top.c, tracefile.c, trad-frame.c, type-stack.h, ui-style.c, utils.c, utils.h, valarith.c, valprint.c, varobj.c, x86-tdep.c, xml-support.h, xtensa-linux-tdep.c, cli/cli-cmds.h: Update. * s390-linux-nat.c, procfs.c, inf-ptrace.c: Likewise.
279 lines
9.8 KiB
C
279 lines
9.8 KiB
C
/* Header file for GDB command decoding library.
|
|
|
|
Copyright (C) 2000-2019 Free Software Foundation, Inc.
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
|
|
|
#ifndef CLI_CLI_DECODE_H
|
|
#define CLI_CLI_DECODE_H
|
|
|
|
/* This file defines the private interfaces for any code implementing
|
|
command internals. */
|
|
|
|
/* Include the public interfaces. */
|
|
#include "command.h"
|
|
#include "gdb_regex.h"
|
|
#include "cli-script.h"
|
|
#include "completer.h"
|
|
|
|
#if 0
|
|
/* FIXME: cagney/2002-03-17: Once cmd_type() has been removed, ``enum
|
|
cmd_types'' can be moved from "command.h" to "cli-decode.h". */
|
|
/* Not a set/show command. Note that some commands which begin with
|
|
"set" or "show" might be in this category, if their syntax does
|
|
not fall into one of the following categories. */
|
|
typedef enum cmd_types
|
|
{
|
|
not_set_cmd,
|
|
set_cmd,
|
|
show_cmd
|
|
}
|
|
cmd_types;
|
|
#endif
|
|
|
|
/* This structure records one command'd definition. */
|
|
|
|
|
|
struct cmd_list_element
|
|
{
|
|
cmd_list_element (const char *name_, enum command_class theclass_,
|
|
const char *doc_)
|
|
: name (name_),
|
|
theclass (theclass_),
|
|
cmd_deprecated (0),
|
|
deprecated_warn_user (0),
|
|
malloced_replacement (0),
|
|
doc_allocated (0),
|
|
hook_in (0),
|
|
allow_unknown (0),
|
|
abbrev_flag (0),
|
|
type (not_set_cmd),
|
|
var_type (var_boolean),
|
|
doc (doc_)
|
|
{
|
|
memset (&function, 0, sizeof (function));
|
|
}
|
|
|
|
~cmd_list_element ()
|
|
{
|
|
if (doc && doc_allocated)
|
|
xfree ((char *) doc);
|
|
}
|
|
|
|
DISABLE_COPY_AND_ASSIGN (cmd_list_element);
|
|
|
|
|
|
/* Points to next command in this list. */
|
|
struct cmd_list_element *next = nullptr;
|
|
|
|
/* Name of this command. */
|
|
const char *name;
|
|
|
|
/* Command class; class values are chosen by application program. */
|
|
enum command_class theclass;
|
|
|
|
/* When 1 indicated that this command is deprecated. It may be
|
|
removed from gdb's command set in the future. */
|
|
|
|
unsigned int cmd_deprecated : 1;
|
|
|
|
/* The user needs to be warned that this is a deprecated command.
|
|
The user should only be warned the first time a command is
|
|
used. */
|
|
|
|
unsigned int deprecated_warn_user : 1;
|
|
|
|
/* When functions are deprecated at compile time (this is the way
|
|
it should, in general, be done) the memory containing the
|
|
replacement string is statically allocated. In some cases it
|
|
makes sense to deprecate commands at runtime (the testsuite is
|
|
one example). In this case the memory for replacement is
|
|
malloc'ed. When a command is undeprecated or re-deprecated at
|
|
runtime we don't want to risk calling free on statically
|
|
allocated memory, so we check this flag. */
|
|
|
|
unsigned int malloced_replacement : 1;
|
|
|
|
/* Set if the doc field should be xfree'd. */
|
|
|
|
unsigned int doc_allocated : 1;
|
|
|
|
/* Flag that specifies if this command is already running its hook. */
|
|
/* Prevents the possibility of hook recursion. */
|
|
unsigned int hook_in : 1;
|
|
|
|
/* For prefix commands only:
|
|
nonzero means do not get an error if subcommand is not
|
|
recognized; call the prefix's own function in that case. */
|
|
unsigned int allow_unknown : 1;
|
|
|
|
/* Nonzero says this is an abbreviation, and should not
|
|
be mentioned in lists of commands.
|
|
This allows "br<tab>" to complete to "break", which it
|
|
otherwise wouldn't. */
|
|
unsigned int abbrev_flag : 1;
|
|
|
|
/* Type of "set" or "show" command (or SET_NOT_SET if not "set"
|
|
or "show"). */
|
|
ENUM_BITFIELD (cmd_types) type : 2;
|
|
|
|
/* What kind of variable is *VAR? */
|
|
ENUM_BITFIELD (var_types) var_type : 4;
|
|
|
|
/* Function definition of this command. NULL for command class
|
|
names and for help topics that are not really commands. NOTE:
|
|
cagney/2002-02-02: This function signature is evolving. For
|
|
the moment suggest sticking with either set_cmd_cfunc() or
|
|
set_cmd_sfunc(). */
|
|
void (*func) (struct cmd_list_element *c, const char *args, int from_tty)
|
|
= nullptr;
|
|
/* The command's real callback. At present func() bounces through
|
|
to one of the below. */
|
|
union
|
|
{
|
|
/* If type is not_set_cmd, call it like this: */
|
|
cmd_const_cfunc_ftype *const_cfunc;
|
|
/* If type is set_cmd or show_cmd, first set the variables,
|
|
and then call this: */
|
|
cmd_const_sfunc_ftype *sfunc;
|
|
}
|
|
function;
|
|
|
|
/* Local state (context) for this command. This can be anything. */
|
|
void *context = nullptr;
|
|
|
|
/* Documentation of this command (or help topic).
|
|
First line is brief documentation; remaining lines form, with it,
|
|
the full documentation. First line should end with a period.
|
|
Entire string should also end with a period, not a newline. */
|
|
const char *doc;
|
|
|
|
/* For set/show commands. A method for printing the output to the
|
|
specified stream. */
|
|
show_value_ftype *show_value_func = nullptr;
|
|
|
|
/* If this command is deprecated, this is the replacement name. */
|
|
const char *replacement = nullptr;
|
|
|
|
/* If this command represents a show command, then this function
|
|
is called before the variable's value is examined. */
|
|
void (*pre_show_hook) (struct cmd_list_element *c) = nullptr;
|
|
|
|
/* Hook for another command to be executed before this command. */
|
|
struct cmd_list_element *hook_pre = nullptr;
|
|
|
|
/* Hook for another command to be executed after this command. */
|
|
struct cmd_list_element *hook_post = nullptr;
|
|
|
|
/* Nonzero identifies a prefix command. For them, the address
|
|
of the variable containing the list of subcommands. */
|
|
struct cmd_list_element **prefixlist = nullptr;
|
|
|
|
/* For prefix commands only:
|
|
String containing prefix commands to get here: this one
|
|
plus any others needed to get to it. Should end in a space.
|
|
It is used before the word "command" in describing the
|
|
commands reached through this prefix. */
|
|
const char *prefixname = nullptr;
|
|
|
|
/* The prefix command of this command. */
|
|
struct cmd_list_element *prefix = nullptr;
|
|
|
|
/* Completion routine for this command. */
|
|
completer_ftype *completer = symbol_completer;
|
|
|
|
/* Handle the word break characters for this completer. Usually
|
|
this function need not be defined, but for some types of
|
|
completers (e.g., Python completers declared as methods inside
|
|
a class) the word break chars may need to be redefined
|
|
depending on the completer type (e.g., for filename
|
|
completers). */
|
|
completer_handle_brkchars_ftype *completer_handle_brkchars = nullptr;
|
|
|
|
/* Destruction routine for this command. If non-NULL, this is
|
|
called when this command instance is destroyed. This may be
|
|
used to finalize the CONTEXT field, if needed. */
|
|
void (*destroyer) (struct cmd_list_element *self, void *context) = nullptr;
|
|
|
|
/* Pointer to variable affected by "set" and "show". Doesn't
|
|
matter if type is not_set. */
|
|
void *var = nullptr;
|
|
|
|
/* Pointer to NULL terminated list of enumerated values (like
|
|
argv). */
|
|
const char *const *enums = nullptr;
|
|
|
|
/* Pointer to command strings of user-defined commands */
|
|
counted_command_line user_commands;
|
|
|
|
/* Pointer to command that is hooked by this one, (by hook_pre)
|
|
so the hook can be removed when this one is deleted. */
|
|
struct cmd_list_element *hookee_pre = nullptr;
|
|
|
|
/* Pointer to command that is hooked by this one, (by hook_post)
|
|
so the hook can be removed when this one is deleted. */
|
|
struct cmd_list_element *hookee_post = nullptr;
|
|
|
|
/* Pointer to command that is aliased by this one, so the
|
|
aliased command can be located in case it has been hooked. */
|
|
struct cmd_list_element *cmd_pointer = nullptr;
|
|
|
|
/* Start of a linked list of all aliases of this command. */
|
|
struct cmd_list_element *aliases = nullptr;
|
|
|
|
/* Link pointer for aliases on an alias list. */
|
|
struct cmd_list_element *alias_chain = nullptr;
|
|
|
|
/* If non-null, the pointer to a field in 'struct
|
|
cli_suppress_notification', which will be set to true in cmd_func
|
|
when this command is being executed. It will be set back to false
|
|
when the command has been executed. */
|
|
int *suppress_notification = nullptr;
|
|
};
|
|
|
|
extern void help_cmd_list (struct cmd_list_element *, enum command_class,
|
|
const char *, int, struct ui_file *);
|
|
|
|
/* Functions that implement commands about CLI commands. */
|
|
|
|
extern void help_cmd (const char *, struct ui_file *);
|
|
|
|
extern void apropos_cmd (struct ui_file *, struct cmd_list_element *,
|
|
bool verbose, compiled_regex &, const char *);
|
|
|
|
/* Used to mark commands that don't do anything. If we just leave the
|
|
function field NULL, the command is interpreted as a help topic, or
|
|
as a class of commands. */
|
|
|
|
extern void not_just_help_class_command (const char *arg, int from_tty);
|
|
|
|
/* Exported to cli/cli-setshow.c */
|
|
|
|
extern void print_doc_line (struct ui_file *, const char *);
|
|
|
|
/* The enums of boolean commands. */
|
|
extern const char * const boolean_enums[];
|
|
|
|
/* The enums of auto-boolean commands. */
|
|
extern const char * const auto_boolean_enums[];
|
|
|
|
/* Verify whether a given cmd_list_element is a user-defined command.
|
|
Return 1 if it is user-defined. Return 0 otherwise. */
|
|
|
|
extern int cli_user_command_p (struct cmd_list_element *);
|
|
|
|
extern int find_command_name_length (const char *);
|
|
|
|
#endif /* CLI_CLI_DECODE_H */
|