diff --git a/gdb/ChangeLog b/gdb/ChangeLog index e60b402c11..516617bd12 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,13 @@ +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, diff --git a/gdb/remote.c b/gdb/remote.c index 14c343bed6..e094917636 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, @@ -3716,6 +3721,16 @@ remote_cond_tracepoint_feature (const struct protocol_feature *feature, rs->cond_tracepoints = (support == PACKET_ENABLE); } +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, @@ -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);