[PATCH] hardware watchpoints turned off, inferior not yet started

Pedro Alves palves@redhat.com
Wed Oct 16 12:32:00 GMT 2013


On 10/16/2013 10:39 AM, Andrew Burgess wrote:
> The following seems confusing to me:
> 
> $ gdb -q watch.x
> Reading symbols from /some/path/to/watch.x...done.
> (gdb) set can-use-hw-watchpoints 0
> (gdb) watch -l my_var 
> Hardware watchpoint 1: -location my_var
> (gdb) 
> 
> Notice that despite turning hardware watchpoints off
> the watchpoint created is reported to be a hardware
> watchpoint.  Once I actually start the inferior the
> watchpoint is downgraded to a software watchpoint,
> but still, this feels like it might cause confusion,
> and is pretty easy to fix.

It seems wrong to me to create it as bp_hardware_watchpoint
in the first place.  That's done in watch_command_1, with:

  if (accessflag == hw_read)
    bp_type = bp_read_watchpoint;
  else if (accessflag == hw_access)
    bp_type = bp_access_watchpoint;
  else
    bp_type = bp_hardware_watchpoint;

If "can-use-hw-watchpoints" is off, then I think it'd
be also better to prohibit creating read and access
watchpoints around here.

> @@ -1800,6 +1800,8 @@ update_watchpoint (struct watchpoint *b, int reparse)
>        /* Without execution, memory can't change.  No use to try and
>  	 set watchpoint locations.  The watchpoint will be reset when
>  	 the target gains execution, through breakpoint_re_set.  */
> +      if (!can_use_hw_watchpoints)
> +	b->base.type = bp_watchpoint;
>      }

... this change I think makes it so that access/read
watchpoints get converted to software watchpoints, which is wrong.

-- 
Pedro Alves



More information about the Gdb-patches mailing list