Do not use sa_restorer if not defined

Some architectures (mips) don't have sa_restorer in sigaction so
don't use it if SA_RESTORER is not defined.

This fix aosp_mips-eng build.

Test: successful aosp_mips-eng build

Change-Id: I233c21bc45fbda178fb58552428534d2ea52dccc
diff --git a/sigchainlib/sigchain.cc b/sigchainlib/sigchain.cc
index 61346b1..3127c5c 100644
--- a/sigchainlib/sigchain.cc
+++ b/sigchainlib/sigchain.cc
@@ -80,7 +80,7 @@
 
 #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 @@
       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 @@
     } 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)));
diff --git a/test/004-SignalTest/signaltest.cc b/test/004-SignalTest/signaltest.cc
index 67118d5..49fe369 100644
--- a/test/004-SignalTest/signaltest.cc
+++ b/test/004-SignalTest/signaltest.cc
@@ -102,10 +102,14 @@
 bool compare_sigaction(const struct sigaction* lhs, const struct sigaction* rhs) {
   // bionic's definition of `struct sigaction` has internal padding bytes, so we can't just do a
   // naive memcmp of the entire struct.
+#if defined(SA_RESTORER)
+  if (lhs->sa_restorer != rhs->sa_restorer) {
+    return false;
+  }
+#endif
   return memcmp(&lhs->sa_mask, &rhs->sa_mask, sizeof(lhs->sa_mask)) == 0 &&
          lhs->sa_sigaction == rhs->sa_sigaction &&
-         lhs->sa_flags == rhs->sa_flags &&
-         lhs->sa_restorer == rhs->sa_restorer;
+         lhs->sa_flags == rhs->sa_flags;
 }
 
 extern "C" JNIEXPORT void JNICALL Java_Main_initSignalTest(JNIEnv*, jclass) {
diff --git a/test/115-native-bridge/nativebridge.cc b/test/115-native-bridge/nativebridge.cc
index 3b35209..a74f763 100644
--- a/test/115-native-bridge/nativebridge.cc
+++ b/test/115-native-bridge/nativebridge.cc
@@ -229,7 +229,9 @@
   struct sigaction64 tmp2;
   sigemptyset64(&tmp2.sa_mask);
   tmp2.sa_sigaction = test_sigaction_handler;
+#if defined(SA_RESTORER)
   tmp2.sa_restorer = nullptr;
+#endif
 
   sigaction64(SIGSEGV, &tmp2, nullptr);
   sigaction64(SIGILL, &tmp2, nullptr);