GDB (xrefs)
Loading...
Searching...
No Matches
remote.h
Go to the documentation of this file.
1/* Remote target communications for serial-line targets in custom GDB protocol
2 Copyright (C) 1999-2023 Free Software Foundation, Inc.
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
8 the Free Software Foundation; either version 3 of the License, or
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
17 along with this program. If not, see <http://www.gnu.org/licenses/>. */
18
19#ifndef REMOTE_H
20#define REMOTE_H
21
22#include "remote-notif.h"
23
24struct target_desc;
25struct remote_target;
26
28
29/* True when printing "remote" debug statements is enabled. */
30
31extern bool remote_debug;
32
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
49/* Read a packet from the remote machine, with error checking, and
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. */
54
55extern void getpkt (remote_target *remote,
56 char **buf, long *sizeof_buf, int forever);
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
62 as a string. */
63
64extern int putpkt (remote_target *remote, const char *buf);
65
66void register_remote_g_packet_guess (struct gdbarch *gdbarch, int bytes,
67 const struct target_desc *tdesc);
68void register_remote_support_xml (const char *);
69
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
77 int regnum, int *pnum,
78 int *poffset);
79
81 const notif_client *np);
83
84/* An abstract class that represents the set of callbacks that are made
85 from the send_remote_packet function (declared below). */
86
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,
117
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
124#endif
int regnum
bool is_remote_target(process_stratum_target *target)
Definition remote.c:1332
void remote_notif_get_pending_events(remote_target *remote, const notif_client *np)
Definition remote.c:8105
void remote_file_delete(const char *remote_file, int from_tty)
Definition remote.c:13054
void getpkt(remote_target *remote, char **buf, long *sizeof_buf, int forever)
void send_remote_packet(gdb::array_view< const char > &buf, send_remote_packet_callbacks *callbacks)
Definition remote.c:11785
int remote_register_number_and_offset(struct gdbarch *gdbarch, int regnum, int *pnum, int *poffset)
Definition remote.c:1761
void remote_file_put(const char *local_file, const char *remote_file, int from_tty)
Definition remote.c:12901
bool remote_debug
Definition remote.c:92
void register_remote_g_packet_guess(struct gdbarch *gdbarch, int bytes, const struct target_desc *tdesc)
Definition remote.c:12131
int putpkt(remote_target *remote, const char *buf)
Definition remote.c:9703
void remote_file_get(const char *remote_file, const char *local_file, int from_tty)
Definition remote.c:12994
void register_remote_support_xml(const char *)
Definition remote.c:5606
bool remote_target_is_non_stop_p(remote_target *t)
Definition remote.c:15237
virtual void sending(gdb::array_view< const char > &buf)=0
virtual void received(gdb::array_view< const char > &buf)=0