]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/remote.h
New Romanian translation for ld
[thirdparty/binutils-gdb.git] / gdb / remote.h
CommitLineData
c2c6d25f 1/* Remote target communications for serial-line targets in custom GDB protocol
213516ef 2 Copyright (C) 1999-2023 Free Software Foundation, Inc.
c2c6d25f
JM
3
4 This file is part of GDB.
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
a9762ec7 8 the Free Software Foundation; either version 3 of the License, or
c2c6d25f
JM
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
a9762ec7 17 along with this program. If not, see <http://www.gnu.org/licenses/>. */
c2c6d25f
JM
18
19#ifndef REMOTE_H
20#define REMOTE_H
21
722247f1
YQ
22#include "remote-notif.h"
23
29709017 24struct target_desc;
6b8edb51 25struct remote_target;
29709017 26
24b2de7b
AB
27class process_stratum_target;
28
02349803
SM
29/* True when printing "remote" debug statements is enabled. */
30
31extern bool remote_debug;
cda09ec9 32
2189c312
SM
33/* Print a "remote" debug statement. */
34
35#define remote_debug_printf(fmt, ...) \
36 debug_prefixed_printf_cond (remote_debug, "remote", fmt, ##__VA_ARGS__)
37
38/* Same as the above, but don't include the function name. */
39
40#define remote_debug_printf_nofunc(fmt, ...) \
41 debug_prefixed_printf_cond_nofunc (remote_debug, "remote", \
42 fmt, ##__VA_ARGS__)
43
44/* Print "remote" enter/exit debug statements. */
45
46#define REMOTE_SCOPED_DEBUG_ENTER_EXIT \
47 scoped_debug_enter_exit (remote_debug, "remote")
48
c2c6d25f 49/* Read a packet from the remote machine, with error checking, and
6d820c5c
DJ
50 store it in *BUF. Resize *BUF using xrealloc if necessary to hold
51 the result, and update *SIZEOF_BUF. If FOREVER, wait forever
52 rather than timing out; this is used (in synchronous mode) to wait
53 for a target that is is executing user code to stop. */
c2c6d25f 54
6b8edb51
PA
55extern void getpkt (remote_target *remote,
56 char **buf, long *sizeof_buf, int forever);
c2c6d25f
JM
57
58/* Send a packet to the remote machine, with error checking. The data
59 of the packet is in BUF. The string in BUF can be at most PBUFSIZ
60 - 5 to account for the $, # and checksum, and for a possible /0 if
61 we are debugging (remote_debug) and want to print the sent packet
0df8b418 62 as a string. */
c2c6d25f 63
6b8edb51 64extern int putpkt (remote_target *remote, const char *buf);
c2c6d25f 65
29709017
DJ
66void register_remote_g_packet_guess (struct gdbarch *gdbarch, int bytes,
67 const struct target_desc *tdesc);
c8d5aac9 68void register_remote_support_xml (const char *);
29709017 69
a6b151f1
DJ
70void remote_file_put (const char *local_file, const char *remote_file,
71 int from_tty);
72void remote_file_get (const char *remote_file, const char *local_file,
73 int from_tty);
74void remote_file_delete (const char *remote_file, int from_tty);
75
c21236dc
PA
76extern int remote_register_number_and_offset (struct gdbarch *gdbarch,
77 int regnum, int *pnum,
78 int *poffset);
79
6b8edb51 80extern void remote_notif_get_pending_events (remote_target *remote,
42938c1a 81 const notif_client *np);
c39ebbf4 82extern bool remote_target_is_non_stop_p (remote_target *t);
e5b176f2
AB
83
84/* An abstract class that represents the set of callbacks that are made
85 from the send_remote_packet function (declared below). */
86
87struct send_remote_packet_callbacks
88{
89 /* The SENDING callback is called once send_remote_packet has performed
90 its error checking and setup, just before the packet is sent to the
91 remote target. BUF is the content of the packet that will be sent
92 (before any of the protocol specific prefix, suffix, or escaping is
93 applied). */
94
95 virtual void sending (gdb::array_view<const char> &buf) = 0;
96
97 /* The RECEIVED callback is called once a reply has been received from
98 the remote target. The content of the reply is in BUF which can't be
99 modified, and which is not guaranteed to remain valid after the
100 RECEIVED call has returned. If you need to preserve the contents of
101 BUF then a copy should be taken. */
102
103 virtual void received (gdb::array_view<const char> &buf) = 0;
104};
105
106/* Send BUF to the current remote target. If BUF points to an empty
107 string, either zero length, or the first character is the null
108 character, then an error is thrown. If the current target is not a
109 remote target then an error is thrown.
110
111 Calls CALLBACKS->sending() just before the packet is sent to the remote
112 target, and calls CALLBACKS->received() with the reply once this is
113 received from the remote target. */
114
115extern void send_remote_packet (gdb::array_view<const char> &buf,
116 send_remote_packet_callbacks *callbacks);
117
24b2de7b
AB
118
119/* Return true if TARGET is a remote, or extended-remote target, otherwise,
120 return false. */
121
122extern bool is_remote_target (process_stratum_target *target);
123
c2c6d25f 124#endif