linux_core_dumper: handle missing SIGSYS support

If the kernel/C library headers are old, they might not have the
fields needed for SIGSYS decoding.  Add ifdef checks for that and
skip the logic entirely.  Easier than adding arch-specific siginfo
structs to the codebase.

Bug: google-breakpad:791
Change-Id: Ia473e3ffa61fce4c42cf4c1e73a9df044599bc5c
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/1524447
Reviewed-by: Mark Mentovai <mark@chromium.org>
diff --git a/src/client/linux/minidump_writer/linux_core_dumper.cc b/src/client/linux/minidump_writer/linux_core_dumper.cc
index b24573b..3b1eabb 100644
--- a/src/client/linux/minidump_writer/linux_core_dumper.cc
+++ b/src/client/linux/minidump_writer/linux_core_dumper.cc
@@ -248,7 +248,9 @@
             set_crash_exception_info({info->si_pid, info->si_uid});
             break;
           case MD_EXCEPTION_CODE_LIN_SIGSYS:
+#ifdef si_syscall
             set_crash_exception_info({info->si_syscall, info->si_arch});
+#endif
             break;
         }
         break;
diff --git a/src/client/linux/minidump_writer/linux_core_dumper_unittest.cc b/src/client/linux/minidump_writer/linux_core_dumper_unittest.cc
index 927d5aa..5f27d89 100644
--- a/src/client/linux/minidump_writer/linux_core_dumper_unittest.cc
+++ b/src/client/linux/minidump_writer/linux_core_dumper_unittest.cc
@@ -135,6 +135,12 @@
     return;
   }
 
+#ifndef si_syscall
+  fprintf(stderr, "LinuxCoreDumperTest.VerifyDumpWithMultipleThreads test is "
+          "skipped due to old kernel/C library headers\n");
+  return;
+#endif
+
   const unsigned kNumOfThreads = 2;
   const unsigned kCrashThread = 1;
   const int kCrashSignal = SIGSYS;