Always define WCOREDUMP
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>
This commit is contained in:
parent
692dbd2c3d
commit
d1a0f700f1
@ -337,6 +337,7 @@ strace_SOURCES = \
|
||||
utimes.c \
|
||||
v4l2.c \
|
||||
wait.c \
|
||||
wait.h \
|
||||
xattr.c \
|
||||
xfs_quota_stat.h \
|
||||
xlat.c \
|
||||
|
12
strace.c
12
strace.c
@ -16,7 +16,6 @@
|
||||
#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>
|
||||
@ -41,6 +40,7 @@
|
||||
#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;
|
||||
@ -1977,14 +1977,9 @@ print_debug_info(const int pid, int status)
|
||||
|
||||
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))
|
||||
@ -2107,14 +2102,9 @@ print_signalled(struct tcb *tcp, const int pid, int 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();
|
||||
}
|
||||
}
|
||||
|
22
wait.c
22
wait.c
@ -16,29 +16,9 @@
|
||||
#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
|
||||
|
42
wait.h
Normal file
42
wait.h
Normal file
@ -0,0 +1,42 @@
|
||||
/*
|
||||
* 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 */
|
Loading…
Reference in New Issue
Block a user