diff mbox

powerpc: Add rN aliases to the pt_regs_offset table.

Message ID 1448086096-3117-1-git-send-email-rashmicy@gmail.com (mailing list archive)
State Accepted
Headers show

Commit Message

Rashmica Gupta Nov. 21, 2015, 6:08 a.m. UTC
It is common practice with powerpc to use 'rN' to refer to register 'N'. However
when using the pt_regs_offset table we have to use 'gprN'.

So add aliases such that both 'rN' and 'gprN' can be used.

For example, we can currently do:
$ su -
$ echo "p:probe/sys_fchownat .sys_fchownat %gpr3:s32 +0(%gpr4):string %gpr5:s32
%gpr6:s32 %gpr7:s32" > /sys/kernel/debug/tracing/kprobe_events
$ echo 1 > /sys/kernel/debug/tracing/events/probe/sys_fchownat/enable
$ touch /tmp/foo
$ chown root /tmp/foo
$ echo 0 > /sys/kernel/debug/tracing/events/enable
$ cat /sys/kernel/debug/tracing/trace
           chown-5040  [001] d... 24800.047211: sys_fchownat:
(.SyS_fchownat+0x0/0x190) arg1=-100 arg2="foo" arg3=0 arg4=-1 arg5=0

Instead we'd like to be able to use:
$ echo "p:probe/sys_fchownat sys_fchownat %r3:s32 +0(%r4):string %r5:s32
%r6:s32 %r7:s32" > /sys/kernel/debug/tracing/kprobe_events

Signed-off-by: Rashmica Gupta <rashmicy@gmail.com>
---
 arch/powerpc/kernel/ptrace.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Anshuman Khandual Nov. 23, 2015, 8:24 a.m. UTC | #1
On 11/21/2015 11:38 AM, Rashmica Gupta wrote:
> It is common practice with powerpc to use 'rN' to refer to register 'N'. However
> when using the pt_regs_offset table we have to use 'gprN'.
> 
> So add aliases such that both 'rN' and 'gprN' can be used.
> 
> For example, we can currently do:
> $ su -
> $ echo "p:probe/sys_fchownat .sys_fchownat %gpr3:s32 +0(%gpr4):string %gpr5:s32
> %gpr6:s32 %gpr7:s32" > /sys/kernel/debug/tracing/kprobe_events
> $ echo 1 > /sys/kernel/debug/tracing/events/probe/sys_fchownat/enable
> $ touch /tmp/foo
> $ chown root /tmp/foo
> $ echo 0 > /sys/kernel/debug/tracing/events/enable
> $ cat /sys/kernel/debug/tracing/trace
>            chown-5040  [001] d... 24800.047211: sys_fchownat:
> (.SyS_fchownat+0x0/0x190) arg1=-100 arg2="foo" arg3=0 arg4=-1 arg5=0
> 
> Instead we'd like to be able to use:
> $ echo "p:probe/sys_fchownat sys_fchownat %r3:s32 +0(%r4):string %r5:s32
> %r6:s32 %r7:s32" > /sys/kernel/debug/tracing/kprobe_events

This makes sense and works for me on a LE guest. Just that the symbol
should not have the "." before it.
Michael Ellerman Nov. 23, 2015, 10:15 a.m. UTC | #2
On Mon, 2015-11-23 at 13:54 +0530, Anshuman Khandual wrote:

> On 11/21/2015 11:38 AM, Rashmica Gupta wrote:

> > It is common practice with powerpc to use 'rN' to refer to register 'N'. However
> > when using the pt_regs_offset table we have to use 'gprN'.
> > 
> > So add aliases such that both 'rN' and 'gprN' can be used.
> > 
> > For example, we can currently do:
> > $ su -
> > $ echo "p:probe/sys_fchownat .sys_fchownat %gpr3:s32 +0(%gpr4):string %gpr5:s32
> > %gpr6:s32 %gpr7:s32" > /sys/kernel/debug/tracing/kprobe_events
> > $ echo 1 > /sys/kernel/debug/tracing/events/probe/sys_fchownat/enable
> > $ touch /tmp/foo
> > $ chown root /tmp/foo
> > $ echo 0 > /sys/kernel/debug/tracing/events/enable
> > $ cat /sys/kernel/debug/tracing/trace
> >            chown-5040  [001] d... 24800.047211: sys_fchownat:
> > (.SyS_fchownat+0x0/0x190) arg1=-100 arg2="foo" arg3=0 arg4=-1 arg5=0
> > 
> > Instead we'd like to be able to use:
> > $ echo "p:probe/sys_fchownat sys_fchownat %r3:s32 +0(%r4):string %r5:s32
> > %r6:s32 %r7:s32" > /sys/kernel/debug/tracing/kprobe_events
> 
> This makes sense and works for me on a LE guest. Just that the symbol
> should not have the "." before it. 

Yeah that's probably my fault for giving Rashmica an example from a BE system.
I'll fix up the example before I commit it.

cheers
Michael Ellerman Nov. 26, 2015, 12:15 p.m. UTC | #3
On Sat, 2015-21-11 at 06:08:16 UTC, Rashmica Gupta wrote:
> It is common practice with powerpc to use 'rN' to refer to register 'N'. However
> when using the pt_regs_offset table we have to use 'gprN'.
> 
> So add aliases such that both 'rN' and 'gprN' can be used.
> 
> For example, we can currently do:
> $ su -
> $ echo "p:probe/sys_fchownat .sys_fchownat %gpr3:s32 +0(%gpr4):string %gpr5:s32
> %gpr6:s32 %gpr7:s32" > /sys/kernel/debug/tracing/kprobe_events
> $ echo 1 > /sys/kernel/debug/tracing/events/probe/sys_fchownat/enable
> $ touch /tmp/foo
> $ chown root /tmp/foo
> $ echo 0 > /sys/kernel/debug/tracing/events/enable
> $ cat /sys/kernel/debug/tracing/trace
>            chown-5040  [001] d... 24800.047211: sys_fchownat:
> (.SyS_fchownat+0x0/0x190) arg1=-100 arg2="foo" arg3=0 arg4=-1 arg5=0
> 
> Instead we'd like to be able to use:
> $ echo "p:probe/sys_fchownat sys_fchownat %r3:s32 +0(%r4):string %r5:s32
> %r6:s32 %r7:s32" > /sys/kernel/debug/tracing/kprobe_events
> 
> Signed-off-by: Rashmica Gupta <rashmicy@gmail.com>

Applied to powerpc next, thanks.

https://git.kernel.org/powerpc/c/343c3327c12b136551929830

cheers
diff mbox

Patch

diff --git a/arch/powerpc/kernel/ptrace.c b/arch/powerpc/kernel/ptrace.c
index 737c0d0b53ac..30a03c03fe73 100644
--- a/arch/powerpc/kernel/ptrace.c
+++ b/arch/powerpc/kernel/ptrace.c
@@ -60,6 +60,7 @@  struct pt_regs_offset {
 #define STR(s)	#s			/* convert to string */
 #define REG_OFFSET_NAME(r) {.name = #r, .offset = offsetof(struct pt_regs, r)}
 #define GPR_OFFSET_NAME(num)	\
+	{.name = STR(r##num), .offset = offsetof(struct pt_regs, gpr[num])}, \
 	{.name = STR(gpr##num), .offset = offsetof(struct pt_regs, gpr[num])}
 #define REG_OFFSET_END {.name = NULL, .offset = 0}