From 48c53a66e4ffe18158d6f34f288160570609627e Mon Sep 17 00:00:00 2001 From: hunt Date: Thu, 16 Aug 2007 12:55:19 +0000 Subject: [PATCH] 2007-08-16 Martin Hunt * aux_syscalls.stp (__get_argv): Add parameter to optionally skip the first argv (argv[0]). (__get_compat_argv): Ditto. * syscalls.stp (execve): Set args to the whole argv. For argstr use filename plus argv starting at [1]. (compat_execve): Ditto. * ppc64/syscalls.stp (sys32_exevve): Ditto. From Cai Fei * syscalls.stp (sts_getpgid): Add pid arg. --- tapset/ChangeLog | 14 ++++++++++++++ tapset/aux_syscalls.stp | 9 +++++---- tapset/ppc64/syscalls.stp | 4 ++-- tapset/syscalls.stp | 12 +++++++----- 4 files changed, 28 insertions(+), 11 deletions(-) diff --git a/tapset/ChangeLog b/tapset/ChangeLog index 4487de167..a035671ae 100644 --- a/tapset/ChangeLog +++ b/tapset/ChangeLog @@ -1,3 +1,17 @@ +2007-08-16 Martin Hunt + + * aux_syscalls.stp (__get_argv): Add parameter to + optionally skip the first argv (argv[0]). + (__get_compat_argv): Ditto. + + * syscalls.stp (execve): Set args to the whole argv. + For argstr use filename plus argv starting at [1]. + (compat_execve): Ditto. + * ppc64/syscalls.stp (sys32_exevve): Ditto. + + From Cai Fei + * syscalls.stp (sts_getpgid): Add pid arg. + 2007-08-15 Wenji Huang * errno.stp: Fix Typo for EADV diff --git a/tapset/aux_syscalls.stp b/tapset/aux_syscalls.stp index ec4cbabf2..e2c7a432a 100644 --- a/tapset/aux_syscalls.stp +++ b/tapset/aux_syscalls.stp @@ -599,7 +599,7 @@ function __fork_flags:string(flags:long) %} /* This function copies an argv from userspace. */ -function __get_argv:string(a:long) +function __get_argv:string(a:long, first:long) %{ /* pure */ char __user *__user *argv = (char __user *__user *)(long)THIS->a; char __user *vstr; @@ -608,7 +608,8 @@ function __get_argv:string(a:long) char buf[80]; char *ptr = buf; - if (argv) + + if (THIS->first && argv) argv++; while (argv != NULL) { @@ -657,7 +658,7 @@ function __get_argv:string(a:long) *str = 0; %} /* This function copies an argv from userspace. */ -function __get_compat_argv:string(a:long) +function __get_compat_argv:string(a:long, first:long) %{ /* pure */ compat_uptr_t __user *__user *argv = (compat_uptr_t __user *__user *)(long)THIS->a; compat_uptr_t __user *vstr; @@ -666,7 +667,7 @@ function __get_compat_argv:string(a:long) char buf[80]; char *ptr = buf; - if (argv) + if (THIS->first && argv) argv++; while (argv != NULL) { diff --git a/tapset/ppc64/syscalls.stp b/tapset/ppc64/syscalls.stp index c6396b7e0..7c7a6d7b4 100644 --- a/tapset/ppc64/syscalls.stp +++ b/tapset/ppc64/syscalls.stp @@ -423,8 +423,8 @@ probe syscall.ppc_rtas.return = kernel.function("ppc_rtas").return { probe syscall.sys32_execve = kernel.function("sys32_execve") ? { name = "sys32_execve" filename = user_string($a0) - args = __get_argv($a1) - argstr = sprintf("%s %s", user_string_quoted($a0), args) + args = __get_argv($a1, 0) + argstr = sprintf("%s %s", user_string_quoted($a0), __get_argv($a1, 1)) } probe syscall.sys32_execve.return = kernel.function("sys32_execve").return ? { diff --git a/tapset/syscalls.stp b/tapset/syscalls.stp index 502019b4e..5c733b9c5 100644 --- a/tapset/syscalls.stp +++ b/tapset/syscalls.stp @@ -541,8 +541,8 @@ probe syscall.epoll_wait.return = kernel.function("sys_epoll_wait").return { probe syscall.execve = kernel.function("do_execve") { name = "execve" filename = kernel_string($filename) - args = __get_argv($argv) - argstr = sprintf("%s %s", filename, args) + args = __get_argv($argv, 0) + argstr = sprintf("%s %s", filename, __get_argv($argv, 1)) } # v2.6.15-rc2 or earlier has problems with sys_execve return probes # another reason to probe on do_execve @@ -557,8 +557,8 @@ probe syscall.execve.return = kernel.function("do_execve").return { probe syscall.compat_execve = kernel.function("compat_do_execve") ? { name = "compat_execve" filename = kernel_string($filename) - args = __get_compat_argv($argv) - argstr = sprintf("%s %s", filename, args) + args = __get_compat_argv($argv, 0) + argstr = sprintf("%s %s", filename, __get_compat_argv($argv, 1)) } probe syscall.compat_execve.return = kernel.function("compat_do_execve").return ? { name = "compat_execve" @@ -1267,9 +1267,11 @@ probe syscall.getpeername.return = kernel.function("sys_getpeername").return { } # getpgid ____________________________________________________ -# long sys_getpgid(void) +# long sys_getpgid(pid_t pid) probe syscall.getpgid = kernel.function("sys_getpgid") { name = "getpgid" + pid = $pid + argstr = sprintf("%d", $pid) } probe syscall.getpgid.return = kernel.function("sys_getpgid").return { name = "getpgid" -- 2.43.5