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]

Re: [PATCH] Add 'reverse' capability query to remote protocol (qSupported).


Should we need update them?
static int remote_target_can_reverse = 1;

static int
remote_can_execute_reverse (void)
{
  return remote_target_can_reverse;
}

Thanks,
Hui

On Tue, Sep 1, 2009 at 03:56, Michael Snyder<msnyder@vmware.com> wrote:
> Following discussion, this patch adds feature capability handling
> (enable, disable, and automatic "qSupported" query) for the reverse
> execution packets "bs" (backward step) and "bc" (backward continue
> in the gdb remote protocol.
>
> Cc:ing Jakob and Greg, whose remote targets may be affected.
> What you guys will want to do is have your remote targets
> recognize the "qSupported" query from gdb, and respond with:
>
> ? ? ? ?ReverseContinue+;ReverseStep+
>
> This will tell gdb that your targets support those two commands.
>
> Otherwise, they default to "disabled", and a user would need
> to enable them with these commands (which might be added to a
> .gdbinit file):
>
> ? ? ? ?set remote reverse-continue on
> ? ? ? ?set remote reverse-step on
>
> Pedro, does this look like what you expected?
>
> Michael
>
>
> 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.
> ? ? ? ?(_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 ? ?31 Aug 2009 19:55:21 -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)
> @@ -9165,6 +9179,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);
>
>
>


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