This is the mail archive of the gdb@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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




Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]