]> sourceware.org Git - systemtap.git/commitdiff
Add [nd_]syscall.ustat32.return
authorJosh Stone <jistone@redhat.com>
Tue, 5 Feb 2013 19:31:37 +0000 (11:31 -0800)
committerJosh Stone <jistone@redhat.com>
Tue, 5 Feb 2013 21:21:44 +0000 (13:21 -0800)
This adds the proper .return aliases for the syscall.ustat32 entry
aliases, rather than having them as part of syscall.ustat.return, so
way the entry/return probes are properly balanced.  It also makes sure
that wildcards like syscall.ustat** don't end up in an incomplete
ustat.return probe due to implicit alias suffixes.

I considered wrapping this with version-compatibility checks, but IMO
the former behavior was broken enough that it isn't worth it.

* tapset/linux/syscalls2.stp: Split out syscall.ustat32.return.
* tapset/linux/nd_syscalls2.stp: Split out nd_syscall.ustat32.return.
* testsuite/buildok/syscalls2-detailed.stp: Test ustat32.return.
* testsuite/buildok/nd_syscalls2-detailed.stp: Test ustat32.return.

tapset/linux/nd_syscalls2.stp
tapset/linux/syscalls2.stp
testsuite/buildok/nd_syscalls2-detailed.stp
testsuite/buildok/syscalls2-detailed.stp

index cb0e8565330f38f08960c5422a0c8817caa73e4c..f552b1cf58bf244f38867f9944b6576b740ac7e8 100644 (file)
@@ -4074,9 +4074,14 @@ probe nd_syscall.ustat32 = kprobe.function("compat_sys_ustat") ?
        argstr = sprintf("%d, %p", dev, ubuf_uaddr)
 }
 
-probe nd_syscall.ustat.return = kprobe.function("sys_ustat").return ?,
-                                kprobe.function("sys32_ustat").return ?,
-                                kprobe.function("compat_sys_ustat").return ?
+probe nd_syscall.ustat.return = kprobe.function("sys_ustat").return ?
+{
+       name = "ustat"
+       retstr = returnstr(1)
+}
+
+probe nd_syscall.ustat32.return = kprobe.function("sys32_ustat").return ?,
+                                  kprobe.function("compat_sys_ustat").return ?
 {
        name = "ustat"
        retstr = returnstr(1)
index c12adadd20af45aa0203c9feed9a819013dc33ed..23144d5bd23b8bba560e0da25302cba84f8aa692 100644 (file)
@@ -3305,9 +3305,6 @@ probe syscall.ustat = kernel.function("sys_ustat").call
 # long sys32_ustat(unsigned dev, struct ustat32 __user *u32p)
 # long compat_sys_ustat(unsigned dev, struct compat_ustat __user *u)
 #
-# FIXME: the way the ustat/ustat32 probes are written, there is no
-# syscall.ustat32.return probe.
-#
 probe syscall.ustat32 = kernel.function("compat_sys_ustat").call ?,
                        kernel.function("sys32_ustat").call ?
 {
@@ -3317,9 +3314,14 @@ probe syscall.ustat32 = kernel.function("compat_sys_ustat").call ?,
        argstr = sprintf("%d, %p", $dev, @choose_defined($u, $u32p))
 }
 
-probe syscall.ustat.return = kernel.function("sys_ustat").return ?,
-                             kernel.function("sys32_ustat").return ?,
-                             kernel.function("compat_sys_ustat").return ?
+probe syscall.ustat.return = kernel.function("sys_ustat").return ?
+{
+       name = "ustat"
+       retstr = return_str(1, $return)
+}
+
+probe syscall.ustat32.return = kernel.function("sys32_ustat").return ?,
+                               kernel.function("compat_sys_ustat").return ?
 {
        name = "ustat"
        retstr = return_str(1, $return)
index dd560f9e0df63a8629f86f901915183340b30e0c..8cff6fdb480092ef1a68ec878d0297b0557cc75d 100755 (executable)
@@ -1326,11 +1326,10 @@ probe nd_syscall.ustat, nd_syscall.ustat32 ?
        printf("%s, %s\n", name, argstr)
        printf("%d, %p\n", dev, ubuf_uaddr)
 }
-probe nd_syscall.ustat.return
+probe nd_syscall.ustat.return, nd_syscall.ustat32.return
 {
        printf("%s, %s\n", name, retstr)
 }
-# no nd_syscall.ustat32 return probe
 
 probe nd_syscall.utime ?, nd_syscall.compat_utime ?
 {
index 0a66c217d4080a40a206b09841533a2360813022..2eedf1a24a4c3e010395301c3ffe45760e0a8099 100755 (executable)
@@ -1323,11 +1323,10 @@ probe syscall.ustat, syscall.ustat32 ?
        printf("%s, %s\n", name, argstr)
        printf("%d, %p\n", dev, ubuf_uaddr)
 }
-probe syscall.ustat.return
+probe syscall.ustat.return, syscall.ustat32.return ?
 {
        printf("%s, %s\n", name, retstr)
 }
-# no syscall.ustat32 return probe
 
 probe syscall.utime ?, syscall.compat_utime ?
 {
This page took 0.042096 seconds and 5 git commands to generate.