This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH] Add 'reverse' capability query to remote protocol (qSupported).
- From: Michael Snyder <msnyder at vmware dot com>
- To: Hui Zhu <teawater at gmail dot com>
- Cc: "gdb-patches at sourceware dot org" <gdb-patches at sourceware dot org>, Jakob Engblom <jakob at virtutech dot com>, Pedro Alves <pedro at codesourcery dot com>, Greg Law <glaw at undo-software dot com>
- Date: Mon, 31 Aug 2009 21:02:26 -0700
- Subject: Re: [PATCH] Add 'reverse' capability query to remote protocol (qSupported).
- References: <4A9C2AD3.5070904@vmware.com> <daef60380908311943u447649edy3ed031b43adaea27@mail.gmail.com>
Hui Zhu wrote:
Should we need update them?
static int remote_target_can_reverse = 1;
static int
remote_can_execute_reverse (void)
{
return remote_target_can_reverse;
}
Right! I forgot about it -- thanks for reminding me.
New diff.
2009-08-31 Michael Snyder <msnyder@vmware.com>
* remote.c (PACKET_bc, PACKET_bs): New enums.
(remote_protocol_features): Add ReverseStep, ReverseContinue.
(remote_resume): Check for reverse capability.
(remote_can_execute_reverse): Use packet config variables.
(_initialize_remote): Add packet config for "bs" and "bc" packets.
Index: remote.c
===================================================================
RCS file: /cvs/src/src/gdb/remote.c,v
retrieving revision 1.370
diff -u -p -r1.370 remote.c
--- remote.c 18 Aug 2009 16:17:16 -0000 1.370
+++ remote.c 1 Sep 2009 04:01:04 -0000
@@ -1000,6 +1000,8 @@ enum {
PACKET_qXfer_siginfo_write,
PACKET_qAttached,
PACKET_ConditionalTracepoints,
+ PACKET_bc,
+ PACKET_bs,
PACKET_MAX
};
@@ -3051,6 +3053,10 @@ static struct protocol_feature remote_pr
PACKET_qXfer_siginfo_write },
{ "ConditionalTracepoints", PACKET_DISABLE, remote_cond_tracepoint_feature,
PACKET_ConditionalTracepoints },
+ { "ReverseContinue", PACKET_DISABLE, remote_supported_packet,
+ PACKET_bc },
+ { "ReverseStep", PACKET_DISABLE, remote_supported_packet,
+ PACKET_bs },
};
static void
@@ -3818,6 +3824,14 @@ remote_resume (struct target_ops *ops,
if (info_verbose && siggnal != TARGET_SIGNAL_0)
warning (" - Can't pass signal %d to target in reverse: ignored.\n",
siggnal);
+
+ if (step &&
+ remote_protocol_packets[PACKET_bs].support == PACKET_DISABLE)
+ error ("Remote reverse-step not supported.");
+ if (!step &&
+ remote_protocol_packets[PACKET_bc].support == PACKET_DISABLE)
+ error ("Remote reverse-continue not supported.");
+
strcpy (buf, step ? "bs" : "bc");
}
else if (siggnal != TARGET_SIGNAL_0)
@@ -8730,12 +8744,14 @@ remote_command (char *args, int from_tty
help_list (remote_cmdlist, "remote ", -1, gdb_stdout);
}
-static int remote_target_can_reverse = 1;
-
static int
remote_can_execute_reverse (void)
{
- return remote_target_can_reverse;
+ if (remote_protocol_packets[PACKET_bs].support == PACKET_ENABLE
+ || remote_protocol_packets[PACKET_bc].support == PACKET_ENABLE)
+ return 1;
+ else
+ return 0;
}
static int
@@ -9165,6 +9181,12 @@ Show the maximum size of the address (in
"qGetTLSAddr", "get-thread-local-storage-address",
0);
+ add_packet_config_cmd (&remote_protocol_packets[PACKET_bc],
+ "bc", "reverse-continue", 0);
+
+ add_packet_config_cmd (&remote_protocol_packets[PACKET_bs],
+ "bs", "reverse-step", 0);
+
add_packet_config_cmd (&remote_protocol_packets[PACKET_qSupported],
"qSupported", "supported-packets", 0);