From 3788aec75a91b4b6e10255f20aaa649ddbfdf78c Mon Sep 17 00:00:00 2001 From: Luis Machado Date: Fri, 24 Feb 2012 15:09:41 +0000 Subject: [PATCH] 2012-02-24 Luis Machado * remote.c (remote_state) : New field. (PACKET_ConditionalBreakpoints): New enum. (remote_cond_breakpoint_feature): New function. (remote_protocol_features): Add new ConditionalBreakpoints entry. (remote_supports_cond_breakpoints): New function. (_initialize_remote): Add new packet configuration for target-side conditional breakpoints. --- gdb/ChangeLog | 10 ++++++++++ gdb/remote.c | 30 ++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index e60b402..516617b 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,15 @@ 2012-02-24 Luis Machado + * remote.c (remote_state) : New field. + (PACKET_ConditionalBreakpoints): New enum. + (remote_cond_breakpoint_feature): New function. + (remote_protocol_features): Add new ConditionalBreakpoints entry. + (remote_supports_cond_breakpoints): New function. + (_initialize_remote): Add new packet configuration for + target-side conditional breakpoints. + +2012-02-24 Luis Machado + * NEWS: Mention target-side conditional breakpoint support, new condition-evaluation breakpoint subcommand and remote packet extensions. diff --git a/gdb/remote.c b/gdb/remote.c index 14c343b..e094917 100644 --- a/gdb/remote.c +++ b/gdb/remote.c @@ -315,6 +315,10 @@ struct remote_state /* True if the stub reports support for conditional tracepoints. */ int cond_tracepoints; + /* True if the stub reports support for target-side breakpoint + conditions. */ + int cond_breakpoints; + /* True if the stub reports support for fast tracepoints. */ int fast_tracepoints; @@ -1263,6 +1267,7 @@ enum { PACKET_qXfer_siginfo_write, PACKET_qAttached, PACKET_ConditionalTracepoints, + PACKET_ConditionalBreakpoints, PACKET_FastTracepoints, PACKET_StaticTracepoints, PACKET_InstallInTrace, @@ -3717,6 +3722,16 @@ remote_cond_tracepoint_feature (const struct protocol_feature *feature, } static void +remote_cond_breakpoint_feature (const struct protocol_feature *feature, + enum packet_support support, + const char *value) +{ + struct remote_state *rs = get_remote_state (); + + rs->cond_breakpoints = (support == PACKET_ENABLE); +} + +static void remote_fast_tracepoint_feature (const struct protocol_feature *feature, enum packet_support support, const char *value) @@ -3810,6 +3825,8 @@ static struct protocol_feature remote_protocol_features[] = { PACKET_qXfer_siginfo_write }, { "ConditionalTracepoints", PACKET_DISABLE, remote_cond_tracepoint_feature, PACKET_ConditionalTracepoints }, + { "ConditionalBreakpoints", PACKET_DISABLE, remote_cond_breakpoint_feature, + PACKET_ConditionalBreakpoints }, { "FastTracepoints", PACKET_DISABLE, remote_fast_tracepoint_feature, PACKET_FastTracepoints }, { "StaticTracepoints", PACKET_DISABLE, remote_static_tracepoint_feature, @@ -9853,6 +9870,14 @@ remote_supports_cond_tracepoints (void) return rs->cond_tracepoints; } +static int +remote_supports_cond_breakpoints (void) +{ + struct remote_state *rs = get_remote_state (); + + return rs->cond_breakpoints; +} + int remote_supports_fast_tracepoints (void) { @@ -11273,6 +11298,11 @@ Show the maximum size of the address (in bits) in a memory packet."), NULL, add_packet_config_cmd (&remote_protocol_packets[PACKET_ConditionalTracepoints], "ConditionalTracepoints", "conditional-tracepoints", 0); + + add_packet_config_cmd (&remote_protocol_packets[PACKET_ConditionalBreakpoints], + "ConditionalBreakpoints", + "conditional-breakpoints", 0); + add_packet_config_cmd (&remote_protocol_packets[PACKET_FastTracepoints], "FastTracepoints", "fast-tracepoints", 0); -- 2.7.4