* This file is part of rt_sigtimedwait strace test.
*
* Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
for (;;) {
assert(k_sigtimedwait(set, NULL, timeout, size) == -1);
if (EINTR == errno) {
- tprintf("rt_sigtimedwait(%s, NULL, "
- "{tv_sec=%jd, tv_nsec=%jd}, %u)"
+ tprintf("rt_sigtimedwait(%s, NULL"
+ ", {tv_sec=%lld, tv_nsec=%llu}, %u)"
" = -1 EAGAIN (%m)\n", text,
- (intmax_t) timeout->tv_sec,
- (intmax_t) timeout->tv_nsec,
+ (long long) timeout->tv_sec,
+ zero_extend_signed_to_ull(timeout->tv_nsec),
size);
} else {
if (size < sizeof(long))
- tprintf("rt_sigtimedwait(%p, NULL, "
- "{tv_sec=%jd, tv_nsec=%jd}"
+ tprintf("rt_sigtimedwait(%p, NULL"
+ ", {tv_sec=%lld, tv_nsec=%llu}"
", %u) = -1 EINVAL (%m)\n",
- set, (intmax_t) timeout->tv_sec,
- (intmax_t) timeout->tv_nsec, size);
+ set, (long long) timeout->tv_sec,
+ zero_extend_signed_to_ull(timeout->tv_nsec),
+ size);
else
- tprintf("rt_sigtimedwait(%s, NULL, "
- "{tv_sec=%jd, tv_nsec=%jd}"
+ tprintf("rt_sigtimedwait(%s, NULL"
+ ", {tv_sec=%lld, tv_nsec=%llu}"
", %u) = -1 EINVAL (%m)\n",
- text, (intmax_t) timeout->tv_sec,
- (intmax_t) timeout->tv_nsec, size);
+ text, (long long) timeout->tv_sec,
+ zero_extend_signed_to_ull(timeout->tv_nsec),
+ size);
}
if (!size)
break;
{
tprintf("%s", "");
- siginfo_t *const info = tail_alloc(sizeof(*info));
- struct timespec *const timeout = tail_alloc(sizeof(*timeout));
+ TAIL_ALLOC_OBJECT_CONST_PTR(siginfo_t, info);
+ TAIL_ALLOC_OBJECT_CONST_PTR(struct timespec, timeout);
timeout->tv_sec = 0;
timeout->tv_nsec = 42;
assert(k_sigtimedwait(k_set, NULL, timeout, set_size) == -1);
if (EAGAIN == errno)
break;
- tprintf("rt_sigtimedwait(%p, NULL, {tv_sec=%jd, tv_nsec=%jd}, %u)"
- " = -1 EINVAL (%m)\n",
- k_set, (intmax_t) timeout->tv_sec,
- (intmax_t) timeout->tv_nsec, set_size);
+ tprintf("rt_sigtimedwait(%p, NULL, {tv_sec=%lld, tv_nsec=%llu}"
+ ", %u) = -1 EINVAL (%m)\n",
+ k_set, (long long) timeout->tv_sec,
+ zero_extend_signed_to_ull(timeout->tv_nsec), set_size);
}
if (!set_size)
perror_msg_and_fail("rt_sigtimedwait");
- tprintf("rt_sigtimedwait([], NULL, {tv_sec=%jd, tv_nsec=%jd}, %u) = -1 EAGAIN (%m)\n",
- (intmax_t) timeout->tv_sec, (intmax_t) timeout->tv_nsec,
- set_size);
+ tprintf("rt_sigtimedwait([], NULL, {tv_sec=%lld, tv_nsec=%llu}, %u)"
+ " = -1 EAGAIN (%m)\n",
+ (long long) timeout->tv_sec,
+ zero_extend_signed_to_ull(timeout->tv_nsec), set_size);
+
+ timeout->tv_sec = 0xdeadbeefU;
+ timeout->tv_nsec = 0xfacefeedU;
+ assert(k_sigtimedwait(k_set, NULL, timeout, set_size) == -1);
+ tprintf("rt_sigtimedwait([], NULL, {tv_sec=%lld, tv_nsec=%llu}"
+ ", %u) = -1 EINVAL (%m)\n",
+ (long long) timeout->tv_sec,
+ zero_extend_signed_to_ull(timeout->tv_nsec), set_size);
+
+ timeout->tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+ timeout->tv_nsec = (long) 0xbadc0dedfacefeedLL;
+ assert(k_sigtimedwait(k_set, NULL, timeout, set_size) == -1);
+ tprintf("rt_sigtimedwait([], NULL, {tv_sec=%lld, tv_nsec=%llu}"
+ ", %u) = -1 EINVAL (%m)\n",
+ (long long) timeout->tv_sec,
+ zero_extend_signed_to_ull(timeout->tv_nsec), set_size);
+
+ timeout->tv_sec = 0;
+ timeout->tv_nsec = 42;
- sigset_t *const libc_set = tail_alloc(sizeof(sigset_t));
+ TAIL_ALLOC_OBJECT_CONST_PTR(sigset_t, libc_set);
sigemptyset(libc_set);
sigaddset(libc_set, SIGHUP);
memcpy(k_set, libc_set, set_size);
assert(k_sigtimedwait(k_set, info, timeout, set_size) == -1);
assert(EAGAIN == errno);
- tprintf("rt_sigtimedwait([HUP], %p, {tv_sec=%jd, tv_nsec=%jd}, %u) = -1 EAGAIN (%m)\n",
- info, (intmax_t) timeout->tv_sec,
- (intmax_t) timeout->tv_nsec, set_size);
+ tprintf("rt_sigtimedwait([HUP], %p, {tv_sec=%lld, tv_nsec=%llu}, %u)"
+ " = -1 EAGAIN (%m)\n",
+ info, (long long) timeout->tv_sec,
+ zero_extend_signed_to_ull(timeout->tv_nsec), set_size);
sigaddset(libc_set, SIGINT);
memcpy(k_set, libc_set, set_size);
assert(k_sigtimedwait(k_set, info, timeout, set_size) == -1);
assert(EAGAIN == errno);
- tprintf("rt_sigtimedwait([HUP INT], %p, {tv_sec=%jd, tv_nsec=%jd}, %u)"
+ tprintf("rt_sigtimedwait([HUP INT], %p, {tv_sec=%lld, tv_nsec=%llu}, %u)"
" = -1 EAGAIN (%m)\n",
- info, (intmax_t) timeout->tv_sec,
- (intmax_t) timeout->tv_nsec, set_size);
+ info, (long long) timeout->tv_sec,
+ zero_extend_signed_to_ull(timeout->tv_nsec), set_size);
sigaddset(libc_set, SIGQUIT);
sigaddset(libc_set, SIGALRM);
assert(k_sigtimedwait(k_set, info, timeout, set_size) == -1);
assert(EAGAIN == errno);
- tprintf("rt_sigtimedwait(%s, %p, {tv_sec=%jd, tv_nsec=%jd}, %u) = -1 EAGAIN (%m)\n",
+ tprintf("rt_sigtimedwait(%s, %p, {tv_sec=%lld, tv_nsec=%llu}, %u)"
+ " = -1 EAGAIN (%m)\n",
"[HUP INT QUIT ALRM TERM]",
- info, (intmax_t) timeout->tv_sec,
- (intmax_t) timeout->tv_nsec, set_size);
+ info, (long long) timeout->tv_sec,
+ zero_extend_signed_to_ull(timeout->tv_nsec), set_size);
memset(k_set - set_size, -1, set_size);
assert(k_sigtimedwait(k_set - set_size, info, timeout, set_size) == -1);
assert(EAGAIN == errno);
- tprintf("rt_sigtimedwait(~[], %p, {tv_sec=%jd, tv_nsec=%jd}, %u) = -1 EAGAIN (%m)\n",
- info, (intmax_t) timeout->tv_sec,
- (intmax_t) timeout->tv_nsec, set_size);
+ tprintf("rt_sigtimedwait(~[], %p, {tv_sec=%lld, tv_nsec=%llu}, %u)"
+ " = -1 EAGAIN (%m)\n",
+ info, (long long) timeout->tv_sec,
+ zero_extend_signed_to_ull(timeout->tv_nsec), set_size);
if (sigprocmask(SIG_SETMASK, libc_set, NULL))
perror_msg_and_fail("sigprocmask");
raise(SIGALRM);
assert(k_sigtimedwait(k_set, info, timeout, set_size) == SIGALRM);
tprintf("rt_sigtimedwait(%s, {si_signo=%s, si_code=SI_TKILL"
- ", si_pid=%d, si_uid=%d}, {tv_sec=%jd, tv_nsec=%jd}, %u) = %d (%s)\n",
+ ", si_pid=%d, si_uid=%d}, {tv_sec=%lld, tv_nsec=%llu}, %u)"
+ " = %d (%s)\n",
"[HUP INT QUIT ALRM TERM]", "SIGALRM", getpid(), getuid(),
- (intmax_t) timeout->tv_sec, (intmax_t) timeout->tv_nsec,
+ (long long) timeout->tv_sec,
+ zero_extend_signed_to_ull(timeout->tv_nsec),
set_size, SIGALRM, "SIGALRM");
raise(SIGALRM);