[v4,2/3] gdb: Add per-remote target variables for memory read and write config

Message ID 20221221133958.2111768-3-christina.schimpe@intel.com
State New
Headers
Series Apply fixme notes for multi-target support |

Commit Message

Schimpe, Christina Dec. 21, 2022, 1:39 p.m. UTC
  This patch adds per-remote target variables for the configuration of
memory read- and write packet size.  It is a further change to commit
"gdb: Make global feature array a per-remote target array" to apply the
fixme notes described in commit 5b6d1e4 "Multi-target support".

The former global variables for that configuration are still available
to allow the command line configuration for all future remote
connections.  Similar to the command line configuration of the per-
remote target feature array, the commands

- set remotewritesize (deprecated)
- set remote memory-read-packet-size
- set remote memory-write-packet-size

will configure the current target (if available).  If no target is
available, the default configuration for future remote connections is
adapted.  The show command will display the current remote target's
packet size configuration.  If no remote target is selected, the default
configuration for future connections will be shown.

It is required to adapt the test gdb.base/remote.exp which is failing
for --target_board=native-extended-gdbserver.  With that board GDB
connects to gdbserver at gdb start time.  Due to this patch two loggings
"The target may not be able to.." are shown if the command 'set remote
memory-write-packet-size fixed' is executed while a target is connected
for the current inferior.  To fix this, the clean_restart command is
moved to a later time point of the test.  It is sufficient to be
connected to the server when "runto_main" is executed.  Now the
connection time is similar to a testrun with
--target_board=native-gdbserver.

To allow the user to distinguish between the packet-size configuration
for future remote connections and for the currently selected target, the
commands' loggings are adapted.
---
 gdb/NEWS                          |  11 +-
 gdb/doc/gdb.texinfo               |  15 +++
 gdb/remote.c                      | 163 +++++++++++++++++++++---------
 gdb/testsuite/gdb.base/remote.exp |  45 +++++----
 4 files changed, 169 insertions(+), 65 deletions(-)
  

Comments

Eli Zaretskii Dec. 21, 2022, 2:13 p.m. UTC | #1
> From: Christina Schimpe <christina.schimpe@intel.com>
> Cc: tom@tromey.com,
> 	pedro@palves.net,
> 	aburgess@redhat.com,
> 	eliz@gnu.org,
> 	Christina Schimpe <christina.schimpe@intel.com>
> Date: Wed, 21 Dec 2022 14:39:57 +0100
> 
>  gdb/NEWS                          |  11 +-
>  gdb/doc/gdb.texinfo               |  15 +++
>  gdb/remote.c                      | 163 +++++++++++++++++++++---------
>  gdb/testsuite/gdb.base/remote.exp |  45 +++++----
>  4 files changed, 169 insertions(+), 65 deletions(-)

The documentation parts are OK, thanks.
  
Pedro Alves Jan. 23, 2023, 5:43 p.m. UTC | #2
On 2022-12-21 1:39 p.m., Christina Schimpe wrote:

> +/* User configurable variables for the number of characters in a
> +   memory read/write packet.  MIN (rsa->remote_packet_size,
> +   rsa->sizeof_g_packet) is the default.  Some targets need smaller
> +   values (fifo overruns, et.al.) and some users need larger values
> +   (speed up transfers).  The variables ``preferred_*'' (the user
> +   request), ``current_*'' (what was actually set) and ``forced_*''
> +   (Positive - a soft limit, negative - a hard limit).  */
> +
> +struct memory_packet_config
> +{
> +  const char *name;
> +  long size;
> +  int fixed_p;
> +};

It seems like this struct would better be split in two like in patch #1, as
we don't really need to store a name per remote connection, as it'll always
be the same for all connections.

However, I don't want to block your patch further, so I'm OK with merging as is.

> @@ -2037,31 +2057,49 @@ set_memory_packet_size (const char *args, struct memory_packet_config *config)

...

>    /* Update the config.  */
>    config->fixed_p = fixed_p;
>    config->size = size;
> +
> +  const char* target_type = get_target_type_name (target_connected);

Formatting:

  "const char *target_type"

> +  gdb_printf (_("The %s %s is set to \"%s\".\n"), config->name, target_type,
> +	      args);
> +
>  }
>  
> +/* Show the memory-read or write-packet size configuration CONFIG of the
> +   target REMOTE.  If REMOTE is nullptr, the default configuration for future
> +   remote targets should be passed in CONFIG.  */
> +
>  static void
> -show_memory_packet_size (struct memory_packet_config *config)
> +show_memory_packet_size (memory_packet_config *config, remote_target *remote)
>  {
> +  const char* target_type = get_target_type_name (remote != nullptr);

Ditto.

OK with the formatting nits fixed.

Pedro Alves
  
Terekhov, Mikhail via Gdb-patches Jan. 30, 2023, 2:34 p.m. UTC | #3
> On 2022-12-21 1:39 p.m., Christina Schimpe wrote:
> 
> > +/* User configurable variables for the number of characters in a
> > +   memory read/write packet.  MIN (rsa->remote_packet_size,
> > +   rsa->sizeof_g_packet) is the default.  Some targets need smaller
> > +   values (fifo overruns, et.al.) and some users need larger values
> > +   (speed up transfers).  The variables ``preferred_*'' (the user
> > +   request), ``current_*'' (what was actually set) and ``forced_*''
> > +   (Positive - a soft limit, negative - a hard limit).  */
> > +
> > +struct memory_packet_config
> > +{
> > +  const char *name;
> > +  long size;
> > +  int fixed_p;
> > +};
> 
> It seems like this struct would better be split in two like in patch #1, as we don't
> really need to store a name per remote connection, as it'll always be the same
> for all connections.
> 
> However, I don't want to block your patch further, so I'm OK with merging as is.
> 
> > @@ -2037,31 +2057,49 @@ set_memory_packet_size (const char *args,
> > struct memory_packet_config *config)
> 
> ...
> 
> >    /* Update the config.  */
> >    config->fixed_p = fixed_p;
> >    config->size = size;
> > +
> > +  const char* target_type = get_target_type_name (target_connected);
> 
> Formatting:
> 
>   "const char *target_type"
> 
> > +  gdb_printf (_("The %s %s is set to \"%s\".\n"), config->name, target_type,
> > +	      args);
> > +
> >  }
> >
> > +/* Show the memory-read or write-packet size configuration CONFIG of the
> > +   target REMOTE.  If REMOTE is nullptr, the default configuration for future
> > +   remote targets should be passed in CONFIG.  */
> > +
> >  static void
> > -show_memory_packet_size (struct memory_packet_config *config)
> > +show_memory_packet_size (memory_packet_config *config, remote_target
> > +*remote)
> >  {
> > +  const char* target_type = get_target_type_name (remote != nullptr);
> 
> Ditto.
> 
> OK with the formatting nits fixed.
> 
> Pedro Alves

Thanks, I've pushed this with the 2 formatting nits addressed.

Christina
Intel Deutschland GmbH
Registered Address: Am Campeon 10, 85579 Neubiberg, Germany
Tel: +49 89 99 8853-0, www.intel.de <http://www.intel.de>
Managing Directors: Christin Eisenschmid, Sharon Heck, Tiffany Doon Silva  
Chairperson of the Supervisory Board: Nicole Lau
Registered Office: Munich
Commercial Register: Amtsgericht Muenchen HRB 186928
  

Patch

diff --git a/gdb/NEWS b/gdb/NEWS
index 2d5e8a1cdbe..0f8a6442def 100644
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -11,8 +11,15 @@ 
   configure a target's feature packet and to display its configuration,
   respectively.
 
-  The configuration of the packet itself applies to the currently selected
-  target (if available).  If no target is selected, it applies to future remote
+  The individual packet sizes can be configured and shown using the commands
+    ** 'set remote memory-read-packet-size (number of bytes|fixed|limit)'
+    ** 'set remote memory-write-packet-size (number of bytes|fixed|limit)'
+    ** 'show remote memory-read-packet-size'
+    ** 'show remote memory-write-packet-size'.
+
+  The configuration of the packet itself, as well as the size of a memory-read
+  or memory-write packet applies to the currently selected target (if
+  available).  If no target is selected, it applies to future remote
   connections.  Similarly, the show commands print the configuration of the
   currently selected target.  If no remote target is selected, the default
   configuration for future connections is shown.
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index 3babe8b2a9d..76ea010d2b8 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -24093,6 +24093,21 @@  future connections is shown.  The available settings are:
 
 @end multitable
 
+@cindex packet size, remote, configuring
+The number of bytes per memory-read or memory-write packet for a remote target
+can be configured using the commands
+@w{@code{set remote memory-read-packet-size}} and
+@w{@code{set remote memory-write-packet-size}}.  If set to @samp{0} (zero) the
+default packet size will be used.  The actual limit is further reduced depending
+on the target.  Specify @samp{fixed} to disable the target-dependent restriction
+and @samp{limit} to enable it.  Similar to the enabling and disabling of remote
+packets, the command applies to the currently selected target (if available).
+If no remote target is selected, it applies to all future remote connections.
+The configuration of the selected target can be displayed using the commands
+@w{@code{show remote memory-read-packet-size}} and
+@w{@code{show remote memory-write-packet-size}}.  If no remote target is
+selected, the default configuration for future connections is shown.
+
 @node Remote Stub
 @section Implementing a Remote Stub
 
diff --git a/gdb/remote.c b/gdb/remote.c
index 3fc70c19a91..8042446ac3d 100644
--- a/gdb/remote.c
+++ b/gdb/remote.c
@@ -602,6 +602,32 @@  struct packet_config
     enum packet_support support;
   };
 
+/* User configurable variables for the number of characters in a
+   memory read/write packet.  MIN (rsa->remote_packet_size,
+   rsa->sizeof_g_packet) is the default.  Some targets need smaller
+   values (fifo overruns, et.al.) and some users need larger values
+   (speed up transfers).  The variables ``preferred_*'' (the user
+   request), ``current_*'' (what was actually set) and ``forced_*''
+   (Positive - a soft limit, negative - a hard limit).  */
+
+struct memory_packet_config
+{
+  const char *name;
+  long size;
+  int fixed_p;
+};
+
+/* These global variables contain the default configuration for every new
+   remote_feature object.  */
+static memory_packet_config memory_read_packet_config =
+{
+  "memory-read-packet-size",
+};
+static memory_packet_config memory_write_packet_config =
+{
+  "memory-write-packet-size",
+};
+
 /* This global array contains packet descriptions (name and title).  */
 static packet_description packets_descriptions[PACKET_MAX];
 /* This global array contains the default configuration for every new
@@ -615,6 +641,9 @@  struct remote_features
 {
   remote_features ()
   {
+    m_memory_read_packet_config = memory_read_packet_config;
+    m_memory_write_packet_config = memory_write_packet_config;
+
     std::copy (std::begin (remote_protocol_packets),
 	       std::end (remote_protocol_packets),
 	       std::begin (m_protocol_packets));
@@ -660,6 +689,11 @@  struct remote_features
   packet_result packet_ok (const char *buf, const int which_packet);
   packet_result packet_ok (const gdb::char_vector &buf, const int which_packet);
 
+  /* Configuration of a remote target's memory read packet.  */
+  memory_packet_config m_memory_read_packet_config;
+  /* Configuration of a remote target's memory write packet.  */
+  memory_packet_config m_memory_write_packet_config;
+
   /* The per-remote target array which stores a remote's packet
      configurations.  */
   packet_config m_protocol_packets[PACKET_MAX];
@@ -1923,21 +1957,6 @@  show_remotebreak (struct ui_file *file, int from_tty,
 static unsigned int remote_address_size;
 
 
-/* User configurable variables for the number of characters in a
-   memory read/write packet.  MIN (rsa->remote_packet_size,
-   rsa->sizeof_g_packet) is the default.  Some targets need smaller
-   values (fifo overruns, et.al.) and some users need larger values
-   (speed up transfers).  The variables ``preferred_*'' (the user
-   request), ``current_*'' (what was actually set) and ``forced_*''
-   (Positive - a soft limit, negative - a hard limit).  */
-
-struct memory_packet_config
-{
-  const char *name;
-  long size;
-  int fixed_p;
-};
-
 /* The default max memory-write-packet-size, when the setting is
    "fixed".  The 16k is historical.  (It came from older GDB's using
    alloca for buffers and the knowledge (folklore?) that some hosts
@@ -2003,13 +2022,14 @@  remote_target::get_memory_packet_size (struct memory_packet_config *config)
    something really big then do a sanity check.  */
 
 static void
-set_memory_packet_size (const char *args, struct memory_packet_config *config)
+set_memory_packet_size (const char *args, struct memory_packet_config *config,
+			bool target_connected)
 {
   int fixed_p = config->fixed_p;
   long size = config->size;
 
   if (args == NULL)
-    error (_("Argument required (integer, `fixed' or `limited')."));
+    error (_("Argument required (integer, \"fixed\" or \"limit\")."));
   else if (strcmp (args, "hard") == 0
       || strcmp (args, "fixed") == 0)
     fixed_p = 1;
@@ -2037,31 +2057,49 @@  set_memory_packet_size (const char *args, struct memory_packet_config *config)
 			 ? DEFAULT_MAX_MEMORY_PACKET_SIZE_FIXED
 			 : size);
 
-      if (! query (_("The target may not be able to correctly handle a %s\n"
-		   "of %ld bytes. Change the packet size? "),
-		   config->name, query_size))
+      if (target_connected
+	  && !query (_("The target may not be able to correctly handle a %s\n"
+		       "of %ld bytes.  Change the packet size? "),
+		     config->name, query_size))
+	error (_("Packet size not changed."));
+      else if (!target_connected
+	       && !query (_("Future remote targets may not be able to "
+			    "correctly handle a %s\nof %ld bytes.  Change the "
+			    "packet size for future remote targets? "),
+			  config->name, query_size))
 	error (_("Packet size not changed."));
     }
   /* Update the config.  */
   config->fixed_p = fixed_p;
   config->size = size;
+
+  const char* target_type = get_target_type_name (target_connected);
+  gdb_printf (_("The %s %s is set to \"%s\".\n"), config->name, target_type,
+	      args);
+
 }
 
+/* Show the memory-read or write-packet size configuration CONFIG of the
+   target REMOTE.  If REMOTE is nullptr, the default configuration for future
+   remote targets should be passed in CONFIG.  */
+
 static void
-show_memory_packet_size (struct memory_packet_config *config)
+show_memory_packet_size (memory_packet_config *config, remote_target *remote)
 {
+  const char* target_type = get_target_type_name (remote != nullptr);
+
   if (config->size == 0)
-    gdb_printf (_("The %s is 0 (default). "), config->name);
+    gdb_printf (_("The %s %s is 0 (default). "), config->name, target_type);
   else
-    gdb_printf (_("The %s is %ld. "), config->name, config->size);
+    gdb_printf (_("The %s %s is %ld. "), config->name, target_type,
+		config->size);
+
   if (config->fixed_p)
     gdb_printf (_("Packets are fixed at %ld bytes.\n"),
 		get_fixed_memory_packet_size (config));
   else
     {
-      remote_target *remote = get_current_remote_target ();
-
-      if (remote != NULL)
+      if (remote != nullptr)
 	gdb_printf (_("Packets are limited to %ld bytes.\n"),
 		    remote->get_memory_packet_size (config));
       else
@@ -2070,22 +2108,39 @@  show_memory_packet_size (struct memory_packet_config *config)
     }
 }
 
-/* FIXME: needs to be per-remote-target.  */
-static struct memory_packet_config memory_write_packet_config =
-{
-  "memory-write-packet-size",
-};
+/* Configure the memory-write-packet size of the currently selected target.  If
+   no target is available, the default configuration for future remote targets
+   is configured.  */
 
 static void
 set_memory_write_packet_size (const char *args, int from_tty)
 {
-  set_memory_packet_size (args, &memory_write_packet_config);
+  remote_target *remote = get_current_remote_target ();
+  if (remote != nullptr)
+    {
+      set_memory_packet_size
+	(args, &remote->m_features.m_memory_write_packet_config, true);
+    }
+  else
+    {
+      memory_packet_config* config = &memory_write_packet_config;
+      set_memory_packet_size (args, config, false);
+    }
 }
 
+/* Display the memory-write-packet size of the currently selected target.  If
+   no target is available, the default configuration for future remote targets
+   is shown.  */
+
 static void
 show_memory_write_packet_size (const char *args, int from_tty)
 {
-  show_memory_packet_size (&memory_write_packet_config);
+  remote_target *remote = get_current_remote_target ();
+  if (remote != nullptr)
+    show_memory_packet_size (&remote->m_features.m_memory_write_packet_config,
+			     remote);
+  else
+    show_memory_packet_size (&memory_write_packet_config, nullptr);
 }
 
 /* Show the number of hardware watchpoints that can be used.  */
@@ -2141,31 +2196,47 @@  show_remote_packet_max_chars (struct ui_file *file, int from_tty,
 long
 remote_target::get_memory_write_packet_size ()
 {
-  return get_memory_packet_size (&memory_write_packet_config);
+  return get_memory_packet_size (&m_features.m_memory_write_packet_config);
 }
 
-/* FIXME: needs to be per-remote-target.  */
-static struct memory_packet_config memory_read_packet_config =
-{
-  "memory-read-packet-size",
-};
+/* Configure the memory-read-packet size of the currently selected target.  If
+   no target is available, the default configuration for future remote targets
+   is adapted.  */
 
 static void
 set_memory_read_packet_size (const char *args, int from_tty)
 {
-  set_memory_packet_size (args, &memory_read_packet_config);
+  remote_target *remote = get_current_remote_target ();
+  if (remote != nullptr)
+    set_memory_packet_size
+      (args, &remote->m_features.m_memory_read_packet_config, true);
+  else
+    {
+      memory_packet_config* config = &memory_read_packet_config;
+      set_memory_packet_size (args, config, false);
+    }
+
 }
 
+/* Display the memory-read-packet size of the currently selected target.  If
+   no target is available, the default configuration for future remote targets
+   is shown.  */
+
 static void
 show_memory_read_packet_size (const char *args, int from_tty)
 {
-  show_memory_packet_size (&memory_read_packet_config);
+  remote_target *remote = get_current_remote_target ();
+  if (remote != nullptr)
+    show_memory_packet_size (&remote->m_features.m_memory_read_packet_config,
+			     remote);
+  else
+    show_memory_packet_size (&memory_read_packet_config, nullptr);
 }
 
 long
 remote_target::get_memory_read_packet_size ()
 {
-  long size = get_memory_packet_size (&memory_read_packet_config);
+  long size = get_memory_packet_size (&m_features.m_memory_read_packet_config);
 
   /* FIXME: cagney/1999-11-07: Functions like getpkt() need to get an
      extra buffer size argument before the memory read size can be
@@ -15084,16 +15155,16 @@  Show the maximum number of bytes per memory write packet (deprecated)."),
 Set the maximum number of bytes per memory-write packet.\n\
 Specify the number of bytes in a packet or 0 (zero) for the\n\
 default packet size.  The actual limit is further reduced\n\
-dependent on the target.  Specify ``fixed'' to disable the\n\
-further restriction and ``limit'' to enable that restriction."),
+dependent on the target.  Specify \"fixed\" to disable the\n\
+further restriction and \"limit\" to enable that restriction."),
 	   &remote_set_cmdlist);
   add_cmd ("memory-read-packet-size", no_class,
 	   set_memory_read_packet_size, _("\
 Set the maximum number of bytes per memory-read packet.\n\
 Specify the number of bytes in a packet or 0 (zero) for the\n\
 default packet size.  The actual limit is further reduced\n\
-dependent on the target.  Specify ``fixed'' to disable the\n\
-further restriction and ``limit'' to enable that restriction."),
+dependent on the target.  Specify \"fixed\" to disable the\n\
+further restriction and \"limit\" to enable that restriction."),
 	   &remote_set_cmdlist);
   add_cmd ("memory-write-packet-size", no_class,
 	   show_memory_write_packet_size,
diff --git a/gdb/testsuite/gdb.base/remote.exp b/gdb/testsuite/gdb.base/remote.exp
index 58d11f5dd1f..4d8ccd88a76 100644
--- a/gdb/testsuite/gdb.base/remote.exp
+++ b/gdb/testsuite/gdb.base/remote.exp
@@ -38,31 +38,37 @@  gdb_test "disconnect" ".*"
 #
 
 gdb_test "show remote memory-write-packet-size" \
-	"The memory-write-packet-size is 0 \\(default\\). The actual limit will be further reduced dependent on the target\." \
+	"The memory-write-packet-size on future remote targets is 0 \\(default\\). The actual limit will be further reduced dependent on the target\." \
 	"write-packet default"
 
 gdb_test "set remote memory-write-packet-size" \
-	"Argument required .integer, `fixed' or `limited'.\." \
+	"Argument required .integer, \"fixed\" or \"limit\".\." \
 	"set write-packet - NULL"
 
-gdb_test_no_output "set remote memory-write-packet-size 20"
+gdb_test "set remote memory-write-packet-size 20" \
+	"The memory-write-packet-size on future remote targets is set to \"20\"."
+
 gdb_test "show remote memory-write-packet-size" \
-	"The memory-write-packet-size is 20. The actual limit will be further reduced dependent on the target\." \
+	"The memory-write-packet-size on future remote targets is 20. The actual limit will be further reduced dependent on the target\." \
 	"set write-packet - small"
 
-gdb_test_no_output "set remote memory-write-packet-size 1"
+gdb_test "set remote memory-write-packet-size 1" \
+	"The memory-write-packet-size on future remote targets is set to \"1\"."
+
 gdb_test "show remote memory-write-packet-size" \
-	"The memory-write-packet-size is 1. The actual limit will be further reduced dependent on the target\." \
+	"The memory-write-packet-size on future remote targets is 1. The actual limit will be further reduced dependent on the target\." \
 	"set write-packet - very-small"
 
-gdb_test_no_output "set remote memory-write-packet-size 0"
+gdb_test "set remote memory-write-packet-size 0" \
+	"The memory-write-packet-size on future remote targets is set to \"0\"."
+
 gdb_test "show remote memory-write-packet-size" \
-	"The memory-write-packet-size is 0 \\(default\\). The actual limit will be further reduced dependent on the target\." \
+	"The memory-write-packet-size on future remote targets is 0 \\(default\\). The actual limit will be further reduced dependent on the target\." \
 	"write-packet default again"
 
 set test "set remote memory-write-packet-size fixed"
 gdb_test_multiple $test $test {
-    -re "Change the packet size. .y or n. " {
+    -re "Change the packet size for future remote targets. .y or n. " {
 	gdb_test_multiple "y" $test {
 	    -re "$gdb_prompt $" {
 		pass $test
@@ -70,13 +76,16 @@  gdb_test_multiple $test $test {
 	}
     }
 }
+
 gdb_test "show remote memory-write-packet-size" \
-	"The memory-write-packet-size is 0 \\(default\\). Packets are fixed at 16384 bytes\." \
+	"The memory-write-packet-size on future remote targets is 0 \\(default\\). Packets are fixed at 16384 bytes\." \
 	"write-packet default fixed"
 
-gdb_test_no_output "set remote memory-write-packet-size limit"
+gdb_test "set remote memory-write-packet-size limit" \
+	"The memory-write-packet-size on future remote targets is set to \"limit\"."
+
 gdb_test "show remote memory-write-packet-size" \
-	"The memory-write-packet-size is 0 \\(default\\). The actual limit will be further reduced dependent on the target\." \
+	"The memory-write-packet-size on future remote targets is 0 \\(default\\). The actual limit will be further reduced dependent on the target\." \
 	"write-packet default limit again"
 
 #
@@ -88,7 +97,8 @@  proc gdb_load_timed {executable class writesize} {
     set test "timed download `[file tail $executable]' - $class, $writesize"
 
     if {$writesize != ""} {
-	gdb_test_no_output "set remote memory-write-packet-size $writesize" \
+	gdb_test "set remote memory-write-packet-size $writesize" \
+	    "The memory-write-packet-size on future remote targets is set to \"$writesize\"." \
 	    "$test - set packet size"
 
 	send_gdb "set remote memory-write-packet-size $class\n"
@@ -129,8 +139,6 @@  proc gdb_load_timed {executable class writesize} {
     pass $test
 }
 
-clean_restart $binfile
-
 # These download tests won't actually download anything on !is_remote
 # target boards, but we run them anyway because it's simpler, and
 # harmless.
@@ -155,6 +163,8 @@  gdb_load_timed $binfile "limit" 0
 # Get the size of random_data table (defaults to 48K).
 set sizeof_random_data [get_sizeof "random_data" 48*1024]
 
+clean_restart $binfile
+
 #
 # Part THREE: Check the upload behavour
 #
@@ -178,10 +188,11 @@  if {$sizeof_random_data > 16380} {
 
 # Read a chunk just larger than the packet size (reduce the packet
 # size to make life easier)
-gdb_test_no_output "set remote memory-read-packet-size 16"
+gdb_test "set remote memory-read-packet-size 16" \
+	"The memory-read-packet-size on the current remote target is set to \"16\"."
 
 gdb_test "show remote memory-read-packet-size" \
-	"The memory-read-packet-size is 16. Packets are limited to 20 bytes."
+	"The memory-read-packet-size on the current remote target is 16. Packets are limited to 20 bytes."
 gdb_test "x/17ub random_data" \
 	"<random_data>:\[ \t\]+60\[ \t\]+74\[ \t\]+216\[ \t\]+38\[ \t\]+149\[ \t\]+49\[ \t\]+207\[ \t\]+44.*<random_data\\+8>:\[ \t\]+124\[ \t\]+38\[ \t\]+93\[ \t\]+125\[ \t\]+232\[ \t\]+67\[ \t\]+228\[ \t\]+56.*<random_data\\+16>:\[ \t\]+161"