This is the mail archive of the systemtap@sourceware.org mailing list for the systemtap 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]

[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)


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