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 watchpoints for ppc


Wolfgang,

Are you running GDB on your PowerPC Target? Or are you using a stub of some kind?

The Stub isnt GDB.

What PowerPC chip are you talking about, they all have different features when it comes to debug units, there is no standard "watchpoint" unit that all PowerPC's have.

I would guess you are using GDB on you PC, and it is talking to your target using the Remote Serial Protocol. If so, the place for your watchpoint code is in the stub, not in GDB. The remote serial protocol already has support for hardware watchpoints, my stub on PowerPC uses it to implement them for an MPC860 Family processor. You need to add the support to your stub, alternatively write some macros in GDB to manually set up the watchpoint units, using register read/write operations. GDB wont know you have done this, but if when they hit its causes your stub to stop you have achieved what you want.

As for the know how, the MPC860 documentation details that family of processor's watchpoint unit, and what it does. Its cryptic, and you have to trial and error it a bit, but that is usually the way with these things. Your processor should have a document that describes if it has a hardware watchpoint unit, and if so how to set it up. Then it is a matter of implementing the Remote Serial protocol watchpoint commands.

Steven.


Wolfgang Schmieder wrote:


Hello Cal,

thanks for the hint. I caught the problem in the meanwhile by checking the respective address in piece of code which is called very often. It took a lot of time and luck.
This way of catching bugs is really hard. Do you know how I could
obtain the know how to implement hardware watchpoints into the gdb ?


Regards
	Wolfgang


Am Dienstag, 6. Juli 2004 22:31 schrieben Sie:


Wolfgang,
We had a similar problem here with some benchmarks we were doing. A
particular address was being changed at random and we had to find
what was doing it. So we put a watchpoint on the address and when
it changed we stopped the process and did a bt to find the culprit.
It took a while but it worked. This was on a PPC 860 target board
using a cross built gdb and gdbserver. So it can be done it just
takes time and patience.

The only processor family that I know that has hardware watchpoints is
x86. We work here with x86, ppc, mips, arm, xscale, crusoe, and sh.

Cal

Wolfgang Schmieder wrote:


Hello Cal,

thanks for your anwer, even if it's bad news for me !


Regards Wolfgang

Am Dienstag, 6. Juli 2004 16:45 schrieb Cal Erickson:


Wolfgang,
From what I know there are no hardware watchpoints available on the PPC
target boards. You might just try watch which will create a software
watchpoint. These do work on PPC processors.

Cal

Wolfgang Schmieder wrote:


Hello,

is there anybody who knows how I can set hardware watchpoints on ppc
boards ? I have a mpc855 board running a multithreaded application. It
appears that one thread (always the same thread) has a corrupted stack
(always at the same address). I guess I need to set a hardware
watchpoint in a remote debugging session to find the piece of code
which is corrupting the stack.

There is one gdb mailing list thread about "supporting hw break/watch
for embedded ppc", which makes me think that there is at least a patch
or workaround available to set hardware watchpoints on a ppc board.

Thanks,

Wolfgang









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