Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Luis Gustavo <luis_gustavo@mentor.com>
To: Pedro Alves <palves@redhat.com>
Cc: Tom Tromey <tromey@redhat.com>, gdb-patches@sourceware.org
Subject: Re: [rfc target-side break conditions 3/5 v2]  GDB-side changes
Date: Wed, 08 Feb 2012 20:56:00 -0000	[thread overview]
Message-ID: <4F32E167.6050600@mentor.com> (raw)
In-Reply-To: <4F32CDF2.8090906@redhat.com>

Fixed all the other comments...

On 02/08/2012 05:33 PM, Pedro Alves wrote:
>>   /* Delete a breakpoint and clean up all traces of it in the data
>> -   structures.  */
>> +   structures.  If UPDATE is true, proceed to update the list of
>> +   locations, otherwise don't update it.  */
>>
>> -void
>> -delete_breakpoint (struct breakpoint *bpt)
>> +static void
>> +delete_breakpoint_1 (struct breakpoint *bpt, int update)
>>   {
>>     struct breakpoint *b;
>>
>> @@ -11955,8 +12451,12 @@ delete_breakpoint (struct breakpoint *bp
>>        belong to this breakpoint.  Do this before freeing the breakpoint
>>        itself, since remove_breakpoint looks at location's owner.  It
>>        might be better design to have location completely
>> -     self-contained, but it's not the case now.  */
>> -  update_global_location_list (0);
>> +     self-contained, but it's not the case now.
>> +
>> +     If we have conditions being evaluated on the target, we will also
>> +     synchronize the list of conditions due to a deleted duplicate
>> +     breakpoint.  */
>> +  update_global_location_list (update);
>>
>>     bpt->ops->dtor (bpt);
>>     /* On the chance that someone will soon try again to delete this
>> @@ -11965,6 +12465,24 @@ delete_breakpoint (struct breakpoint *bp
>>     xfree (bpt);
>>   }
>>
>> +/* Delete a breakpoint but don't update the list of locations.  */
>> +
>> +void
>> +delete_breakpoint (struct breakpoint *bpt)
>> +{
>> +  delete_breakpoint_1 (bpt, 0);
>> +}
>> +
>> +/* Delete a breakpoint and update the list of locations.  We use
>> +   this one to synchronize the list of conditions with the target
>> +   in case the target is responsible for evaluating them.  */
>> +
>> +void
>> +delete_breakpoint_with_update (struct breakpoint *bpt)
>> +{
>> +  delete_breakpoint_1 (bpt, 1);
>> +}
>> +
>>   static void
>>   do_delete_breakpoint_cleanup (void *b)
>>   {
>> @@ -12017,7 +12535,10 @@ iterate_over_related_breakpoints (struct
>>   static void
>>   do_delete_breakpoint (struct breakpoint *b, void *ignore)
>>   {
>> -  delete_breakpoint (b);
>> +  if (is_breakpoint (b))
>> +    delete_breakpoint_with_update (b);
>> +  else
>> +    delete_breakpoint (b);
>>   }
>>
>>   /* A callback for map_breakpoint_numbers that calls
>> @@ -12056,7 +12577,7 @@ delete_command (char *arg, int from_tty)
>>   	{
>>   	  ALL_BREAKPOINTS_SAFE (b, b_tmp)
>>   	    if (user_breakpoint_p (b))
>> -	      delete_breakpoint (b);
>> +	      do_delete_breakpoint (b, NULL);
>>   	}
>>       }
>>     else
>> @@ -12840,6 +13361,9 @@ disable_breakpoint (struct breakpoint *b
>>
>>     bpt->enable_state = bp_disabled;
>>
>> +  /* Mark breakpoint locations modified.  */
>> +  mark_breakpoint_modified (bpt);
>> +
>>     if (target_supports_enable_disable_tracepoint ()
>>         &&  current_trace_status ()->running&&  is_tracepoint (bpt))
>>       {
>> @@ -12849,7 +13373,10 @@ disable_breakpoint (struct breakpoint *b
>>   	target_disable_tracepoint (location);
>>       }
>>
>> -  update_global_location_list (0);
>> +  if (is_breakpoint (bpt))
>> +    update_global_location_list (1);
>> +  else
>> +    update_global_location_list (0);
>
> I'm confused.  How does this (and all similar places) address the issued I
> pointed out before?  If you're passing one to update_global_location_list
> when deleting a breakpoint, you're pretty much defeating the whole
> purpose of the update_global_location_list's argument in the first place.
>

Updates will only take place when the user explicitly removes/disables a 
breakpoint. Functions that are deleting breakpoints (like 
remove_thread_event_breakpoints) won't cause insertion of any 
breakpoints since they go through the "delete_breakpoint" path, not the 
delete_breakpoint_with_update one.

Is disabling breakpoints also something we would like to do without 
triggering insertions? If so, i'm inclined to go with the same solution 
as for deleting user breakpoints.


  reply	other threads:[~2012-02-08 20:56 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-01-27 20:34 Luis Gustavo
2012-02-06 20:27 ` Tom Tromey
2012-02-07 11:16   ` Luis Gustavo
2012-02-08 19:33     ` Pedro Alves
2012-02-08 20:56       ` Luis Gustavo [this message]
2012-02-09 12:56         ` Pedro Alves
2012-02-22 15:29           ` Luis Gustavo
2012-02-23 17:38             ` Pedro Alves
2012-02-24 12:20               ` Luis Gustavo
2012-02-24 13:01                 ` Pedro Alves
2012-02-24 13:04                   ` Luis Gustavo
2012-02-09 13:00     ` Pedro Alves
2012-02-07 19:13   ` Pedro Alves
2012-02-07 19:26     ` Stan Shebs
2012-02-07 22:08 ` Stan Shebs
2012-02-08 23:13   ` Luis Gustavo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4F32E167.6050600@mentor.com \
    --to=luis_gustavo@mentor.com \
    --cc=gdb-patches@sourceware.org \
    --cc=palves@redhat.com \
    --cc=tromey@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox