wait.c does it already, now strace.c also does.
* wait.h: New file.
* Makefile.am (strace_SOURCES): Add it.
* strace.c: Replace <sys/wait.h> with "wait.h".
[!WCOREDUMP]: Remove.
* wait.c: Replace <sys/wait.h> with "wait.h".
[!WCOREFLAG] (WCOREFLAG), [!WCOREDUMP] (WCOREDUMP): Move to wait.h,
rework.
[!W_STOPCODE] (W_STOPCODE), [!W_EXITCODE] (W_EXITCODE),
[!W_CONTINUED] (W_CONTINUED): Move to wait.h.
Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
utimes.c \
v4l2.c \
wait.c \
+ wait.h \
xattr.c \
xfs_quota_stat.h \
xlat.c \
#include "ptrace.h"
#include <signal.h>
#include <sys/resource.h>
-#include <sys/wait.h>
#include <sys/stat.h>
#ifdef HAVE_PATHS_H
# include <paths.h>
#include "trace_event.h"
#include "xstring.h"
#include "delay.h"
+#include "wait.h"
/* In some libc, these aren't declared. Do it ourself: */
extern char **environ;
strcpy(buf, "???");
if (WIFSIGNALED(status))
-#ifdef WCOREDUMP
xsprintf(buf, "WIFSIGNALED,%ssig=%s",
WCOREDUMP(status) ? "core," : "",
signame(WTERMSIG(status)));
-#else
- xsprintf(buf, "WIFSIGNALED,sig=%s",
- signame(WTERMSIG(status)));
-#endif
if (WIFEXITED(status))
xsprintf(buf, "WIFEXITED,exitcode=%u", WEXITSTATUS(status));
if (WIFSTOPPED(status))
if (cflag != CFLAG_ONLY_STATS
&& is_number_in_set(WTERMSIG(status), signal_set)) {
printleader(tcp);
-#ifdef WCOREDUMP
tprintf("+++ killed by %s %s+++\n",
signame(WTERMSIG(status)),
WCOREDUMP(status) ? "(core dumped) " : "");
-#else
- tprintf("+++ killed by %s +++\n",
- signame(WTERMSIG(status)));
-#endif
line_ended();
}
}
#include "defs.h"
#include "ptrace.h"
-#include <sys/wait.h>
+#include "wait.h"
#include "xlat/wait4_options.h"
-
-#if !defined WCOREFLAG && defined WCOREFLG
-# define WCOREFLAG WCOREFLG
-#endif
-#ifndef WCOREFLAG
-# define WCOREFLAG 0x80
-#endif
-#ifndef WCOREDUMP
-# define WCOREDUMP(status) ((status) & 0200)
-#endif
-#ifndef W_STOPCODE
-# define W_STOPCODE(sig) ((sig) << 8 | 0x7f)
-#endif
-#ifndef W_EXITCODE
-# define W_EXITCODE(ret, sig) ((ret) << 8 | (sig))
-#endif
-#ifndef W_CONTINUED
-# define W_CONTINUED 0xffff
-#endif
-
#include "xlat/ptrace_events.h"
static int
--- /dev/null
+/*
+ * Copyright (c) 2004-2018 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#ifndef STRACE_WAIT_H
+#define STRACE_WAIT_H
+
+#include "defs.h"
+
+#include <sys/wait.h>
+
+#include "static_assert.h"
+
+/*
+ * On Linux, the "core dumped" flag is hard-coded to 0x80:
+ * fs/coredump.c:coredump_finish() after v3.10-rc1~143^2~41,
+ * fs/coredump.c:do_coredump() between v3.7-rc1~134^2~4 and v3.10-rc1~143^2~41,
+ * or fs/exec.c:do_coredump() before v3.7-rc1~134^2~4
+ */
+#ifndef WCOREFLAG
+# define WCOREFLAG 0x80
+#else
+static_assert((WCOREFLAG) == 0x80, "WCOREFLAG != 0x80");
+#endif
+#ifndef WCOREDUMP
+# define WCOREDUMP(status) ((status) & (WCOREFLAG))
+#endif
+
+#ifndef W_STOPCODE
+# define W_STOPCODE(sig) ((sig) << 8 | 0x7f)
+#endif
+#ifndef W_EXITCODE
+# define W_EXITCODE(ret, sig) ((ret) << 8 | (sig))
+#endif
+#ifndef W_CONTINUED
+# define W_CONTINUED 0xffff
+#endif
+
+#endif /* STRACE_WAIT_H */