This is the mail archive of the
systemtap@sourceware.org
mailing list for the systemtap project.
[patch] support syscall.sigaltstack for all archs
- From: Lai Jiangshan <laijs at cn dot fujitsu dot com>
- To: systemtap at sourceware dot org
- Date: Tue, 04 Sep 2007 11:28:34 +0900
- Subject: [patch] support syscall.sigaltstack for all archs
hi! all
Although sys_sigaltstack's args vary between archs, but actually sys_sigaltstack
in all archs call do_sigaltstack to do it's work. And in the current tapset, probe
syscall.sigaltstack is not offered for some archs. In order to offer probe for all
archs, I added syscall.sigaltstack(by probe kernel function do_sigaltstack) in
syscalls2.stp and deleted syscall.sigaltstack in i686/syscalls.stp, ppc64/syscalls.stp
and x86_64/syscalls.stp.
Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
diff -Nur systemtap-20070901/tapset/i686/syscalls.stp systemtap-20070901-new/tapset/i686/syscalls.stp
--- systemtap-20070901/tapset/i686/syscalls.stp 2007-08-23 05:41:32.000000000 +0900
+++ systemtap-20070901-new/tapset/i686/syscalls.stp 2007-09-04 10:11:13.000000000 +0900
@@ -112,21 +112,6 @@
retstr = returnstr(1)
}
-# sigaltstack ________________________________________________
-# int sys_sigaltstack(unsigned long ebx)
-#
-# NOTE: args vary between archs.
-#
-probe syscall.sigaltstack = kernel.function("sys_sigaltstack") {
- name = "sigaltstack"
- ebx = $ebx
- argstr = sprintf("%p", $ebx)
-}
-probe syscall.sigaltstack.return = kernel.function("sys_sigaltstack").return {
- name = "sigaltstack"
- retstr = returnstr(1)
-}
-
# vm86 _______________________________________________________
#
# int sys_vm86(struct pt_regs regs)
diff -Nur systemtap-20070901/tapset/ppc64/syscalls.stp systemtap-20070901-new/tapset/ppc64/syscalls.stp
--- systemtap-20070901/tapset/ppc64/syscalls.stp 2007-08-23 05:41:32.000000000 +0900
+++ systemtap-20070901-new/tapset/ppc64/syscalls.stp 2007-09-04 10:13:54.000000000 +0900
@@ -259,20 +259,6 @@
name = "sys32_rt_sigqueueinfo"
retstr = returnstr(1)
}
-# sys32_sigaltstack ________________________________________
-#
-# int sys32_sigaltstack(u32 __new, u32 __old, int r5,
-# int r6, int r7, int r8, struct pt_regs *regs)
-#
-probe syscall.sys32_sigaltstack = kernel.function("sys32_sigaltstack") ? {
- name = "sys32_sigaltstack"
- argstr = "FIXME"
-}
-probe syscall.sys32_sigaltstack.return =
- kernel.function("sys32_sigaltstack").return ? {
- name = "sys32_sigaltstack"
- retstr = returnstr(1)
-}
# sys32_sendfile64 ________________________________________
#
# asmlinkage int sys32_sendfile64(int out_fd, int in_fd,
diff -Nur systemtap-20070901/tapset/syscalls2.stp systemtap-20070901-new/tapset/syscalls2.stp
--- systemtap-20070901/tapset/syscalls2.stp 2007-08-30 16:47:13.000000000 +0900
+++ systemtap-20070901-new/tapset/syscalls2.stp 2007-09-04 11:19:04.000000000 +0900
@@ -2097,6 +2097,22 @@
retstr = returnstr(1)
}
+# sigaltstack ________________________________________________
+# sys_sigaltstack's args vary between archs.
+# int do_sigaltstack (const stack_t __user *uss,
+# stack_t __user *uoss, unsigned long sp)
+probe syscall.sigaltstack = kernel.function("do_sigaltstack") {
+ name = "sigaltstack"
+ ss_uaddr = $uss
+ oss_uaddr = $uoss
+ sp = $sp
+ argstr = sprintf("%p, %p", ss_uaddr, oss_uaddr)
+}
+probe syscall.sigaltstack.return = kernel.function("do_sigaltstack").return {
+ name = "sigaltstack"
+ retstr = returnstr(1)
+}
+
# signal _____________________________________________________
# unsigned long sys_signal(int sig, __sighandler_t handler)
#
diff -Nur systemtap-20070901/tapset/x86_64/syscalls.stp systemtap-20070901-new/tapset/x86_64/syscalls.stp
--- systemtap-20070901/tapset/x86_64/syscalls.stp 2007-08-16 04:17:36.000000000 +0900
+++ systemtap-20070901-new/tapset/x86_64/syscalls.stp 2007-09-04 10:15:04.000000000 +0900
@@ -31,24 +31,6 @@
retstr = returnstr(1)
}
-# sigaltstack ________________________________________________
-# long sys_sigaltstack(const stack_t __user *uss, stack_t __user *uoss,
-# struct pt_regs *regs)
-#
-# NOTE: args vary between archs.
-#
-probe syscall.sigaltstack = kernel.function("sys_sigaltstack") {
- name = "sigaltstack"
- uss_uaddr = $uss
- uoss_uaddr = $uoss
- regs_uaddr = $regs
- argstr = sprintf("%p, %p", $uss, $uoss)
-}
-probe syscall.sigaltstack.return = kernel.function("sys_sigaltstack").return {
- name = "sigaltstack"
- retstr = returnstr(1)
-}
-
# sysctl _____________________________________________________
#
# long sys32_sysctl(struct sysctl_ia32 __user *args32)