diff -ru strace-4.8.orig/defs.h strace-4.8/defs.h
--- strace-4.8.orig/defs.h	2013-05-14 14:10:42.000000000 +0000
+++ strace-4.8/defs.h	2013-09-20 14:30:38.785856744 +0000
@@ -155,7 +155,7 @@
     || defined(METAG) \
     || defined(TILE) \
     || defined(XTENSA) \
-    ) && defined(__GLIBC__)
+    ) && defined(__linux__)
 # include <sys/ptrace.h>
 #else
 /* Work around awkward prototype in ptrace.h. */
@@ -222,7 +222,7 @@
 # define PTRACE_EVENT_EXIT	6
 #endif
 
-#if !defined(__GLIBC__)
+#if !defined(__GLIBC__) && !defined(PTRACE_PEEKUSER)
 # define PTRACE_PEEKUSER PTRACE_PEEKUSR
 # define PTRACE_POKEUSER PTRACE_POKEUSR
 #endif
diff -ru strace-4.8.orig/desc.c strace-4.8/desc.c
--- strace-4.8.orig/desc.c	2013-05-01 22:39:10.000000000 +0000
+++ strace-4.8/desc.c	2013-09-20 14:30:38.795856744 +0000
@@ -299,7 +299,7 @@
 #ifdef X32
 	tprintf(", start=%lld, len=%lld", fl.l_start, fl.l_len);
 #else
-	tprintf(", start=%ld, len=%ld", fl.l_start, fl.l_len);
+	tprintf(", start=%ld, len=%ld", (long) fl.l_start, (long) fl.l_len);
 #endif
 	if (getlk)
 		tprintf(", pid=%lu}", (unsigned long) fl.l_pid);
diff -ru strace-4.8.orig/file.c strace-4.8/file.c
--- strace-4.8.orig/file.c	2013-05-06 18:23:01.000000000 +0000
+++ strace-4.8/file.c	2013-09-20 14:30:38.795856744 +0000
@@ -632,7 +632,7 @@
 	return 0;
 }
 
-#if _LFS64_LARGEFILE
+#if defined _LFS64_LARGEFILE || defined HAVE_LONG_LONG_OFF_T
 int
 sys_truncate64(struct tcb *tcp)
 {
@@ -654,7 +654,7 @@
 	return 0;
 }
 
-#if _LFS64_LARGEFILE
+#if defined _LFS64_LARGEFILE || defined HAVE_LONG_LONG_OFF_T
 int
 sys_ftruncate64(struct tcb *tcp)
 {
@@ -2322,7 +2322,7 @@
 	return 0;
 }
 
-#if _LFS64_LARGEFILE
+#if defined _LFS64_LARGEFILE || defined HAVE_LONG_LONG_OFF_T
 int
 sys_getdents64(struct tcb *tcp)
 {
diff -ru strace-4.8.orig/net.c strace-4.8/net.c
--- strace-4.8.orig/net.c	2013-05-17 22:20:02.000000000 +0000
+++ strace-4.8/net.c	2013-09-20 14:30:38.805856744 +0000
@@ -95,12 +95,14 @@
 #endif
 
 /* Under Linux these are enums so we can't test for them with ifdef. */
+#if !defined(IPPROTO_MAX)
 #define IPPROTO_EGP IPPROTO_EGP
 #define IPPROTO_PUP IPPROTO_PUP
 #define IPPROTO_IDP IPPROTO_IDP
 #define IPPROTO_IGMP IPPROTO_IGMP
 #define IPPROTO_RAW IPPROTO_RAW
 #define IPPROTO_MAX IPPROTO_MAX
+#endif
 
 static const struct xlat domains[] = {
 #ifdef PF_UNSPEC
diff -ru strace-4.8.orig/process.c strace-4.8/process.c
--- strace-4.8.orig/process.c	2013-05-17 22:22:19.000000000 +0000
+++ strace-4.8/process.c	2013-09-20 14:30:38.805856744 +0000
@@ -2857,7 +2857,7 @@
 		if (umove(tcp, tcp->u_arg[2], &p) < 0)
 			tprintf(", %#lx", tcp->u_arg[2]);
 		else
-			tprintf(", { %d }", p.__sched_priority);
+			tprintf(", { %d }", p.sched_priority);
 	}
 	return 0;
 }
@@ -2872,7 +2872,7 @@
 		if (umove(tcp, tcp->u_arg[1], &p) < 0)
 			tprintf("%#lx", tcp->u_arg[1]);
 		else
-			tprintf("{ %d }", p.__sched_priority);
+			tprintf("{ %d }", p.sched_priority);
 	}
 	return 0;
 }
@@ -2885,7 +2885,7 @@
 		if (umove(tcp, tcp->u_arg[1], &p) < 0)
 			tprintf("%d, %#lx", (int) tcp->u_arg[0], tcp->u_arg[1]);
 		else
-			tprintf("%d, { %d }", (int) tcp->u_arg[0], p.__sched_priority);
+			tprintf("%d, { %d }", (int) tcp->u_arg[0], p.sched_priority);
 	}
 	return 0;
 }
diff -ru strace-4.8.orig/signal.c strace-4.8/signal.c
--- strace-4.8.orig/signal.c	2013-05-23 13:41:23.000000000 +0000
+++ strace-4.8/signal.c	2013-09-20 14:30:38.815856744 +0000
@@ -59,6 +59,7 @@
 #ifdef IA64
 # include <asm/ptrace_offsets.h>
 #endif
+#include <asm/ptrace.h>
 
 #if defined(SPARC) || defined(SPARC64) || defined(MIPS)
 typedef struct {
diff -ru strace-4.8.orig/strace.c strace-4.8/strace.c
--- strace-4.8.orig/strace.c	2013-05-28 21:49:16.000000000 +0000
+++ strace-4.8/strace.c	2013-09-20 14:30:38.815856744 +0000
@@ -506,7 +506,7 @@
 				perror_msg_and_die("dup2");
 			close(fds[0]);
 		}
-		execl(_PATH_BSHELL, "sh", "-c", command, NULL);
+		execl(_PATH_BSHELL, "sh", "-c", command, (void*) 0);
 		perror_msg_and_die("Can't execute '%s'", _PATH_BSHELL);
 	}
 
diff -ru strace-4.8.orig/syscall.c strace-4.8/syscall.c
--- strace-4.8.orig/syscall.c	2013-05-14 14:10:42.000000000 +0000
+++ strace-4.8/syscall.c	2013-09-20 14:30:38.825856744 +0000
@@ -72,13 +72,7 @@
 # include <elf.h>
 #endif
 
-#if defined(AARCH64)
-# include <asm/ptrace.h>
-#endif
-
-#if defined(XTENSA)
-# include <asm/ptrace.h>
-#endif
+#include <asm/ptrace.h>
 
 #ifndef ERESTARTSYS
 # define ERESTARTSYS	512
diff -ru strace-4.8.orig/time.c strace-4.8/time.c
--- strace-4.8.orig/time.c	2012-05-01 21:17:51.000000000 +0000
+++ strace-4.8/time.c	2013-09-20 14:32:49.165856719 +0000
@@ -774,7 +774,11 @@
 			/* _pad[0] is the _tid field which might not be
 			   present in the userlevel definition of the
 			   struct.  */
+#if defined(__GLIBC__)
 			tprintf("{%d}", sev._sigev_un._pad[0]);
+#else
+			tprintf("{%d}", (int) sev.__pad[0]);
+#endif
 		else if (sev.sigev_notify == SIGEV_THREAD)
 			tprintf("{%p, %p}", sev.sigev_notify_function,
 				sev.sigev_notify_attributes);
