summaryrefslogtreecommitdiffstats
path: root/tapset/aux_syscalls.stp
diff options
context:
space:
mode:
authorhunt <hunt>2007-08-16 12:55:19 +0000
committerhunt <hunt>2007-08-16 12:55:19 +0000
commit48c53a66e4ffe18158d6f34f288160570609627e (patch)
treea4c3d839da5cdbd826dc914387759a116516459b /tapset/aux_syscalls.stp
parent79d4965dd7aa252bd8580f9d828a5a1ee8401649 (diff)
downloadsystemtap-steved-48c53a66e4ffe18158d6f34f288160570609627e.tar.gz
systemtap-steved-48c53a66e4ffe18158d6f34f288160570609627e.tar.xz
systemtap-steved-48c53a66e4ffe18158d6f34f288160570609627e.zip
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.
Diffstat (limited to 'tapset/aux_syscalls.stp')
-rw-r--r--tapset/aux_syscalls.stp9
1 files changed, 5 insertions, 4 deletions
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) {