Add `set print repeats' tests for C/C++ arrays
[binutils-gdb.git] / gdb / remote.h
index 18352ddb866f438c546f2033d46248a3f3289d9d..638ffc2e337c1c5e52180c5706ed21745af0d4a5 100644 (file)
@@ -1,5 +1,5 @@
 /* Remote target communications for serial-line targets in custom GDB protocol
-   Copyright (C) 1999-2021 Free Software Foundation, Inc.
+   Copyright (C) 1999-2022 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -24,6 +24,8 @@
 struct target_desc;
 struct remote_target;
 
+class process_stratum_target;
+
 /* True when printing "remote" debug statements is enabled.  */
 
 extern bool remote_debug;
@@ -77,4 +79,46 @@ extern int remote_register_number_and_offset (struct gdbarch *gdbarch,
 
 extern void remote_notif_get_pending_events (remote_target *remote,
                                             struct notif_client *np);
+extern bool remote_target_is_non_stop_p (remote_target *t);
+
+/* An abstract class that represents the set of callbacks that are made
+   from the send_remote_packet function (declared below).  */
+
+struct send_remote_packet_callbacks
+{
+  /* The SENDING callback is called once send_remote_packet has performed
+     its error checking and setup, just before the packet is sent to the
+     remote target.  BUF is the content of the packet that will be sent
+     (before any of the protocol specific prefix, suffix, or escaping is
+     applied).  */
+
+  virtual void sending (gdb::array_view<const char> &buf) = 0;
+
+  /* The RECEIVED callback is called once a reply has been received from
+     the remote target.  The content of the reply is in BUF which can't be
+     modified, and which is not guaranteed to remain valid after the
+     RECEIVED call has returned.  If you need to preserve the contents of
+     BUF then a copy should be taken.  */
+
+  virtual void received (gdb::array_view<const char> &buf) = 0;
+};
+
+/* Send BUF to the current remote target.  If BUF points to an empty
+   string, either zero length, or the first character is the null
+   character, then an error is thrown.  If the current target is not a
+   remote target then an error is thrown.
+
+   Calls CALLBACKS->sending() just before the packet is sent to the remote
+   target, and calls CALLBACKS->received() with the reply once this is
+   received from the remote target.  */
+
+extern void send_remote_packet (gdb::array_view<const char> &buf,
+                               send_remote_packet_callbacks *callbacks);
+
+
+/* Return true if TARGET is a remote, or extended-remote target, otherwise,
+   return false.  */
+
+extern bool is_remote_target (process_stratum_target *target);
+
 #endif