From 6fff551728f75e35b69bd59f2bc722a72d5c6d61 Mon Sep 17 00:00:00 2001 From: Elliott Hughes Date: Fri, 2 Sep 2016 16:15:58 -0700 Subject: [PATCH] Teach debuggerd about SIGSYS SYS_SECCOMP signals. These should be easier to interpret. Bug: http://b/31171101 Change-Id: I362361d218390ab2306f86976172f8365b26b6ef --- debuggerd/client/debuggerd_client.cpp | 3 +++ debuggerd/tombstone.cpp | 9 +++++++++ 2 files changed, 12 insertions(+) diff --git a/debuggerd/client/debuggerd_client.cpp b/debuggerd/client/debuggerd_client.cpp index bbc724a5a..cf3770126 100644 --- a/debuggerd/client/debuggerd_client.cpp +++ b/debuggerd/client/debuggerd_client.cpp @@ -129,6 +129,9 @@ static void log_signal_summary(int signum, const siginfo_t* info) { signal_name = "SIGSTKFLT"; break; #endif + case SIGSYS: + signal_name = "SIGSYS"; + break; case SIGTRAP: signal_name = "SIGTRAP"; break; diff --git a/debuggerd/tombstone.cpp b/debuggerd/tombstone.cpp index 850676529..e66392023 100644 --- a/debuggerd/tombstone.cpp +++ b/debuggerd/tombstone.cpp @@ -85,6 +85,7 @@ static const char* get_signame(int sig) { case SIGSTKFLT: return "SIGSTKFLT"; #endif case SIGSTOP: return "SIGSTOP"; + case SIGSYS: return "SIGSYS"; case SIGTRAP: return "SIGTRAP"; default: return "?"; } @@ -148,6 +149,14 @@ static const char* get_sigcode(int signo, int code) { static_assert(NSIGSEGV == SEGV_ACCERR, "missing SEGV_* si_code"); #endif break; +#if defined(SYS_SECCOMP) // Our glibc is too old, and we build this for the host too. + case SIGSYS: + switch (code) { + case SYS_SECCOMP: return "SYS_SECCOMP"; + } + static_assert(NSIGSYS == SYS_SECCOMP, "missing SYS_* si_code"); + break; +#endif case SIGTRAP: switch (code) { case TRAP_BRKPT: return "TRAP_BRKPT";