summaryrefslogtreecommitdiffstats
path: root/debuggerd
diff options
context:
space:
mode:
authorElliott Hughes <enh@google.com>2016-09-02 16:15:58 -0700
committerElliott Hughes <enh@google.com>2016-09-07 13:55:50 -0700
commit6fff551728f75e35b69bd59f2bc722a72d5c6d61 (patch)
tree96aceca07fa184231b2fc8eaabbe41cc7b2c3463 /debuggerd
parentf74553f85270fcb9263c98c472fc3fdc93c18114 (diff)
downloadcore-6fff551728f75e35b69bd59f2bc722a72d5c6d61.tar.gz
core-6fff551728f75e35b69bd59f2bc722a72d5c6d61.tar.bz2
core-6fff551728f75e35b69bd59f2bc722a72d5c6d61.zip
Teach debuggerd about SIGSYS SYS_SECCOMP signals.
These should be easier to interpret. Bug: http://b/31171101 Change-Id: I362361d218390ab2306f86976172f8365b26b6ef
Diffstat (limited to 'debuggerd')
-rw-r--r--debuggerd/client/debuggerd_client.cpp3
-rw-r--r--debuggerd/tombstone.cpp9
2 files changed, 12 insertions, 0 deletions
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";