Re: Why no hwatch command in gdb ?

Daniel Jacobowitz
2011-03-11T17:48:47Z

On Thu, Mar 10, 2011 at 02:44:53PM +0100, Jan Kratochvil wrote:
> Hi Robert,
>
> On Thu, 10 Mar 2011 13:18:06 +0100, robert song wrote:
> > Well, I am confused with the gdb hardware watchpoint support in x86
> > arch.
>
> x86* is special as its debug registers capabilities are complicated - it can
> watch 1/2/4/8 bytes and there are 4 of them. GDB supports aliasing, so if you
> watch string[0] and string[1] GDB will merge it and will watch 2 bytes at
> &string[0].

FWIW, I don't consider this unusually complicated. MIPS, Power, and
other architectures all have hardware watchpoint features that you
can't express to GDB at all. I do consider GDB's automatic combining
of watchpoints to be unusually complicated.

On Fri, Mar 11, 2011 at 08:58:11AM +0100, Philippe Waroquiers wrote:
> >Why can't this be negotiated between gdb and the remote?
> >Then the in-valgrind gdbserver could just report unlimited and the user
> >wouldn't have to fool around.
> This is for sure the best approach. This would be a new approach,
> that would be a general solution, matching various hardware (and
> not only the "Valgrind hardware"). I suppose the same approach
> should be done for "non remote" hardware watchpoints.

I am strongly of the opinion that we should support advanced
watchpoint capabilities. But the details of what can be watched on a
given target are complicated. Either we need a way to tell GDB what
the requirements are, flexibly, or we need to ask the target to
validate requests.

Every architecture has unique watchpoint features. For instance, on
MIPS you can watch an address mask, and you can choose to match a
specific ASID or globally. A good MIPS graphical debugger ought to be
able to pop up a dialog that lets you configure these settings. But
they share resources with GDB's expression watchpoints.

It's an interesting problem :-)

--
Daniel Jacobowitz
Mentor Graphics