summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tapset/ChangeLog14
-rw-r--r--tapset/aux_syscalls.stp9
-rw-r--r--tapset/ppc64/syscalls.stp4
-rw-r--r--tapset/syscalls.stp12
4 files changed, 28 insertions, 11 deletions
diff --git a/tapset/ChangeLog b/tapset/ChangeLog
index 4487de16..a035671a 100644
--- a/tapset/ChangeLog
+++ b/tapset/ChangeLog
@@ -1,3 +1,17 @@
+2007-08-16 Martin Hunt <hunt@redhat.com>
+
+ * 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 <caifei@cn.fujitsu.com>
+ * syscalls.stp (sts_getpgid): Add pid arg.
+
2007-08-15 Wenji Huang <wenji.huang@oracle.com>
* errno.stp: Fix Typo for EADV
diff --git a/tapset/aux_syscalls.stp b/tapset/aux_syscalls.stp
index ec4cbabf..e2c7a432 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 c6396b7e..7c7a6d7b 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 502019b4..5c733b9c 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"