* 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
{
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 ?
{
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
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)
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)
{
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
{
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 ?
{
{
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 ?
{
{
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 ?
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))
}
}
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))
}
}
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 ?
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 ?
{
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 ?
{
_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
{
#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;
#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
#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;
// 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
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);
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);
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);
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);
/* 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;
return 0;
}
+#else
+int main()
+{
+ return 0;
+}
+#endif