This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[RFC] Reduce duplication registering packets in remote.c


This patch kills most of the copy/paste gruntwork that you have to do to add
a new remote packet.  That gruntwork, and this simplified version, handle
two things in parallel: checking that the remote stub supports the new
packet, and allowing the user to override the autodetection if necessary.

Anyone see any problems with it?  If not, I'd like to commit it; this
duplication has always annoyed me, and I'm working on a whole bunch of new
packets at the moment...

Now, there's a separate question of whether the user should be able to
override the autodetection.  For binary download the stated reason
was that the link might not be eight-bit-clean.  For the p/P packets
it's currently handy to be able to override because GDB will use them
eagerly even if it ought to be using the g/G packet, but I'm going to
be doing some work to improve that.  For the others there's no clear
reason to turn it off if the stub supports it, unless the stub is so broken
that it falls down when we send a packet it doesn't recognize.

That leaves vCont, qSymbol, Z0-Z4, qPart:auxv, and qGetTLSAddr with
unnecessary set/show commands.  But then again while the set commands
are pretty useless, the show commands are handy, since they show
"auto-detected, currently unknown/enabled/disabled" depending on
what's going on.  So we may as well leave them and continue to add new
ones.

Now all it takes is an entry in the enum and a call in _initialize_remote
with the name and documentation.

-- 
Daniel Jacobowitz
CodeSourcery

2006-02-15  Daniel Jacobowitz  <dan@codesourcery.com>

	* remote.c: Add an enumeration for configurable remote
	packets.
	(remote_protocol_packets, set_remote_protocol_packet_cmd)
	(show_remote_protocol_packet_cmd): New.
	(remote_protocol_vcont)
	(set_remote_protocol_vcont_packet_cmd)
	(show_remote_protocol_vcont_packet_cmd)
	(remote_protocol_qSymbol)
	(set_remote_protocol_qSymbol_packet_cmd)
	(show_remote_protocol_qSymbol_packet_cmd)
	(remote_protocol_P, set_remote_protocol_P_packet_cmd)
	(show_remote_protocol_P_packet_cmd)
	(remote_protocol_Z)
	(set_remote_protocol_Z_software_bp_packet_cmd)
	(show_remote_protocol_Z_software_bp_packet_cmd)
	(set_remote_protocol_Z_hardware_bp_packet_cmd)
	(show_remote_protocol_Z_hardware_bp_packet_cmd)
	(set_remote_protocol_Z_write_wp_packet_cmd)
	(show_remote_protocol_Z_write_wp_packet_cmd)
	(set_remote_protocol_Z_read_wp_packet_cmd)
	(show_remote_protocol_Z_read_wp_packet_cmd)
	(set_remote_protocol_Z_access_wp_packet_cmd)
	(show_remote_protocol_Z_access_wp_packet_cmd)
	(remote_protocol_binary_download)
	(set_remote_protocol_binary_download_cmd)
	(show_remote_protocol_binary_download_cmd)
	(remote_protocol_qPart_auxv)
	(set_remote_protocol_qPart_auxv_packet_cmd)
	(show_remote_protocol_qPart_auxv_packet_cmd)
	(remote_protocol_qGetTLSAddr)
	(set_remote_protocol_qGetTLSAddr_packet_cmd)
	(show_remote_protocol_qGetTLSAddr_packet_cmd)
	(remote_protocol_p)
	(set_remote_protocol_p_packet_cmd)
	(show_remote_protocol_p_packet_cmd): Delete.

	(init_all_packet_configs): Simplify.
	(set_remote_protocol_Z_packet_cmd)
	(show_remote_protocol_Z_packet_cmd)
	(remote_check_symbols, remote_vcont_probe, remote_vcont_resume)
	(remote_fetch_registers, remote_prepare_to_store)
	(remote_store_registers, check_binary_download)
	(remote_write_bytes, remote_insert_breakpoint)
	(remote_remove_breakpoint, remote_insert_watchpoint)
	(remote_remove_watchpoint, remote_insert_hw_breakpoint)
	(remote_remove_hw_breakpoint, remote_xfer_partial)
	(remote_get_thread_local_address): Update for packet array.
	(_initialize_remote): Likewise; also update for common
	set/show commands.

Index: remote.c
===================================================================
RCS file: /cvs/src/src/gdb/remote.c,v
retrieving revision 1.201
diff -u -p -r1.201 remote.c
--- remote.c	2 Feb 2006 02:04:28 -0000	1.201
+++ remote.c	15 Feb 2006 14:41:55 -0000
@@ -729,59 +729,63 @@ packet_ok (const char *buf, struct packe
     }
 }
 
-/* Should we try the 'vCont' (descriptive resume) request?  */
-static struct packet_config remote_protocol_vcont;
-
-static void
-set_remote_protocol_vcont_packet_cmd (char *args, int from_tty,
-				      struct cmd_list_element *c)
-{
-  update_packet_config (&remote_protocol_vcont);
-}
-
-static void
-show_remote_protocol_vcont_packet_cmd (struct ui_file *file, int from_tty,
-				       struct cmd_list_element *c,
-				       const char *value)
-{
-  show_packet_config_cmd (&remote_protocol_vcont);
-}
+enum {
+  PACKET_vCont = 0,
+  PACKET_X,
+  PACKET_qSymbol,
+  PACKET_P,
+  PACKET_p,
+  PACKET_Z0,
+  PACKET_Z1,
+  PACKET_Z2,
+  PACKET_Z3,
+  PACKET_Z4,
+  PACKET_qPart_auxv,
+  PACKET_qGetTLSAddr,
+  PACKET_MAX
+};
 
-/* Should we try the 'qSymbol' (target symbol lookup service) request?  */
-static struct packet_config remote_protocol_qSymbol;
+static struct packet_config remote_protocol_packets[PACKET_MAX];
 
 static void
-set_remote_protocol_qSymbol_packet_cmd (char *args, int from_tty,
-				  struct cmd_list_element *c)
+set_remote_protocol_packet_cmd (char *args, int from_tty,
+				struct cmd_list_element *c)
 {
-  update_packet_config (&remote_protocol_qSymbol);
-}
+  struct packet_config *packet;
 
-static void
-show_remote_protocol_qSymbol_packet_cmd (struct ui_file *file, int from_tty,
-					 struct cmd_list_element *c,
-					 const char *value)
-{
-  show_packet_config_cmd (&remote_protocol_qSymbol);
+  for (packet = remote_protocol_packets;
+       packet < &remote_protocol_packets[PACKET_MAX];
+       packet++)
+    {
+      if (&packet->detect == c->var)
+	{
+	  update_packet_config (packet);
+	  return;
+	}
+    }
+  internal_error (__FILE__, __LINE__, "Could not find config for %s",
+		  c->name);
 }
 
-/* Should we try the 'P' (set register) request?  */
-
-static struct packet_config remote_protocol_P;
-
 static void
-set_remote_protocol_P_packet_cmd (char *args, int from_tty,
-				  struct cmd_list_element *c)
+show_remote_protocol_packet_cmd (struct ui_file *file, int from_tty,
+				 struct cmd_list_element *c,
+				 const char *value)
 {
-  update_packet_config (&remote_protocol_P);
-}
+  struct packet_config *packet;
 
-static void
-show_remote_protocol_P_packet_cmd (struct ui_file *file, int from_tty,
-				   struct cmd_list_element *c,
-				   const char *value)
-{
-  show_packet_config_cmd (&remote_protocol_P);
+  for (packet = remote_protocol_packets;
+       packet < &remote_protocol_packets[PACKET_MAX];
+       packet++)
+    {
+      if (&packet->detect == c->var)
+	{
+	  show_packet_config_cmd (packet);
+	  return;
+	}
+    }
+  internal_error (__FILE__, __LINE__, "Could not find config for %s",
+		  c->name);
 }
 
 /* Should we try one of the 'Z' requests?  */
@@ -796,86 +800,6 @@ enum Z_packet_type
   NR_Z_PACKET_TYPES
 };
 
-static struct packet_config remote_protocol_Z[NR_Z_PACKET_TYPES];
-
-/* FIXME: Instead of having all these boiler plate functions, the
-   command callback should include a context argument.  */
-
-static void
-set_remote_protocol_Z_software_bp_packet_cmd (char *args, int from_tty,
-					      struct cmd_list_element *c)
-{
-  update_packet_config (&remote_protocol_Z[Z_PACKET_SOFTWARE_BP]);
-}
-
-static void
-show_remote_protocol_Z_software_bp_packet_cmd (struct ui_file *file, int from_tty,
-					       struct cmd_list_element *c,
-					       const char *value)
-{
-  show_packet_config_cmd (&remote_protocol_Z[Z_PACKET_SOFTWARE_BP]);
-}
-
-static void
-set_remote_protocol_Z_hardware_bp_packet_cmd (char *args, int from_tty,
-					      struct cmd_list_element *c)
-{
-  update_packet_config (&remote_protocol_Z[Z_PACKET_HARDWARE_BP]);
-}
-
-static void
-show_remote_protocol_Z_hardware_bp_packet_cmd (struct ui_file *file, int from_tty,
-					       struct cmd_list_element *c,
-					       const char *value)
-{
-  show_packet_config_cmd (&remote_protocol_Z[Z_PACKET_HARDWARE_BP]);
-}
-
-static void
-set_remote_protocol_Z_write_wp_packet_cmd (char *args, int from_tty,
-					      struct cmd_list_element *c)
-{
-  update_packet_config (&remote_protocol_Z[Z_PACKET_WRITE_WP]);
-}
-
-static void
-show_remote_protocol_Z_write_wp_packet_cmd (struct ui_file *file, int from_tty,
-					    struct cmd_list_element *c,
-					    const char *value)
-{
-  show_packet_config_cmd (&remote_protocol_Z[Z_PACKET_WRITE_WP]);
-}
-
-static void
-set_remote_protocol_Z_read_wp_packet_cmd (char *args, int from_tty,
-					      struct cmd_list_element *c)
-{
-  update_packet_config (&remote_protocol_Z[Z_PACKET_READ_WP]);
-}
-
-static void
-show_remote_protocol_Z_read_wp_packet_cmd (struct ui_file *file, int from_tty,
-					   struct cmd_list_element *c,
-					   const char *value)
-{
-  show_packet_config_cmd (&remote_protocol_Z[Z_PACKET_READ_WP]);
-}
-
-static void
-set_remote_protocol_Z_access_wp_packet_cmd (char *args, int from_tty,
-					      struct cmd_list_element *c)
-{
-  update_packet_config (&remote_protocol_Z[Z_PACKET_ACCESS_WP]);
-}
-
-static void
-show_remote_protocol_Z_access_wp_packet_cmd (struct ui_file *file, int from_tty,
-					     struct cmd_list_element *c,
-					     const char *value)
-{
-  show_packet_config_cmd (&remote_protocol_Z[Z_PACKET_ACCESS_WP]);
-}
-
 /* For compatibility with older distributions.  Provide a ``set remote
    Z-packet ...'' command that updates all the Z packet types.  */
 
@@ -888,8 +812,8 @@ set_remote_protocol_Z_packet_cmd (char *
   int i;
   for (i = 0; i < NR_Z_PACKET_TYPES; i++)
     {
-      remote_protocol_Z[i].detect = remote_Z_packet_detect;
-      update_packet_config (&remote_protocol_Z[i]);
+      remote_protocol_packets[PACKET_Z0 + i].detect = remote_Z_packet_detect;
+      update_packet_config (&remote_protocol_packets[PACKET_Z0 + i]);
     }
 }
 
@@ -901,22 +825,10 @@ show_remote_protocol_Z_packet_cmd (struc
   int i;
   for (i = 0; i < NR_Z_PACKET_TYPES; i++)
     {
-      show_packet_config_cmd (&remote_protocol_Z[i]);
+      show_packet_config_cmd (&remote_protocol_packets[PACKET_Z0 + i]);
     }
 }
 
-/* Should we try the 'X' (remote binary download) packet?
-
-   This variable (available to the user via "set remote X-packet")
-   dictates whether downloads are sent in binary (via the 'X' packet).
-   We assume that the stub can, and attempt to do it. This will be
-   cleared if the stub does not understand it. This switch is still
-   needed, though in cases when the packet is supported in the stub,
-   but the connection does not allow it (i.e., 7-bit serial connection
-   only).  */
-
-static struct packet_config remote_protocol_binary_download;
-
 /* Should we try the 'ThreadInfo' query packet?
 
    This variable (NOT available to the user: auto-detect only!)
@@ -928,77 +840,6 @@ static struct packet_config remote_proto
 static int use_threadinfo_query;
 static int use_threadextra_query;
 
-static void
-set_remote_protocol_binary_download_cmd (char *args,
-					 int from_tty,
-					 struct cmd_list_element *c)
-{
-  update_packet_config (&remote_protocol_binary_download);
-}
-
-static void
-show_remote_protocol_binary_download_cmd (struct ui_file *file, int from_tty,
-					  struct cmd_list_element *c,
-					  const char *value)
-{
-  show_packet_config_cmd (&remote_protocol_binary_download);
-}
-
-/* Should we try the 'qPart:auxv' (target auxiliary vector read) request?  */
-static struct packet_config remote_protocol_qPart_auxv;
-
-static void
-set_remote_protocol_qPart_auxv_packet_cmd (char *args, int from_tty,
-					   struct cmd_list_element *c)
-{
-  update_packet_config (&remote_protocol_qPart_auxv);
-}
-
-static void
-show_remote_protocol_qPart_auxv_packet_cmd (struct ui_file *file, int from_tty,
-					    struct cmd_list_element *c,
-					    const char *value)
-{
-  show_packet_config_cmd (&remote_protocol_qPart_auxv);
-}
-
-/* Should we try the 'qGetTLSAddr' (Get Thread Local Storage Address) request? */
-static struct packet_config remote_protocol_qGetTLSAddr;
-
-static void
-set_remote_protocol_qGetTLSAddr_packet_cmd (char *args, int from_tty,
-				  struct cmd_list_element *c)
-{
-  update_packet_config (&remote_protocol_qGetTLSAddr);
-}
-
-static void
-show_remote_protocol_qGetTLSAddr_packet_cmd (struct ui_file *file, int from_tty,
-					     struct cmd_list_element *c,
-					     const char *value)
-{
-  show_packet_config_cmd (&remote_protocol_qGetTLSAddr);
-}
-
-static struct packet_config remote_protocol_p;
-
-static void
-set_remote_protocol_p_packet_cmd (char *args, int from_tty,
-				  struct cmd_list_element *c)
-{
-  update_packet_config (&remote_protocol_p);
-}
-
-static void
-show_remote_protocol_p_packet_cmd (struct ui_file *file, int from_tty,
-				   struct cmd_list_element *c,
-				   const char *value)
-{
-  show_packet_config_cmd (&remote_protocol_p);
-}
-
-
-
 /* Tokens for use by the asynchronous signal handlers for SIGINT.  */
 static void *sigint_remote_twice_token;
 static void *sigint_remote_token;
@@ -2098,17 +1939,8 @@ static void
 init_all_packet_configs (void)
 {
   int i;
-  update_packet_config (&remote_protocol_P);
-  update_packet_config (&remote_protocol_p);
-  update_packet_config (&remote_protocol_qSymbol);
-  update_packet_config (&remote_protocol_vcont);
-  for (i = 0; i < NR_Z_PACKET_TYPES; i++)
-    update_packet_config (&remote_protocol_Z[i]);
-  /* Force remote_write_bytes to check whether target supports binary
-     downloading.  */
-  update_packet_config (&remote_protocol_binary_download);
-  update_packet_config (&remote_protocol_qPart_auxv);
-  update_packet_config (&remote_protocol_qGetTLSAddr);
+  for (i = 0; i < PACKET_MAX; i++)
+    update_packet_config (&remote_protocol_packets[i]);
 }
 
 /* Symbol look-up.  */
@@ -2121,7 +1953,7 @@ remote_check_symbols (struct objfile *ob
   struct minimal_symbol *sym;
   int end;
 
-  if (remote_protocol_qSymbol.support == PACKET_DISABLE)
+  if (remote_protocol_packets[PACKET_qSymbol].support == PACKET_DISABLE)
     return;
 
   msg   = alloca (rs->remote_packet_size);
@@ -2131,7 +1963,7 @@ remote_check_symbols (struct objfile *ob
 
   putpkt ("qSymbol::");
   getpkt (reply, rs->remote_packet_size, 0);
-  packet_ok (reply, &remote_protocol_qSymbol);
+  packet_ok (reply, &remote_protocol_packets[PACKET_qSymbol]);
 
   while (strncmp (reply, "qSymbol:", 8) == 0)
     {
@@ -2450,7 +2282,7 @@ remote_vcont_probe (struct remote_state 
 	buf[0] = 0;
     }
 
-  packet_ok (buf, &remote_protocol_vcont);
+  packet_ok (buf, &remote_protocol_packets[PACKET_vCont]);
 }
 
 /* Resume the remote inferior by using a "vCont" packet.  The thread
@@ -2474,10 +2306,10 @@ remote_vcont_resume (ptid_t ptid, int st
   buf = xmalloc (rs->remote_packet_size);
   old_cleanup = make_cleanup (xfree, buf);
 
-  if (remote_protocol_vcont.support == PACKET_SUPPORT_UNKNOWN)
+  if (remote_protocol_packets[PACKET_vCont].support == PACKET_SUPPORT_UNKNOWN)
     remote_vcont_probe (rs, buf);
 
-  if (remote_protocol_vcont.support == PACKET_DISABLE)
+  if (remote_protocol_packets[PACKET_vCont].support == PACKET_DISABLE)
     {
       do_cleanups (old_cleanup);
       return 0;
@@ -3271,7 +3103,7 @@ remote_fetch_registers (int regnum)
 			_("Attempt to fetch a non G-packet register when this "
 			"remote.c does not support the p-packet."));
     }
-      switch (remote_protocol_p.support)
+      switch (remote_protocol_packets[PACKET_p].support)
 	{
 	case PACKET_DISABLE:
 	  break;
@@ -3284,7 +3116,7 @@ remote_fetch_registers (int regnum)
 	  if (fetch_register_using_p (regnum))
 	    {
 	      /* The stub recognized the 'p' packet.  Remember this.  */
-	      remote_protocol_p.support = PACKET_ENABLE;
+	      remote_protocol_packets[PACKET_p].support = PACKET_ENABLE;
 	      return;
 	    }
 	  else
@@ -3292,7 +3124,7 @@ remote_fetch_registers (int regnum)
 	      /* The stub does not support the 'P' packet.  Use 'G'
 	         instead, and don't try using 'P' in the future (it
 	         will just waste our time).  */
-	      remote_protocol_p.support = PACKET_DISABLE;
+	      remote_protocol_packets[PACKET_p].support = PACKET_DISABLE;
 	      break;
 	    }
 	}
@@ -3396,7 +3228,7 @@ remote_prepare_to_store (void)
   gdb_byte buf[MAX_REGISTER_SIZE];
 
   /* Make sure the entire registers array is valid.  */
-  switch (remote_protocol_P.support)
+  switch (remote_protocol_packets[PACKET_P].support)
     {
     case PACKET_DISABLE:
     case PACKET_SUPPORT_UNKNOWN:
@@ -3448,7 +3280,7 @@ remote_store_registers (int regnum)
 
   if (regnum >= 0)
     {
-      switch (remote_protocol_P.support)
+      switch (remote_protocol_packets[PACKET_P].support)
 	{
 	case PACKET_DISABLE:
 	  break;
@@ -3461,7 +3293,7 @@ remote_store_registers (int regnum)
 	  if (store_register_using_P (regnum))
 	    {
 	      /* The stub recognized the 'P' packet.  Remember this.  */
-	      remote_protocol_P.support = PACKET_ENABLE;
+	      remote_protocol_packets[PACKET_P].support = PACKET_ENABLE;
 	      return;
 	    }
 	  else
@@ -3469,7 +3301,7 @@ remote_store_registers (int regnum)
 	      /* The stub does not support the 'P' packet.  Use 'G'
 	         instead, and don't try using 'P' in the future (it
 	         will just waste our time).  */
-	      remote_protocol_P.support = PACKET_DISABLE;
+	      remote_protocol_packets[PACKET_P].support = PACKET_DISABLE;
 	      break;
 	    }
 	}
@@ -3574,7 +3406,7 @@ check_binary_download (CORE_ADDR addr)
 {
   struct remote_state *rs = get_remote_state ();
 
-  switch (remote_protocol_binary_download.support)
+  switch (remote_protocol_packets[PACKET_X].support)
     {
     case PACKET_DISABLE:
       break;
@@ -3601,14 +3433,14 @@ check_binary_download (CORE_ADDR addr)
 	    if (remote_debug)
 	      fprintf_unfiltered (gdb_stdlog,
 				  "binary downloading NOT suppported by target\n");
-	    remote_protocol_binary_download.support = PACKET_DISABLE;
+	    remote_protocol_packets[PACKET_X].support = PACKET_DISABLE;
 	  }
 	else
 	  {
 	    if (remote_debug)
 	      fprintf_unfiltered (gdb_stdlog,
 				  "binary downloading suppported by target\n");
-	    remote_protocol_binary_download.support = PACKET_ENABLE;
+	    remote_protocol_packets[PACKET_X].support = PACKET_ENABLE;
 	  }
 	break;
       }
@@ -3658,7 +3490,7 @@ remote_write_bytes (CORE_ADDR memaddr, g
   /* Append "[XM]".  Compute a best guess of the number of bytes
      actually transfered.  */
   p = buf;
-  switch (remote_protocol_binary_download.support)
+  switch (remote_protocol_packets[PACKET_X].support)
     {
     case PACKET_ENABLE:
       *p++ = 'X';
@@ -3703,7 +3535,7 @@ remote_write_bytes (CORE_ADDR memaddr, g
 
   /* Append the packet body.  */
   payload_start = p;
-  switch (remote_protocol_binary_download.support)
+  switch (remote_protocol_packets[PACKET_X].support)
     {
     case PACKET_ENABLE:
       /* Binary mode.  Send target system values byte by byte, in
@@ -4490,7 +4322,7 @@ remote_insert_breakpoint (CORE_ADDR addr
      fails, and the user has explicitly requested the Z support then
      report an error, otherwise, mark it disabled and go on.  */
 
-  if (remote_protocol_Z[Z_PACKET_SOFTWARE_BP].support != PACKET_DISABLE)
+  if (remote_protocol_packets[PACKET_Z0].support != PACKET_DISABLE)
     {
       char *buf = alloca (rs->remote_packet_size);
       char *p = buf;
@@ -4506,7 +4338,7 @@ remote_insert_breakpoint (CORE_ADDR addr
       putpkt (buf);
       getpkt (buf, rs->remote_packet_size, 0);
 
-      switch (packet_ok (buf, &remote_protocol_Z[Z_PACKET_SOFTWARE_BP]))
+      switch (packet_ok (buf, &remote_protocol_packets[PACKET_Z0]))
 	{
 	case PACKET_ERROR:
 	  return -1;
@@ -4542,7 +4374,7 @@ remote_remove_breakpoint (CORE_ADDR addr
   struct remote_state *rs = get_remote_state ();
   int bp_size;
 
-  if (remote_protocol_Z[Z_PACKET_SOFTWARE_BP].support != PACKET_DISABLE)
+  if (remote_protocol_packets[PACKET_Z0].support != PACKET_DISABLE)
     {
       char *buf = alloca (rs->remote_packet_size);
       char *p = buf;
@@ -4597,10 +4429,10 @@ remote_insert_watchpoint (CORE_ADDR addr
   char *p;
   enum Z_packet_type packet = watchpoint_to_Z_packet (type);
 
-  if (remote_protocol_Z[packet].support == PACKET_DISABLE)
+  if (remote_protocol_packets[PACKET_Z0 + packet].support == PACKET_DISABLE)
     error (_("Can't set hardware watchpoints without the '%s' (%s) packet."),
-	   remote_protocol_Z[packet].name,
-	   remote_protocol_Z[packet].title);
+	   remote_protocol_packets[PACKET_Z0 + packet].name,
+	   remote_protocol_packets[PACKET_Z0 + packet].title);
 
   sprintf (buf, "Z%x,", packet);
   p = strchr (buf, '\0');
@@ -4611,7 +4443,7 @@ remote_insert_watchpoint (CORE_ADDR addr
   putpkt (buf);
   getpkt (buf, rs->remote_packet_size, 0);
 
-  switch (packet_ok (buf, &remote_protocol_Z[packet]))
+  switch (packet_ok (buf, &remote_protocol_packets[PACKET_Z0 + packet]))
     {
     case PACKET_ERROR:
     case PACKET_UNKNOWN:
@@ -4632,10 +4464,10 @@ remote_remove_watchpoint (CORE_ADDR addr
   char *p;
   enum Z_packet_type packet = watchpoint_to_Z_packet (type);
 
-  if (remote_protocol_Z[packet].support == PACKET_DISABLE)
+  if (remote_protocol_packets[PACKET_Z0 + packet].support == PACKET_DISABLE)
     error (_("Can't clear hardware watchpoints without the '%s' (%s) packet."),
-	   remote_protocol_Z[packet].name,
-	   remote_protocol_Z[packet].title);
+	   remote_protocol_packets[PACKET_Z0 + packet].name,
+	   remote_protocol_packets[PACKET_Z0 + packet].title);
 
   sprintf (buf, "z%x,", packet);
   p = strchr (buf, '\0');
@@ -4645,7 +4477,7 @@ remote_remove_watchpoint (CORE_ADDR addr
   putpkt (buf);
   getpkt (buf, rs->remote_packet_size, 0);
 
-  switch (packet_ok (buf, &remote_protocol_Z[packet]))
+  switch (packet_ok (buf, &remote_protocol_packets[PACKET_Z0 + packet]))
     {
     case PACKET_ERROR:
     case PACKET_UNKNOWN:
@@ -4723,10 +4555,10 @@ remote_insert_hw_breakpoint (CORE_ADDR a
 
   BREAKPOINT_FROM_PC (&addr, &len);
 
-  if (remote_protocol_Z[Z_PACKET_HARDWARE_BP].support == PACKET_DISABLE)
+  if (remote_protocol_packets[PACKET_Z1].support == PACKET_DISABLE)
     error (_("Can't set hardware breakpoint without the '%s' (%s) packet."),
-	   remote_protocol_Z[Z_PACKET_HARDWARE_BP].name,
-	   remote_protocol_Z[Z_PACKET_HARDWARE_BP].title);
+	   remote_protocol_packets[PACKET_Z1].name,
+	   remote_protocol_packets[PACKET_Z1].title);
 
   *(p++) = 'Z';
   *(p++) = '1';
@@ -4739,7 +4571,7 @@ remote_insert_hw_breakpoint (CORE_ADDR a
   putpkt (buf);
   getpkt (buf, rs->remote_packet_size, 0);
 
-  switch (packet_ok (buf, &remote_protocol_Z[Z_PACKET_HARDWARE_BP]))
+  switch (packet_ok (buf, &remote_protocol_packets[PACKET_Z1]))
     {
     case PACKET_ERROR:
     case PACKET_UNKNOWN:
@@ -4765,10 +4597,10 @@ remote_remove_hw_breakpoint (CORE_ADDR a
 
   BREAKPOINT_FROM_PC (&addr, &len);
 
-  if (remote_protocol_Z[Z_PACKET_HARDWARE_BP].support == PACKET_DISABLE)
+  if (remote_protocol_packets[PACKET_Z1].support == PACKET_DISABLE)
     error (_("Can't clear hardware breakpoint without the '%s' (%s) packet."),
-	   remote_protocol_Z[Z_PACKET_HARDWARE_BP].name,
-	   remote_protocol_Z[Z_PACKET_HARDWARE_BP].title);
+	   remote_protocol_packets[PACKET_Z1].name,
+	   remote_protocol_packets[PACKET_Z1].title);
 
   *(p++) = 'z';
   *(p++) = '1';
@@ -4781,7 +4613,7 @@ remote_remove_hw_breakpoint (CORE_ADDR a
   putpkt(buf);
   getpkt (buf, rs->remote_packet_size, 0);
 
-  switch (packet_ok (buf, &remote_protocol_Z[Z_PACKET_HARDWARE_BP]))
+  switch (packet_ok (buf, &remote_protocol_packets[PACKET_Z1]))
     {
     case PACKET_ERROR:
     case PACKET_UNKNOWN:
@@ -4983,7 +4815,7 @@ remote_xfer_partial (struct target_ops *
       break;
 
     case TARGET_OBJECT_AUXV:
-      if (remote_protocol_qPart_auxv.support != PACKET_DISABLE)
+      if (remote_protocol_packets[PACKET_qPart_auxv].support != PACKET_DISABLE)
 	{
 	  unsigned int total = 0;
 	  while (len > 0)
@@ -4998,7 +4830,8 @@ remote_xfer_partial (struct target_ops *
 		return total > 0 ? total : i;
 	      buf2[0] = '\0';
 	      getpkt (buf2, rs->remote_packet_size, 0);
-	      if (packet_ok (buf2, &remote_protocol_qPart_auxv) != PACKET_OK)
+	      if (packet_ok (buf2, &remote_protocol_packets[PACKET_qPart_auxv])
+		  != PACKET_OK)
 		return total > 0 ? total : -1;
 	      if (buf2[0] == 'O' && buf2[1] == 'K' && buf2[2] == '\0')
 		break;		/* Got EOF indicator.  */
@@ -5308,7 +5141,7 @@ remote_pid_to_str (ptid_t ptid)
 static CORE_ADDR
 remote_get_thread_local_address (ptid_t ptid, CORE_ADDR lm, CORE_ADDR offset)
 {
-  if (remote_protocol_qGetTLSAddr.support != PACKET_DISABLE)
+  if (remote_protocol_packets[PACKET_qGetTLSAddr].support != PACKET_DISABLE)
     {
       struct remote_state *rs = get_remote_state ();
       char *buf = alloca (rs->remote_packet_size);
@@ -5326,7 +5159,7 @@ remote_get_thread_local_address (ptid_t 
 
       putpkt (buf);
       getpkt (buf, rs->remote_packet_size, 0);
-      result = packet_ok (buf, &remote_protocol_qGetTLSAddr);
+      result = packet_ok (buf, &remote_protocol_packets[PACKET_qGetTLSAddr]);
       if (result == PACKET_OK)
 	{
 	  ULONGEST result;
@@ -5725,87 +5558,87 @@ Show the maximum size of the address (in
 			   NULL, /* FIXME: i18n: */
 			   &setlist, &showlist);
 
-  add_packet_config_cmd (&remote_protocol_binary_download,
+  add_packet_config_cmd (&remote_protocol_packets[PACKET_X],
 			 "X", "binary-download",
-			 set_remote_protocol_binary_download_cmd,
-			 show_remote_protocol_binary_download_cmd,
+			 set_remote_protocol_packet_cmd,
+			 show_remote_protocol_packet_cmd,
 			 &remote_set_cmdlist, &remote_show_cmdlist,
 			 1);
 
-  add_packet_config_cmd (&remote_protocol_vcont,
+  add_packet_config_cmd (&remote_protocol_packets[PACKET_vCont],
 			 "vCont", "verbose-resume",
-			 set_remote_protocol_vcont_packet_cmd,
-			 show_remote_protocol_vcont_packet_cmd,
+			 set_remote_protocol_packet_cmd,
+			 show_remote_protocol_packet_cmd,
 			 &remote_set_cmdlist, &remote_show_cmdlist,
 			 0);
 
-  add_packet_config_cmd (&remote_protocol_qSymbol,
+  add_packet_config_cmd (&remote_protocol_packets[PACKET_qSymbol],
 			 "qSymbol", "symbol-lookup",
-			 set_remote_protocol_qSymbol_packet_cmd,
-			 show_remote_protocol_qSymbol_packet_cmd,
+			 set_remote_protocol_packet_cmd,
+			 show_remote_protocol_packet_cmd,
 			 &remote_set_cmdlist, &remote_show_cmdlist,
 			 0);
 
-  add_packet_config_cmd (&remote_protocol_P,
+  add_packet_config_cmd (&remote_protocol_packets[PACKET_P],
 			 "P", "set-register",
-			 set_remote_protocol_P_packet_cmd,
-			 show_remote_protocol_P_packet_cmd,
+			 set_remote_protocol_packet_cmd,
+			 show_remote_protocol_packet_cmd,
 			 &remote_set_cmdlist, &remote_show_cmdlist,
 			 1);
 
-  add_packet_config_cmd (&remote_protocol_p,
+  add_packet_config_cmd (&remote_protocol_packets[PACKET_p],
 			 "p", "fetch-register",
-			 set_remote_protocol_p_packet_cmd,
-			 show_remote_protocol_p_packet_cmd,
+			 set_remote_protocol_packet_cmd,
+			 show_remote_protocol_packet_cmd,
 			 &remote_set_cmdlist, &remote_show_cmdlist,
 			 1);
 
-  add_packet_config_cmd (&remote_protocol_Z[Z_PACKET_SOFTWARE_BP],
+  add_packet_config_cmd (&remote_protocol_packets[PACKET_Z0],
 			 "Z0", "software-breakpoint",
-			 set_remote_protocol_Z_software_bp_packet_cmd,
-			 show_remote_protocol_Z_software_bp_packet_cmd,
+			 set_remote_protocol_packet_cmd,
+			 show_remote_protocol_packet_cmd,
 			 &remote_set_cmdlist, &remote_show_cmdlist,
 			 0);
 
-  add_packet_config_cmd (&remote_protocol_Z[Z_PACKET_HARDWARE_BP],
+  add_packet_config_cmd (&remote_protocol_packets[PACKET_Z1],
 			 "Z1", "hardware-breakpoint",
-			 set_remote_protocol_Z_hardware_bp_packet_cmd,
-			 show_remote_protocol_Z_hardware_bp_packet_cmd,
+			 set_remote_protocol_packet_cmd,
+			 show_remote_protocol_packet_cmd,
 			 &remote_set_cmdlist, &remote_show_cmdlist,
 			 0);
 
-  add_packet_config_cmd (&remote_protocol_Z[Z_PACKET_WRITE_WP],
+  add_packet_config_cmd (&remote_protocol_packets[PACKET_Z2],
 			 "Z2", "write-watchpoint",
-			 set_remote_protocol_Z_write_wp_packet_cmd,
-			 show_remote_protocol_Z_write_wp_packet_cmd,
+			 set_remote_protocol_packet_cmd,
+			 show_remote_protocol_packet_cmd,
 			 &remote_set_cmdlist, &remote_show_cmdlist,
 			 0);
 
-  add_packet_config_cmd (&remote_protocol_Z[Z_PACKET_READ_WP],
+  add_packet_config_cmd (&remote_protocol_packets[PACKET_Z3],
 			 "Z3", "read-watchpoint",
-			 set_remote_protocol_Z_read_wp_packet_cmd,
-			 show_remote_protocol_Z_read_wp_packet_cmd,
+			 set_remote_protocol_packet_cmd,
+			 show_remote_protocol_packet_cmd,
 			 &remote_set_cmdlist, &remote_show_cmdlist,
 			 0);
 
-  add_packet_config_cmd (&remote_protocol_Z[Z_PACKET_ACCESS_WP],
+  add_packet_config_cmd (&remote_protocol_packets[PACKET_Z4],
 			 "Z4", "access-watchpoint",
-			 set_remote_protocol_Z_access_wp_packet_cmd,
-			 show_remote_protocol_Z_access_wp_packet_cmd,
+			 set_remote_protocol_packet_cmd,
+			 show_remote_protocol_packet_cmd,
 			 &remote_set_cmdlist, &remote_show_cmdlist,
 			 0);
 
-  add_packet_config_cmd (&remote_protocol_qPart_auxv,
+  add_packet_config_cmd (&remote_protocol_packets[PACKET_qPart_auxv],
 			 "qPart_auxv", "read-aux-vector",
-			 set_remote_protocol_qPart_auxv_packet_cmd,
-			 show_remote_protocol_qPart_auxv_packet_cmd,
+			 set_remote_protocol_packet_cmd,
+			 show_remote_protocol_packet_cmd,
 			 &remote_set_cmdlist, &remote_show_cmdlist,
 			 0);
 
-  add_packet_config_cmd (&remote_protocol_qGetTLSAddr,
+  add_packet_config_cmd (&remote_protocol_packets[PACKET_qGetTLSAddr],
 			 "qGetTLSAddr", "get-thread-local-storage-address",
-			 set_remote_protocol_qGetTLSAddr_packet_cmd,
-			 show_remote_protocol_qGetTLSAddr_packet_cmd,
+			 set_remote_protocol_packet_cmd,
+			 show_remote_protocol_packet_cmd,
 			 &remote_set_cmdlist, &remote_show_cmdlist,
 			 0);
 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]