> Hello Will,

Hi Ulrich,

> I've been trying to get GDB support for hardware watchpoints/breakpoints
> going.  I've ported Matthew's GDB patch to current mainline, and am running
> this under a 2.6.37-1002-linaro-omap kernel on an IGEPv2 board.

Great - it's nice to see somebody using this stuff!

> However, something seems to be not quite working:  I'm seeing this kernel
> message on boot:
> hw-breakpoint: debug architecture 0x4 unsupported.
> and then at runtime, the result of a PTRACE_GETHBPREGS call for register 0
> is 0x04000106:
> debug architecture: 4
> watchpoint size: 0
> nr. watchpoints: 1
> nr. breakpoints: 6
> 
> This leads me to a couple of questions:
> 
> - It seems odd that the kernel says it doesn't support the debug
> architecture, but then reports to user space that 1 watchpoint and 6
> breakpoints are supported ...   GDB will never use the watchpoint, because
> the maximum watchpoint size is reported as zero, but GDB will attempt to
> use the breakpoints.  Setting a breakpoint will appear to succeed, but then
> the breakpoint just never triggers.  The kernel should IMO be more
> consistent in how unsupported configurations are handled ...

Agreed. This is an artifact of how the ptrace info register is populated.
I'll work on a fix tomorrow so that we don't report any resources when
the architecture is unsupported.

> - Why is architecture 0x4 not supported?  This seems to be the variant of
> the v7 debug architecture with memory-mapped registers.  Apparently the
> IGEP only supports this version ...  Do you know what the
> Beagle-/Pandaboard and other clones do?  What would it take to support this
> architecture variant?   Given the widespread use of those boards, it would
> be really nice if we could support hardware debugging on them ...

The memory-mapped interface is hugely unreliable in real hardware because
you have to calculate the address of the memory-mapped debug registers by
using a base and offset, which are hardcoded in some information registers.
Unfortunately, I've never found a board where these registers have been
programmed correctly so (a) I had nothing to test my code with (b) few people
would be able to use it and (c) there's not really a safe way to go around
poking random areas of memory.

> - Which hardware *is* supported?  Can you recommend a board I should be
> using to verify GDB support is working?

The simple rule is Cortex-A8 is unsupported and Cortex-A9 is supported.
The A5 should work (untested) and the A15 will need a bit of hacking to
get it supported.

> Thanks for your help in getting this working!

No problem. If you find anybody with working memory-mapped debug and some
spare time, I'd be happy to review patches :)

I'll CC you on a fix for the ptrace info register.

Will




_______________________________________________
linaro-toolchain mailing list
linaro-toolchain@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-toolchain

Reply via email to