Messages in this thread |  | | Date | Wed, 13 Nov 2013 14:31:10 +0000 | From | Will Deacon <> | Subject | Re: Re: Re: [PATCH RFC 2/6] arm64: Kprobes with single stepping support |
| |
On Wed, Nov 13, 2013 at 06:55:33AM +0000, Sandeepa Prabhu wrote: > >>> I'm unsure about arm64's debug feature behavior, what does happen when > >>> it performs a single-step on sw-breakpoint? > >>> > >>>> Sandeepa: I think you need to retry Masami's test on the arm64 model, since > >>>> I'm fairly sure it won't work as expected without some additional code. > >>> > >>> OK, anyway, for testing same one, we need to port ftrace first. So the next > > > > Sorry for confusion, s/next/fallback is what I meant. Making a kprobe module > > can be done without ftrace port. > > > >>> plan is to make a kprobe module to put a probe (which just printk something) > >>> on a specific function (e.g. vfs_symlink), and run perf record with > >>> hw-breakpoint as below > >>> > >>> $ perf record -e "mem:0xXXXXXX:k" ln -s /dev/null /tmp/foo > >>> > >>> Note that 0xXXXXXX is the address of vfs_symlink. > >>> > >>> After that, you can see the message in dmesg and also check the perf result > >>> with "sudo perf script --dump" (you can find a PERF_RECORD_SAMPLE entry if > >>> it works) > Hi Will, Masami, > > I am not sure of 'perf' right now (my minimal rootfs doesn't have) but > I tried to test hardware breakpoints using sample modules > "samples/hw_breakpoint/" on arm64 upstream branch. This should use > same kernel api as perf I believe. > > 1. Placing watchpoint ( attr.bp_type = HW_BREAKPOINT_W | > HW_BREAKPOINT_R) upon vfs_symlink symbol, but seems watch-point is not > triggering at all.
vfs_symlink is a function. Why would you expect to write it?
> 2. Placing text breakpoint (modified sample module with attr.bp_type > = HW_BREAKPOINT_X) upon vfs_symlink, and run "ln -s /dev/null > /tmp/foo". This time, breakpoint hit but exception is re-cursing > infinitely!
The problem here is that we expect the overflow handler to deal with the stepping (like GDB does via ptrace). If you don't register a handler, the kernel will do the step (like you would get if you used perf stat -e mem:0xNNNN:x).
Will
|  |