This is the mail archive of the
gdb@sources.redhat.com
mailing list for the GDB project.
Re: Hardware Breakpoints
> Hi,
>
>
>> > I'm trying to use hardware breakpoints in gdb (in the new
>> > gdbarchitecture stuff) and cannot figure out how it all works. Are their
>> > any gdbarch things for hardware breakpoints and watchpoints?
>> >
>> > Are there any targets that use hardware breakpoints and watchpoints in
>> > the new gdbarch stuff?
>
>>
>> No. But there is a reason.
>>
>> The existing h/w breakpoint macros should be moved to the target vector
>> and not the architecture vector. This is because the target, and not
>> the architecture, determines the presence of a breakpoint mechanism.
>>
>> Unfortunatly, so far, no one has made this change, sigh!
>>
>> Interested?
>
>
> hmm, I have an embedded target and I connect to it via a JTAG box, so
> the target has hardware breakpoints, I assume we need to define them in
> avr-tdep.c and put the hooks in the correct place to tie it together?
>
> What I see at the moment is the breakpoint.c stuff has no connection to
> the avr-tdep.c file and I cannot see how to define something in avr-tdep
> and let breakpoint.c use it.
>
> Do you have some ideas about how this is supposed to work?
At this point, things get confusing. I'll answer the ``supposed to
work'' question (how it works, is people define those macros).
Two possabilities:
a. You're connecting to a remote target that supports the hardware
breakpoint/watchpoint mechanism.
GDB just sends h/w breakpoint requests through to the target. For this
to work you need to hardwire (:-() up the hw_* functions in remote.c.
(This shouldn't be hardwired. Instead it should be part of the target
vector.)
b. Your target doesn't have a remote h/w breakpoint mechanism but does
have access to the h/w breakpoint registers.
Implements h/w breakpoints locally by directly manipulating the relevant
registers (i386 does this). For this to work you hardwire (:-() code in
your *-tdep.c file to those macros.
(This shouldn't be hardwired either. Instead, the target vector,
realising that it can't implement h/w breakpoints directly should ask
the architecture vector for assistance.)
Andrew