aboutsummaryrefslogtreecommitdiff
path: root/gdb/top.h
blob: dc3f2aaf614136d66b9e4d37024baba4c122388a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
/* Top level stuff for GDB, the GNU debugger.

   Copyright (C) 1986-2024 Free Software Foundation, Inc.

   This file is part of GDB.

   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 TOP_H
#define TOP_H

#include "gdbsupport/event-loop.h"
#include "gdbsupport/next-iterator.h"
#include "value.h"

/* From top.c.  */
extern bool confirm;
extern int inhibit_gdbinit;
extern auto_boolean interactive_mode;

/* Print the GDB version banner to STREAM.  If INTERACTIVE is false,
   then information referring to commands (e.g., "show configuration")
   is omitted; this mode is used for the --version command line
   option.  If INTERACTIVE is true, then interactive commands are
   mentioned.  */
extern void print_gdb_version (struct ui_file *stream, bool interactive);

extern void print_gdb_configuration (struct ui_file *);

extern void read_command_file (FILE *);
extern void init_history (void);
extern void command_loop (void);
extern int quit_confirm (void);
extern void quit_force (int *, int) ATTRIBUTE_NORETURN;
extern void quit_command (const char *, int);
extern void quit_cover (void);
extern void execute_command (const char *, int);

/* Run FN.  Capture its output into the returned string, do not display it
   to the screen.  The global BATCH_FLAG will temporarily be set to true.
   When TERM_OUT is true the output is collected with terminal behaviour
   (e.g. with styling).  When TERM_OUT is false raw output will be collected
   (e.g. no styling).  */

extern void execute_fn_to_string (std::string &res,
				  std::function<void(void)> fn, bool term_out);

/* As execute_fn_to_ui_file, but run execute_command for P and FROM_TTY.  */

extern void execute_command_to_ui_file (struct ui_file *file,
					const char *p, int from_tty);

/* As execute_fn_to_string, but run execute_command for P and FROM_TTY.  */

extern void execute_command_to_string (std::string &res, const char *p,
				       int from_tty, bool term_out);

/* Same as the above, but ignore resulting string.  */

extern void execute_command_to_string (const char *p,
				       int from_tty, bool term_out);

/* If the interpreter is in sync mode (we're running a user command's
   list, running command hooks or similars), and we just ran a
   synchronous command that started the target, wait for that command
   to end.  WAS_SYNC indicates whether sync_execution was set before
   the command was run.  */

extern void maybe_wait_sync_command_done (int was_sync);

/* Wait for a synchronous execution command to end.  */
extern void wait_sync_command_done (void);

extern void check_frame_language_change (void);

/* Prepare for execution of a command.
   Call this before every command, CLI or MI.
   Returns a cleanup to be run after the command is completed.  */
extern scoped_value_mark prepare_execute_command (void);

/* This function returns a pointer to the string that is used
   by gdb for its command prompt.  */
extern const std::string &get_prompt ();

/* This function returns a pointer to the string that is used
   by gdb for its command prompt.  */
extern void set_prompt (const char *s);

/* Return 1 if UI's current input handler is a secondary prompt, 0
   otherwise.  */

extern int gdb_in_secondary_prompt_p (struct ui *ui);

/* Perform _initialize initialization.  */
extern void gdb_init ();

/* For use by event-top.c.  */
/* Variables from top.c.  */
extern int source_line_number;
extern std::string source_file_name;
extern bool history_expansion_p;
extern bool server_command;
extern char *lim_at_start;

extern void gdb_add_history (const char *);

extern void show_commands (const char *args, int from_tty);

extern void set_verbose (const char *, int, struct cmd_list_element *);

extern const char *handle_line_of_input (std::string &cmd_line_buffer,
					 const char *rl, int repeat,
					 const char *annotation_suffix);

/* Call at startup to see if the user has requested that gdb start up
   quietly.  */

extern bool check_quiet_mode ();

/* Unbuffer STREAM.  This is a wrapper around setbuf(STREAM, nullptr)
   which applies some special rules for MS-Windows hosts.  */

extern void unbuffer_stream (FILE *stream);

#endif