#ifdef HAVE_PRCTL
# include <sys/prctl.h>
#endif
+#include <asm/unistd.h>
+#include "scno.h"
#include "ptrace.h"
#include "printsiginfo.h"
bool stack_trace_enabled = false;
#endif
-#if defined __NR_tkill
-# define my_tkill(tid, sig) syscall(__NR_tkill, (tid), (sig))
-#else
- /* kill() may choose arbitrarily the target task of the process group
- while we later wait on a that specific TID. PID process waits become
- TID task specific waits for a process under ptrace(2). */
-# warning "tkill(2) not available, risk of strace hangs!"
-# define my_tkill(tid, sig) kill((tid), (sig))
-#endif
+#define my_tkill(tid, sig) syscall(__NR_tkill, (tid), (sig))
/* Glue for systems without a MMU that cannot provide fork() */
#if !defined(HAVE_FORK)
"Copyright (C) %s The strace developers <%s>.\n"
"This is free software; see the source for copying conditions. There is NO\n"
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n",
- PACKAGE_NAME, PACKAGE_VERSION, "1991-2016", PACKAGE_URL);
+ PACKAGE_NAME, PACKAGE_VERSION, "1991-2017", PACKAGE_URL);
}
static void
va_start(args, fmt);
if (current_tcp) {
- int n = strace_vfprintf(current_tcp->outf, fmt, args);
+ int n = vfprintf(current_tcp->outf, fmt, args);
if (n < 0) {
if (current_tcp->outf != stderr)
perror_msg("%s", outfname);
}
if (!WIFSTOPPED(status) || WSTOPSIG(status) != SIGSTOP) {
kill_save_errno(pid, SIGKILL);
- perror_msg_and_die("Unexpected wait status %x", status);
+ perror_msg_and_die("Unexpected wait status %#x",
+ status);
}
}
/* Else: NOMMU case, we have no way to sync.
if (WIFSIGNALED(status)) {
return;
}
- error_msg_and_die("%s: unexpected wait status %x",
- __func__, status);
+ error_msg_and_die("%s: unexpected wait status %#x",
+ __func__, status);
}
}
#else /* !USE_SEIZE */