]> sourceware.org Git - systemtap.git/commitdiff
Several small fixes in syscall tapset and related testcases.
authorMartin Cermak <mcermak@redhat.com>
Wed, 20 May 2015 12:16:09 +0000 (14:16 +0200)
committerMartin Cermak <mcermak@redhat.com>
Wed, 20 May 2015 12:16:09 +0000 (14:16 +0200)
* tapset/linux/syscalls.stp: Fix s390x compat task pointer retrieval.
* tapset/linux/syscalls2.stp: Fix s390x compat task pointer retrieval,
    fix syscall.rt_sigsuspend compat probe
* testsuite/systemtap.syscall/getrandom.c: Fix compile time issues
* testsuite/systemtap.syscall/memfd_create.c: Fix compile time issues
* testsuite/systemtap.syscall/nfsservctl.c: Fix compile time issues
* testsuite/systemtap.syscall/ptrace.c: Fix concurrent inclusion of
    sys/ptrace.h and linux/ptrace.h for e.g. 3.13.9-200.fc20
* testsuite/systemtap.syscall/recv.c: Relax limit testing
* testsuite/systemtap.syscall/recvfrom.c: Likewise
* testsuite/systemtap.syscall/send.c: Likewise
* testsuite/systemtap.syscall/sendto.c: Likewise
* testsuite/systemtap.syscall/signalfd.c: Fix compile time issues

tapset/linux/syscalls.stp
tapset/linux/syscalls2.stp
testsuite/systemtap.syscall/getrandom.c
testsuite/systemtap.syscall/memfd_create.c
testsuite/systemtap.syscall/nfsservctl.c
testsuite/systemtap.syscall/ptrace.c
testsuite/systemtap.syscall/recv.c
testsuite/systemtap.syscall/recvfrom.c
testsuite/systemtap.syscall/send.c
testsuite/systemtap.syscall/sendto.c
testsuite/systemtap.syscall/signalfd.c

index 1c48f67283a6d7743954f4df6dab5c321888d560..eeccddb732cd4a1545e0e0541f52182cb5ae13af 100644 (file)
@@ -2038,8 +2038,8 @@ probe syscall.compat_getitimer = kernel.function("compat_sys_getitimer").call ?
 {
        name = "getitimer"
        which = __int32($which)
-       value_uaddr = $it
-       argstr = sprintf("%s, %p", _itimer_which_str(which), $it)
+       value_uaddr = @__pointer($it)
+       argstr = sprintf("%s, %p", _itimer_which_str(which), value_uaddr)
 }
 probe syscall.compat_getitimer.return = kernel.function("compat_sys_getitimer").return ?
 {
@@ -2345,7 +2345,7 @@ probe syscall.getrusage = __syscall.getrusage,
        name = "getrusage"
        who = __int32($who)
        who_str = _rusage_who_str(who)
-       usage_uaddr = $ru
+       usage_uaddr = @__pointer($ru)
        argstr = sprintf("%s, %p", who_str, usage_uaddr)
 }
 probe __syscall.getrusage = kernel.function("sys_getrusage").call
index fa9135a5f6e600c94868673501b3ffac11b27475..71a6fcee0aa716677e7919d4bbf566e67a7df079 100644 (file)
@@ -157,7 +157,7 @@ probe syscall.open_by_handle_at =
        name = "open_by_handle_at"
        mount_dfd = __int32($mountdirfd)
        mount_dfd_str = _dfd_str(mount_dfd)
-       handle_uaddr = $handle
+       handle_uaddr = @__pointer($handle)
        flags = __int32($flags)
        flags_str = _sys_open_flag_str(flags)
        argstr = sprintf("%s, %p, %s", mount_dfd_str, handle_uaddr, flags_str)
@@ -1751,8 +1751,11 @@ probe syscall.rt_sigsuspend = kernel.function("compat_sys_rt_sigsuspend").call ?
                               kernel.function("sys_rt_sigsuspend").call ?
 {
        name = "rt_sigsuspend"
-       set_uaddr = $unewset
-       sigsetsize = $sigsetsize
+       set_uaddr = @__pointer($unewset)
+       if (%{ /* pure */ _stp_is_compat_task() %})
+               sigsetsize = __uint32($sigsetsize)
+       else
+               sigsetsize = __ulong($sigsetsize)
        argstr = sprintf("%s, %u",
                         (%{ /* pure */ _stp_is_compat_task() %}
                          ? _stp_compat_sigset_u(set_uaddr)
@@ -1941,8 +1944,8 @@ probe syscall.sched_rr_get_interval = __syscall.sched_rr_get_interval,
 {
        name = "sched_rr_get_interval"
        pid = __int32($pid)
-       tp_uaddr = $interval
-       argstr = sprintf("%d, %p", pid, $interval)
+       tp_uaddr = @__pointer($interval)
+       argstr = sprintf("%d, %p", pid, tp_uaddr)
 }
 probe __syscall.sched_rr_get_interval =
        kernel.function("sys_sched_rr_get_interval").call
@@ -2790,10 +2793,10 @@ probe syscall.compat_setitimer = kernel.function("compat_sys_setitimer").call ?
 {
        name = "setitimer"
        which = __int32($which)
-       value_uaddr = $in
+       value_uaddr = @__pointer($in)
        ovalue_uaddr = @__pointer($out)
        argstr = sprintf("%s, %s, %p", _itimer_which_str(which),
-                        _struct_compat_itimerval_u($in), @__pointer($out))
+                        _struct_compat_itimerval_u(value_uaddr), ovalue_uaddr)
 }
 probe syscall.compat_setitimer.return = kernel.function("compat_sys_setitimer").return ?
 {
@@ -3498,10 +3501,10 @@ probe syscall.sigaction = kernel.function("sys_sigaction").call ?
 {
        name = "sigaction"
        sig = __int32($sig)
-       act_uaddr = $act
+       act_uaddr = @__pointer($act)
        oact_uaddr = $oact
        argstr = sprintf("%s, {%s}, %p", _signal_name(sig),
-                        _struct_sigaction_u($act), $oact)
+                        _struct_sigaction_u(act_uaddr), oact_uaddr)
 }
 probe syscall.sigaction.return = kernel.function("sys_sigaction").return ?
 {
@@ -3513,10 +3516,10 @@ probe syscall.sigaction32 = kernel.function("sys32_sigaction").call ?,
 {
        name = "sigaction"
        sig = __int32($sig)
-       act_uaddr = $act
+       act_uaddr = @__pointer($act)
        oact_uaddr = $oact
        argstr = sprintf("%s, {%s}, %p", _signal_name(sig),
-                        _struct_old_sigaction32_u($act), $oact)
+                        _struct_old_sigaction32_u(act_uaddr), oact_uaddr)
 }
 probe syscall.sigaction32.return = kernel.function("sys32_sigaction").return ?,
                                   kernel.function("compat_sys_sigaction").return ?
@@ -3593,11 +3596,11 @@ probe syscall.signalfd = __syscall.signalfd4 !, __syscall.signalfd ?
        flags = __int32(@choose_defined($flags, 0))
        if (flags == 0) {
                name = "signalfd"
-               argstr = sprintf("%d, %p, %d", __int32($ufd), $user_mask,
+               argstr = sprintf("%d, %p, %d", __int32($ufd), @__pointer($user_mask),
                                 $sizemask)
        } else {
                name = "signalfd4"
-               argstr = sprintf("%d, %p, %d, %s", __int32($ufd), $user_mask,
+               argstr = sprintf("%d, %p, %d, %s", __int32($ufd), @__pointer($user_mask),
                                 $sizemask, _signalfd4_flags_str(flags))
        }
 }
@@ -3632,11 +3635,11 @@ probe syscall.compat_signalfd = kernel.function("compat_sys_signalfd4").call !,
        flags = __int32(@choose_defined($flags, 0))
        if (flags == 0) {
                name = "signalfd"
-               argstr = sprintf("%d, %p, %d", __int32($ufd), $sigmask,
+               argstr = sprintf("%d, %p, %d", __int32($ufd), @__pointer($sigmask),
                                 $sigsetsize)
        } else {
                name = "signalfd4"
-               argstr = sprintf("%d, %p, %d, %s", __int32($ufd), $sigmask,
+               argstr = sprintf("%d, %p, %d, %s", __int32($ufd), @__pointer($sigmask),
                                 $sigsetsize, _signalfd4_flags_str(flags))
        }
 }
@@ -3686,7 +3689,7 @@ probe syscall.sigprocmask = __syscall.sigprocmask ?,
        name = "sigprocmask"
        how = __int32($how)
        how_str = _sigprocmask_how_str(how)
-       set_uaddr = @choose_defined($set, $nset)
+       set_uaddr = @__pointer(@choose_defined($set, $nset))
        argstr = sprintf("%s, %p, %p", how_str, set_uaddr, oldset_uaddr)
 }
 probe __syscall.sigprocmask = kernel.function("sys_sigprocmask").call ?
@@ -4477,7 +4480,7 @@ probe syscall.timerfd = kernel.function("sys_timerfd").call ?,
                         kernel.function("compat_sys_timerfd").call ?
 {
        name = "timerfd"
-       argstr = sprintf("%d, %d, 0x%x", $ufd, $clockid, $flags)
+       argstr = sprintf("%d, %d, 0x%x", $ufd, @__pointer($clockid), $flags)
 }
 probe syscall.timerfd.return = kernel.function("sys_timerfd").return ?,
                                kernel.function("compat_sys_timerfd").return ?
@@ -4515,8 +4518,8 @@ probe syscall.timerfd_gettime = __syscall.timerfd_gettime ?,
 {
        name = "timerfd_gettime"
        fd = __int32($ufd)
-       value_uaddr = $otmr
-       argstr = sprintf("%d, %p", fd, $otmr)
+       value_uaddr = @__pointer($otmr)
+       argstr = sprintf("%d, %p", fd, value_uaddr)
 }
 probe __syscall.timerfd_gettime = kernel.function("sys_timerfd_gettime").call ?
 {
@@ -5175,7 +5178,7 @@ probe syscall.waitid = __syscall.waitid,
                         _waitid_which_str(__int32($which)),
                         __int32(@choose_defined($upid, $pid)),
                         infop_uaddr, _wait4_opt_str($options),
-                        @choose_defined($ru, $uru))
+                        @__pointer(@choose_defined($ru, $uru)))
 }
 probe __syscall.waitid = kernel.function("sys_waitid").call
 {
index 729df6a2fdad7005358330d724aed3050d389663..0ad32fef0abb1616c199e1839ef20955738e48ca 100644 (file)
 #define GRND_RANDOM 0x0002
 #endif
 
-#if defined(__NR_getrandom) && !defined(SYS_getrandom)
-#define SYS_getrandom __NR_getrandom
-#endif
-
 int main()
 {
-#ifdef SYS_getrandom
+// e.g. kernel-headers-3.13.9-200.fc20.x86_64 do not have __NR_getrandom
+#ifdef __NR_getrandom
   char i[5] = {0};
   char j[5] = {0};
   char k[5] = {0};
 
-  syscall(SYS_getrandom, i, sizeof(i), GRND_RANDOM);
+  syscall(__NR_getrandom, i, sizeof(i), GRND_RANDOM);
   //staptest// getrandom ("", 5, GRND_RANDOM) = 5
 
-  syscall(SYS_getrandom, (size_t)-1, 5, GRND_RANDOM);
+  syscall(__NR_getrandom, (size_t)-1, 5, GRND_RANDOM);
 #if __WORDSIZE == 64
   //staptest// getrandom ([16]?[f]+, 5, GRND_RANDOM) = -NNNN (EFAULT)
 #else
   //staptest// getrandom ([8]?[f]+, 5, GRND_RANDOM) = -NNNN (EFAULT)
 #endif
 
-  syscall(SYS_getrandom, j, -1, GRND_RANDOM);
+  syscall(__NR_getrandom, j, -1, GRND_RANDOM);
   //staptest// getrandom ("", 4294967295, GRND_RANDOM) = NNNN
 
-  syscall(SYS_getrandom, k, sizeof(k), -1);
+  syscall(__NR_getrandom, k, sizeof(k), -1);
   //staptest// getrandom ("", 5, GRND_[^ ]+|XXXX) = -NNNN (EINVAL)
 #endif
   return 0;
index cec3979d2e95dc04335eef69e94b2835dd92add6..fbc8cd566f782b5b43206bf8fa5956d0411947f8 100644 (file)
 #define MFD_ALLOW_SEALING 0x0002u
 #endif
 
-#if !defined(SYS_memfd_create) && defined(__NR_memfd_create)
-#define SYS_memfd_create __NR_memfd_create
-#endif
-
 int main()
 {
-#ifdef SYS_memfd_create
-   syscall(SYS_memfd_create,"memfd_create", MFD_CLOEXEC|MFD_ALLOW_SEALING);
+#ifdef __NR_memfd_create
+   syscall(__NR_memfd_create,"memfd_create", MFD_CLOEXEC|MFD_ALLOW_SEALING);
    //staptest// memfd_create ("memfd_create", MFD_CLOEXEC|MFD_ALLOW_SEALING) = NNNN
-   syscall(SYS_memfd_create, (size_t)-1, MFD_CLOEXEC|MFD_ALLOW_SEALING);
+   syscall(__NR_memfd_create, (size_t)-1, MFD_CLOEXEC|MFD_ALLOW_SEALING);
 #if __WORDSIZE == 64
    //staptest// memfd_create ([16]?[f]+, MFD_CLOEXEC|MFD_ALLOW_SEALING) = -NNNN (EFAULT)
 #else
    //staptest// memfd_create ([8]?[f]+, MFD_CLOEXEC|MFD_ALLOW_SEALING) = -NNNN (EFAULT)
 #endif
-   syscall(SYS_memfd_create,"memfd_create1", -1);
+   syscall(__NR_memfd_create,"memfd_create1", -1);
    //staptest// memfd_create ("memfd_create1", MFD_[^ ]+|XXXX) = -NNNN (EINVAL)
 #endif
 
index 8575a60dcf52d3d09920de128f079da6a4c6499d..41e4af0198bd928d2af4cb358eb6cec477133c5c 100644 (file)
@@ -7,15 +7,23 @@
 #include <linux/nfs.h>
 #include <linux/nfsd/nfsfh.h>
 #include <sys/syscall.h>
-#ifdef SYS_nfsservctl
-#include <linux/nfsd/syscall.h>
-#endif
+#include <linux/version.h>
 
 // Note that since linux 3.1, the nfsservctl() syscall no longer exists.
+// RHEL7 systems with kernel-headers-3.10.0-229.el7 define __NR_nfsservctl
+// but do not have linux/nfsd/syscall.h.
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0)
+#undef __NR_nfsservctl
+#endif
+
+#ifdef __NR_nfsservctl
+#include <linux/nfsd/syscall.h>
+#endif
 
 int main()
 {
-#ifdef SYS_nfsservctl
+#ifdef __NR_nfsservctl
     struct nfsctl_arg arg;
     union nfsctl_res res;
 
index 224f9cfdfce63a6f85e46e3df4a30d5a80b85037..346c79d14d1e6f748e15ee4441dbb81f2dbaece5 100644 (file)
@@ -12,9 +12,9 @@
 // don't get along well. Work around this.
 #define ia64_fpreg XXX_ia64_fpreg
 #define pt_all_user_regs XXX_pt_all_user_regs
-//#define ptrace_peeksiginfo_args XXX_ptrace_peeksiginfo_args
+#define ptrace_peeksiginfo_args XXX_ptrace_peeksiginfo_args
 #include <linux/ptrace.h>
-//#undef ptrace_peeksiginfo_args
+#undef ptrace_peeksiginfo_args
 #undef pt_all_user_regs
 #undef ia64_fpreg
 
index 638f1602f12f1d58e115cd323c41acee7da37236..9635b269ead615defc88d032694d4ee7bb1e35d5 100644 (file)
@@ -166,9 +166,9 @@ int main()
 
     recv(s, buf, (size_t)-1, MSG_DONTWAIT);
 #if __WORDSIZE == 64
-    //staptest// recv[[[[from]]]]? (NNNN, XXXX, 18446744073709551615, MSG_DONTWAIT[[[[, 0x0, 0x0]]]]?) = 6
+    //staptest// recv[[[[from]]]]? (NNNN, XXXX, 18446744073709551615, MSG_DONTWAIT[[[[, 0x0, 0x0]]]]?) = NNNN
 #else
-    //staptest// recv[[[[from]]]]? (NNNN, XXXX, 4294967295, MSG_DONTWAIT[[[[, 0x0, 0x0]]]]?) = 6
+    //staptest// recv[[[[from]]]]? (NNNN, XXXX, 4294967295, MSG_DONTWAIT[[[[, 0x0, 0x0]]]]?) = NNNN
 #endif
 
     close(s);
index 68000f2ce6f63b60042ecd6d0392a229965ded0b..eeb567c78f84b1839cf7124a1dbdd68417b1358f 100644 (file)
@@ -226,9 +226,9 @@ int main()
     recvfrom(s, buf, (size_t)-1, MSG_DONTWAIT, (struct sockaddr *)&from,
             &fromlen);
 #if __WORDSIZE == 64
-    //staptest// recvfrom (NNNN, XXXX, 18446744073709551615, MSG_DONTWAIT, XXXX, XXXX) = 6
+    //staptest// recvfrom (NNNN, XXXX, 18446744073709551615, MSG_DONTWAIT, XXXX, XXXX) = NNNN
 #else
-    //staptest// recvfrom (NNNN, XXXX, 4294967295, MSG_DONTWAIT, XXXX, XXXX) = 6
+    //staptest// recvfrom (NNNN, XXXX, 4294967295, MSG_DONTWAIT, XXXX, XXXX) = NNNN
 #endif
 
     close(s);
index 9838ae7a49d38a7257c2fdddd5cfce07617e897b..b414c0f60c751fa9f312e88feaee4a79aaf79355 100644 (file)
@@ -131,9 +131,9 @@ int main()
 
     send(s, (void *)buf, -1, 0);
 #if __WORDSIZE == 64
-    //staptest// send[[[[to]]]]? (NNNN, XXXX, 18446744073709551615, 0x0[[[[, NULL, 0]]]]?) = -NNNN (EMSGSIZE)
+    //staptest// send[[[[to]]]]? (NNNN, XXXX, 18446744073709551615, 0x0[[[[, NULL, 0]]]]?) = -NNNN
 #else
-    //staptest// send[[[[to]]]]? (NNNN, XXXX, 4294967295, 0x0[[[[, NULL, 0]]]]?) = -NNNN (EMSGSIZE)
+    //staptest// send[[[[to]]]]? (NNNN, XXXX, 4294967295, 0x0[[[[, NULL, 0]]]]?) = -NNNN
 #endif
 
     close(s);
index 50121e8c630b23dc869f14a3060c88921a083a07..4adefec64e5cbc64bf751bd2d6d50fd8d542b8e5 100644 (file)
@@ -128,9 +128,9 @@ int main()
 
     sendto(s, (void *)buf, -1, 0, (struct sockaddr *)&sin1, sizeof(sin1));
 #if __WORDSIZE == 64
-    //staptest// sendto (NNNN, XXXX, 18446744073709551615, 0x0, {AF_INET, 0.0.0.0, NNNN}, 16) = -NNNN (EMSGSIZE)
+    //staptest// sendto (NNNN, XXXX, 18446744073709551615, 0x0, {AF_INET, 0.0.0.0, NNNN}, 16) = -NNNN
 #else
-    //staptest// sendto (NNNN, XXXX, 4294967295, 0x0, {AF_INET, 0.0.0.0, NNNN}, 16) = -NNNN (EMSGSIZE)
+    //staptest// sendto (NNNN, XXXX, 4294967295, 0x0, {AF_INET, 0.0.0.0, NNNN}, 16) = -NNNN
 #endif
 
     close(s);
index 93383beef9f01156978aa841f8688b156b678e64..f89b8052963764ce1461693c7e1abd3547dd0a7f 100644 (file)
@@ -1,11 +1,14 @@
 /* COVERAGE: signalfd signalfd4 */
-#include <sys/signalfd.h>
+
 #include <sys/syscall.h>
 #include <sys/types.h>
 #include <unistd.h>
 #include <signal.h>
 #include <string.h>
 
+#if defined __NR_signalfd && defined __NR_signalfd4
+#include <sys/signalfd.h>
+
 int main()
 {
   sigset_t mask;
@@ -43,3 +46,9 @@ int main()
 
   return 0;
 }
+#else
+int main()
+{
+  return 0;
+}
+#endif
This page took 0.056611 seconds and 5 git commands to generate.