summaryrefslogtreecommitdiff
path: root/sigchainlib
diff options
context:
space:
mode:
authorTreehugger Robot <treehugger-gerrit@google.com>2018-03-10 04:29:26 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2018-03-10 04:29:26 +0000
commitbfce631960ae2ab381180beb55cf34ab3b445aaa (patch)
tree4670f7e7159390f13b0ce1f5bbd0eb014facff4a /sigchainlib
parente1734a9961b755d9b167c31deae5a2e36f92df2a (diff)
parentedef4ba155f11d2a8544db9e560698a033831934 (diff)
Merge "Do not use sa_restorer if not defined"
Diffstat (limited to 'sigchainlib')
-rw-r--r--sigchainlib/sigchain.cc6
1 files changed, 5 insertions, 1 deletions
diff --git a/sigchainlib/sigchain.cc b/sigchainlib/sigchain.cc
index 61346b1487..3127c5cfbd 100644
--- a/sigchainlib/sigchain.cc
+++ b/sigchainlib/sigchain.cc
@@ -80,7 +80,7 @@ static void log(const char* format, ...) {
#define fatal(...) log(__VA_ARGS__); abort()
-#if defined(__BIONIC__) && !defined(__LP64__)
+#if defined(__BIONIC__) && !defined(__LP64__) && !defined(__mips__)
static int sigismember(const sigset64_t* sigset, int signum) {
return sigismember64(sigset, signum);
}
@@ -223,7 +223,9 @@ class SignalChain {
SigactionType result;
result.sa_flags = action_.sa_flags;
result.sa_handler = action_.sa_handler;
+#if defined(SA_RESTORER)
result.sa_restorer = action_.sa_restorer;
+#endif
memcpy(&result.sa_mask, &action_.sa_mask,
std::min(sizeof(action_.sa_mask), sizeof(result.sa_mask)));
return result;
@@ -237,7 +239,9 @@ class SignalChain {
} else {
action_.sa_flags = new_action->sa_flags;
action_.sa_handler = new_action->sa_handler;
+#if defined(SA_RESTORER)
action_.sa_restorer = new_action->sa_restorer;
+#endif
sigemptyset(&action_.sa_mask);
memcpy(&action_.sa_mask, &new_action->sa_mask,
std::min(sizeof(action_.sa_mask), sizeof(new_action->sa_mask)));