port to more arches

Just copy & paste relevant toolchain defines and kernel headers.

BUG=chromium:307180
TEST=ppc build works

Change-Id: I43b402e6eebbfa5e9ce11ac0c782d6baab9e0a4b
Reviewed-on: https://chromium-review.googlesource.com/173726
Reviewed-by: Jorge Lucangeli Obes <jorgelo@chromium.org>
Commit-Queue: Mike Frysinger <vapier@chromium.org>
Tested-by: Mike Frysinger <vapier@chromium.org>
diff --git a/bpf.h b/bpf.h
index cfa6d3e..59462a2 100644
--- a/bpf.h
+++ b/bpf.h
@@ -67,6 +67,30 @@
 # define EM_ARM 40
 # endif
 #define ARCH_NR	AUDIT_ARCH_ARM
+#elif defined(__hppa__)
+#define ARCH_NR AUDIT_ARCH_PARISC
+#elif defined(__ia64__)
+#define ARCH_NR AUDIT_ARCH_IA64
+#elif defined(__mips__)
+# if defined(__MIPSEB__)
+#define ARCH_NR AUDIT_ARCH_MIPS64
+# else
+#define ARCH_NR AUDIT_ARCH_MIPSEL64
+# endif
+#elif defined(__powerpc64__)
+#define ARCH_NR AUDIT_ARCH_PPC64
+#elif defined(__powerpc__)
+#define ARCH_NR AUDIT_ARCH_PPC
+#elif defined(__s390x__)
+#define ARCH_NR AUDIT_ARCH_S390X
+#elif defined(__s390__)
+#define ARCH_NR AUDIT_ARCH_S390
+#elif defined(__sparc__)
+# if defined(__arch64__)
+#define AUDIT_ARCH_SPARC64
+# else
+#define AUDIT_ARCH_SPARC
+# endif
 #else
 #error "AUDIT_ARCH value unavailable"
 #endif
diff --git a/util.c b/util.c
index 0923ef9..3d5a3c2 100644
--- a/util.c
+++ b/util.c
@@ -10,12 +10,28 @@
 
 #include "libsyscalls.h"
 
+/*
+ * These are syscalls used by the syslog() C library call.  You can find them
+ * by running a simple test program.  See below for x86_64 behavior:
+ * $ cat test.c
+ * main() { syslog(0, "foo"); }
+ * $ gcc test.c -static
+ * $ strace ./a.out
+ * ...
+ * socket(PF_FILE, SOCK_DGRAM|SOCK_CLOEXEC, 0) = 3 <- look for socket connection
+ * connect(...)                                    <- important
+ * sendto(...)                                     <- important
+ * exit_group(0)                                   <- finish!
+ */
 #if defined(__x86_64__)
 const char *log_syscalls[] = { "connect", "sendto" };
 #elif defined(__i386__)
 const char *log_syscalls[] = { "socketcall", "time" };
 #elif defined(__arm__)
 const char *log_syscalls[] = { "connect", "gettimeofday", "send" };
+#elif defined(__powerpc__) || defined(__ia64__) || defined(__hppa__) || \
+      defined(__sparc__)
+const char *log_syscalls[] = { "connect", "send" };
 #else
 #error "Unsupported platform"
 #endif