1diff -r -u -d /Users/jeffbrown/Downloads/strace-4.6/bjm.c ./bjm.c 2--- /Users/jeffbrown/Downloads/strace-4.6/bjm.c 2009-11-06 09:27:46.000000000 -0800 3+++ ./bjm.c 2012-03-02 15:17:11.000000000 -0800 4@@ -39,7 +39,9 @@ 5 #include <sys/wait.h> 6 #include <sys/resource.h> 7 #include <sys/utsname.h> 8+#ifndef HAVE_ANDROID_OS 9 #include <sys/user.h> 10+#endif 11 #include <sys/syscall.h> 12 #include <signal.h> 13 14diff -r -u -d /Users/jeffbrown/Downloads/strace-4.6/file.c ./file.c 15--- /Users/jeffbrown/Downloads/strace-4.6/file.c 2011-03-03 18:08:02.000000000 -0800 16+++ ./file.c 2012-03-02 15:11:14.000000000 -0800 17@@ -45,6 +45,41 @@ 18 # define kernel_dirent dirent 19 #endif 20 21+#ifdef HAVE_ANDROID_OS 22+#include <linux/fadvise.h> 23+ 24+// ANDROID: From linux/dirent.h 25+ 26+struct dirent64 { 27+ __u64 d_ino; 28+ __s64 d_off; 29+ unsigned short d_reclen; 30+ unsigned char d_type; 31+ char d_name[256]; 32+}; 33+ 34+// ANDROID: From kernel_headers/asm/statfs.h 35+ 36+/* 37+ * With EABI there is 4 bytes of padding added to this structure. 38+ * Let's pack it so the padding goes away to simplify dual ABI support. 39+ * Note that user space does NOT have to pack this structure. 40+ */ 41+struct statfs64 { 42+ __u32 f_type; 43+ __u32 f_bsize; 44+ __u64 f_blocks; 45+ __u64 f_bfree; 46+ __u64 f_bavail; 47+ __u64 f_files; 48+ __u64 f_ffree; 49+ __kernel_fsid_t f_fsid; 50+ __u32 f_namelen; 51+ __u32 f_frsize; 52+ __u32 f_spare[5]; 53+} __attribute__ ((packed,aligned(4))); 54+#endif /* HAVE_ANDROID_OS */ 55+ 56 #ifdef LINUX 57 # ifdef LINUXSPARC 58 struct stat { 59diff -r -u -d /Users/jeffbrown/Downloads/strace-4.6/ioctl.c ./ioctl.c 60--- /Users/jeffbrown/Downloads/strace-4.6/ioctl.c 2011-01-15 12:15:31.000000000 -0800 61+++ ./ioctl.c 2012-03-02 15:53:36.000000000 -0800 62@@ -155,9 +155,11 @@ 63 case 0x03: 64 case 0x12: 65 return block_ioctl(tcp, code, arg); 66+#ifndef HAVE_ANDROID_OS 67 case 0x22: 68 return scsi_ioctl(tcp, code, arg); 69 #endif 70+#endif 71 default: 72 break; 73 } 74diff -r -u -d /Users/jeffbrown/Downloads/strace-4.6/ipc.c ./ipc.c 75--- /Users/jeffbrown/Downloads/strace-4.6/ipc.c 2010-03-31 15:22:01.000000000 -0700 76+++ ./ipc.c 2012-03-02 16:12:52.000000000 -0800 77@@ -40,9 +40,15 @@ 78 79 #include <fcntl.h> 80 #include <sys/ipc.h> 81+#ifdef HAVE_ANDROID_OS 82+#include <linux/sem.h> 83+#include <linux/msg.h> 84+#include <linux/shm.h> 85+#else 86 #include <sys/sem.h> 87 #include <sys/msg.h> 88 #include <sys/shm.h> 89+#endif 90 91 #ifndef MSG_STAT 92 #define MSG_STAT 11 93diff -r -u -d /Users/jeffbrown/Downloads/strace-4.6/process.c ./process.c 94--- /Users/jeffbrown/Downloads/strace-4.6/process.c 2011-03-14 14:58:59.000000000 -0700 95+++ ./process.c 2012-03-02 15:16:28.000000000 -0800 96@@ -45,7 +45,11 @@ 97 #include <sys/wait.h> 98 #include <sys/resource.h> 99 #include <sys/utsname.h> 100+#ifdef HAVE_ANDROID_OS 101+#include <asm/user.h> 102+#else 103 #include <sys/user.h> 104+#endif 105 #include <sys/syscall.h> 106 #include <signal.h> 107 #ifdef SUNOS4 108@@ -114,6 +118,10 @@ 109 #define GETGROUPS32_T __kernel_gid32_t 110 #endif /* LINUX */ 111 112+#ifdef HAVE_ANDROID_OS 113+#define __sched_priority sched_priority 114+#endif 115+ 116 #if defined(LINUX) && defined(IA64) 117 # include <asm/ptrace_offsets.h> 118 # include <asm/rse.h> 119diff -r -u -d /Users/jeffbrown/Downloads/strace-4.6/signal.c ./signal.c 120--- /Users/jeffbrown/Downloads/strace-4.6/signal.c 2011-03-10 15:14:47.000000000 -0800 121+++ ./signal.c 2012-03-02 15:22:07.000000000 -0800 122@@ -37,9 +37,17 @@ 123 124 #include <stdint.h> 125 #include <signal.h> 126+#ifndef HAVE_ANDROID_OS 127 #include <sys/user.h> 128+#endif 129 #include <fcntl.h> 130 131+#ifdef HAVE_ANDROID_OS 132+//FIXME use "sigprocmask" or something 133+#define sigmask(sig) (1UL << ((sig) - 1)) 134+#define sigcontext_struct sigcontext 135+#endif 136+ 137 #ifdef SVR4 138 #include <sys/ucontext.h> 139 #endif /* SVR4 */ 140@@ -455,7 +463,7 @@ 141 142 #endif /* LINUX */ 143 144-#if __GLIBC_MINOR__ < 1 145+#if __GLIBC_MINOR__ < 1 && !defined(HAVE_ANDROID_OS) 146 /* Type for data associated with a signal. */ 147 typedef union sigval 148 { 149diff -r -u -d /Users/jeffbrown/Downloads/strace-4.6/strace.c ./strace.c 150--- /Users/jeffbrown/Downloads/strace-4.6/strace.c 2011-03-10 14:25:03.000000000 -0800 151+++ ./strace.c 2012-03-02 16:55:15.000000000 -0800 152@@ -38,7 +38,10 @@ 153 #include <sys/param.h> 154 #include <fcntl.h> 155 #include <sys/resource.h> 156+#ifdef HAVE_ANDROID_OS 157+#define wait4 __wait4 158 #include <sys/wait.h> 159+#endif 160 #include <sys/stat.h> 161 #include <pwd.h> 162 #include <grp.h> 163diff -r -u -d /Users/jeffbrown/Downloads/strace-4.6/syscall.c ./syscall.c 164--- /Users/jeffbrown/Downloads/strace-4.6/syscall.c 2011-02-18 16:02:27.000000000 -0800 165+++ ./syscall.c 2012-03-02 15:00:35.000000000 -0800 166@@ -38,10 +38,16 @@ 167 #include <signal.h> 168 #include <time.h> 169 #include <errno.h> 170+#ifndef HAVE_ANDROID_OS 171 #include <sys/user.h> 172+#endif 173 #include <sys/syscall.h> 174 #include <sys/param.h> 175 176+#ifdef HAVE_ANDROID_OS 177+#include "syscall-android.h" 178+#endif 179+ 180 #ifdef HAVE_SYS_REG_H 181 #include <sys/reg.h> 182 #ifndef PTRACE_PEEKUSR 183@@ -2600,6 +2606,7 @@ 184 } 185 186 switch (known_scno(tcp)) { 187+#ifndef __ARM_EABI__ 188 #ifdef SYS_socket_subcall 189 case SYS_socketcall: 190 decode_subcall(tcp, SYS_socket_subcall, 191@@ -2612,6 +2619,7 @@ 192 SYS_ipc_nsubcalls, shift_style); 193 break; 194 #endif 195+#endif 196 #ifdef SVR4 197 #ifdef SYS_pgrpsys_subcall 198 case SYS_pgrpsys: 199diff -r -u -d /Users/jeffbrown/Downloads/strace-4.6/system.c ./system.c 200--- /Users/jeffbrown/Downloads/strace-4.6/system.c 2011-02-22 02:22:13.000000000 -0800 201+++ ./system.c 2012-03-02 15:50:24.000000000 -0800 202@@ -32,6 +32,11 @@ 203 204 #include "defs.h" 205 206+#ifdef HAVE_ANDROID_OS 207+#undef __unused 208+#include <linux/socket.h> 209+#endif 210+ 211 #ifdef LINUX 212 #define _LINUX_SOCKET_H 213 #define _LINUX_FS_H 214diff -r -u -d /Users/jeffbrown/Downloads/strace-4.6/time.c ./time.c 215--- /Users/jeffbrown/Downloads/strace-4.6/time.c 2011-03-03 18:08:02.000000000 -0800 216+++ ./time.c 2012-03-02 15:23:05.000000000 -0800 217@@ -33,7 +33,11 @@ 218 219 #ifdef LINUX 220 #include <linux/version.h> 221+#ifdef HAVE_ANDROID_OS 222+#include <linux/timex.h> 223+#else 224 #include <sys/timex.h> 225+#endif 226 #include <linux/ioctl.h> 227 #include <linux/rtc.h> 228 229diff -r -u -d /Users/jeffbrown/Downloads/strace-4.6/util.c ./util.c 230--- /Users/jeffbrown/Downloads/strace-4.6/util.c 2011-03-03 18:08:02.000000000 -0800 231+++ ./util.c 2012-03-02 15:01:45.000000000 -0800 232@@ -37,7 +37,9 @@ 233 234 #include <signal.h> 235 #include <sys/syscall.h> 236+#ifndef HAVE_ANDROID_OS 237 #include <sys/user.h> 238+#endif 239 #include <sys/param.h> 240 #include <fcntl.h> 241 #if HAVE_SYS_UIO_H 242@@ -49,6 +51,10 @@ 243 #include <link.h> 244 #endif /* SUNOS4 */ 245 246+#ifdef HAVE_ANDROID_OS 247+#include "syscall-android.h" 248+#endif 249+ 250 #if defined(linux) && (__GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 1)) 251 #include <linux/ptrace.h> 252 #endif 253