]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/interps.h
Replace some $ARCH_{get,set}_pc with linux_{get,set}_pc_32bit
[thirdparty/binutils-gdb.git] / gdb / interps.h
CommitLineData
4a8f6654
AC
1/* Manages interpreters for GDB, the GNU debugger.
2
618f726f 3 Copyright (C) 2000-2016 Free Software Foundation, Inc.
4a8f6654
AC
4
5 Written by Jim Ingham <jingham@apple.com> of Apple Computer, Inc.
6
7 This file is part of GDB.
8
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
a9762ec7 11 the Free Software Foundation; either version 3 of the License, or
4a8f6654
AC
12 (at your option) any later version.
13
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
18
19 You should have received a copy of the GNU General Public License
1777feb0 20 along with this program. If not, see <http://www.gnu.org/licenses/>. */
4a8f6654
AC
21
22#ifndef INTERPS_H
23#define INTERPS_H
24
25struct ui_out;
26struct interp;
27
28extern int interp_resume (struct interp *interp);
29extern int interp_suspend (struct interp *interp);
71fff37b
AC
30extern struct gdb_exception interp_exec (struct interp *interp,
31 const char *command);
4a8f6654
AC
32extern int interp_quiet_p (struct interp *interp);
33
4801a9a3 34typedef void *(interp_init_ftype) (struct interp *self, int top_level);
4a8f6654
AC
35typedef int (interp_resume_ftype) (void *data);
36typedef int (interp_suspend_ftype) (void *data);
71fff37b
AC
37typedef struct gdb_exception (interp_exec_ftype) (void *data,
38 const char *command);
1cdac4ef 39typedef void (interp_command_loop_ftype) (void *data);
4801a9a3 40typedef struct ui_out *(interp_ui_out_ftype) (struct interp *self);
4a8f6654 41
37ce89eb
SS
42typedef int (interp_set_logging_ftype) (struct interp *self, int start_log,
43 struct ui_file *out,
44 struct ui_file *logfile);
45
4a8f6654
AC
46struct interp_procs
47{
48 interp_init_ftype *init_proc;
49 interp_resume_ftype *resume_proc;
50 interp_suspend_ftype *suspend_proc;
51 interp_exec_ftype *exec_proc;
4801a9a3
PA
52
53 /* Returns the ui_out currently used to collect results for this
54 interpreter. It can be a formatter for stdout, as is the case
55 for the console & mi outputs, or it might be a result
56 formatter. */
57 interp_ui_out_ftype *ui_out_proc;
58
37ce89eb
SS
59 /* Provides a hook for interpreters to do any additional
60 setup/cleanup that they might need when logging is enabled or
61 disabled. */
62 interp_set_logging_ftype *set_logging_proc;
63
4a8f6654
AC
64 interp_command_loop_ftype *command_loop_proc;
65};
66
4801a9a3 67extern struct interp *interp_new (const char *name, const struct interp_procs *procs);
4a8f6654 68extern void interp_add (struct interp *interp);
683f2885 69extern int interp_set (struct interp *interp, int top_level);
4a8f6654
AC
70extern struct interp *interp_lookup (const char *name);
71extern struct ui_out *interp_ui_out (struct interp *interp);
4801a9a3
PA
72extern void *interp_data (struct interp *interp);
73extern const char *interp_name (struct interp *interp);
c41535fd 74extern struct interp *interp_set_temp (const char *name);
4a8f6654
AC
75
76extern int current_interp_named_p (const char *name);
92bcb5f9 77
4a8f6654 78extern void current_interp_command_loop (void);
37ce89eb
SS
79
80/* Call this function to give the current interpreter an opportunity
81 to do any special handling of streams when logging is enabled or
82 disabled. START_LOG is 1 when logging is starting, 0 when it ends,
83 and OUT is the stream for the log file; it will be NULL when
84 logging is ending. LOGFILE is non-NULL if the output streams
85 are to be tees, with the log file as one of the outputs. */
86
87extern int current_interp_set_logging (int start_log, struct ui_file *out,
88 struct ui_file *logfile);
89
683f2885
VP
90/* Returns opaque data associated with the top-level interpreter. */
91extern void *top_level_interpreter_data (void);
79a68887 92extern struct interp *top_level_interpreter (void);
4a8f6654 93
17b2616c
PA
94extern struct interp *command_interp (void);
95
b4a14fd0
PA
96/* True if the current interpreter is in async mode, false if in sync
97 mode. If in sync mode, running a synchronous execution command
98 (with execute_command, e.g, "next") will not return until the
99 command is finished. If in async mode, then running a synchronous
100 command returns right after resuming the target. Waiting for the
101 command's completion is later done on the top event loop (using
102 continuations). */
103extern int interpreter_async;
104
b9362cc7 105extern void clear_interpreter_hooks (void);
4a8f6654
AC
106
107/* well-known interpreters */
108#define INTERP_CONSOLE "console"
109#define INTERP_MI1 "mi1"
2fcf52f0
AC
110#define INTERP_MI2 "mi2"
111#define INTERP_MI3 "mi3"
4a8f6654 112#define INTERP_MI "mi"
226361c4 113#define INTERP_TUI "tui"
cc4349ed 114#define INTERP_INSIGHT "insight"
4a8f6654
AC
115
116#endif