Remove an unnecessary C library workaround and regenerate the patch.
Change-Id: I800b8ef26b169eaef902f85eaf8b3864482e35ec
diff --git a/Android.patch b/Android.patch
index e4848eb..9885fe3 100644
--- a/Android.patch
+++ b/Android.patch
@@ -1,19 +1,6 @@
-diff -r -u -d /tmp/strace-4.6/bjm.c ./bjm.c
---- /tmp/strace-4.6/bjm.c 2009-11-06 09:27:46.000000000 -0800
-+++ ./bjm.c 2013-01-04 12:26:34.977221825 -0800
-@@ -39,7 +39,9 @@
- #include <sys/wait.h>
- #include <sys/resource.h>
- #include <sys/utsname.h>
-+#ifndef HAVE_ANDROID_OS
- #include <sys/user.h>
-+#endif
- #include <sys/syscall.h>
- #include <signal.h>
-
-diff -r -u -d /tmp/strace-4.6/defs.h ./defs.h
---- /tmp/strace-4.6/defs.h 2011-03-15 10:19:09.000000000 -0700
-+++ ./defs.h 2013-01-04 12:26:34.977221825 -0800
+diff -r -u -d /home/enh/Downloads/strace-4.6/defs.h ./defs.h
+--- /home/enh/Downloads/strace-4.6/defs.h 2011-03-15 10:19:09.000000000 -0700
++++ ./defs.h 2014-01-03 15:29:29.552592456 -0800
@@ -33,10 +33,6 @@
#include "config.h"
#endif
@@ -25,10 +12,30 @@
#ifdef linux
#include <features.h>
#endif
-diff -r -u -d /tmp/strace-4.6/file.c ./file.c
---- /tmp/strace-4.6/file.c 2011-03-03 18:08:02.000000000 -0800
-+++ ./file.c 2013-01-04 12:26:34.977221825 -0800
-@@ -45,6 +45,60 @@
+@@ -319,13 +315,19 @@
+ # define PTRACE_GETSIGINFO 0x4202
+ # endif
+ # if !HAVE_DECL_PTRACE_O_TRACEFORK
++# ifndef PTRACE_O_TRACEFORK
+ # define PTRACE_O_TRACEFORK 0x00000002
++# endif
+ # endif
+ # if !HAVE_DECL_PTRACE_O_TRACEVFORK
++# ifndef PTRACE_O_TRACEVFORK
+ # define PTRACE_O_TRACEVFORK 0x00000004
++# endif
+ # endif
+ # if !HAVE_DECL_PTRACE_O_TRACECLONE
++# ifndef PTRACE_O_TRACECLONE
+ # define PTRACE_O_TRACECLONE 0x00000008
++# endif
+ # endif
+
+ # if !HAVE_DECL_PTRACE_EVENT_FORK
+diff -r -u -d /home/enh/Downloads/strace-4.6/file.c ./file.c
+--- /home/enh/Downloads/strace-4.6/file.c 2011-03-03 18:08:02.000000000 -0800
++++ ./file.c 2014-01-03 15:29:29.552592456 -0800
+@@ -45,6 +45,21 @@
# define kernel_dirent dirent
#endif
@@ -45,93 +52,14 @@
+ char d_name[256];
+};
+
-+// ANDROID: From kernel_headers/asm/statfs.h
-+
-+#if !defined(MIPS)
-+/*
-+ * With EABI there is 4 bytes of padding added to this structure.
-+ * Let's pack it so the padding goes away to simplify dual ABI support.
-+ * Note that user space does NOT have to pack this structure.
-+ */
-+struct statfs64 {
-+ __u32 f_type;
-+ __u32 f_bsize;
-+ __u64 f_blocks;
-+ __u64 f_bfree;
-+ __u64 f_bavail;
-+ __u64 f_files;
-+ __u64 f_ffree;
-+ __kernel_fsid_t f_fsid;
-+ __u32 f_namelen;
-+ __u32 f_frsize;
-+ __u32 f_spare[5];
-+} __attribute__ ((packed,aligned(4)));
-+#else
-+struct statfs64 {
-+ __u32 f_type;
-+ __u32 f_bsize;
-+ __u32 f_frsize;
-+ __u32 __pad;
-+ __u64 f_blocks;
-+ __u64 f_bfree;
-+ __u64 f_files;
-+ __u64 f_ffree;
-+ __u64 f_bavail;
-+ __kernel_fsid_t f_fsid;
-+ __u32 f_namelen;
-+ __u32 f_spare[6];
-+};
-+#endif
-+
-+
+#endif /* HAVE_ANDROID_OS */
+
#ifdef LINUX
# ifdef LINUXSPARC
struct stat {
-@@ -1732,11 +1786,19 @@
- (unsigned long)statbuf.f_bsize,
- (unsigned long)statbuf.f_blocks,
- (unsigned long)statbuf.f_bfree);
-+#ifdef MIPS
-+ tprintf("f_bavail=%lu, f_files=%lu, f_ffree=%lu, f_fsid={%ld, %ld}",
-+ (unsigned long)statbuf.f_bavail,
-+ (unsigned long)statbuf.f_files,
-+ (unsigned long)statbuf.f_ffree,
-+ statbuf.f_fsid.val[0], statbuf.f_fsid.val[1]);
-+#else
- tprintf("f_bavail=%lu, f_files=%lu, f_ffree=%lu, f_fsid={%d, %d}",
- (unsigned long)statbuf.f_bavail,
- (unsigned long)statbuf.f_files,
- (unsigned long)statbuf.f_ffree,
- statbuf.f_fsid.__val[0], statbuf.f_fsid.__val[1]);
-+#endif
- #ifdef LINUX
- tprintf(", f_namelen=%lu", (unsigned long)statbuf.f_namelen);
- #endif /* LINUX */
-@@ -1790,11 +1852,19 @@
- (unsigned long long)statbuf.f_bsize,
- (unsigned long long)statbuf.f_blocks,
- (unsigned long long)statbuf.f_bfree);
-+#ifdef MIPS
-+ tprintf("f_bavail=%llu, f_files=%llu, f_ffree=%llu, f_fsid={%ld, %ld}",
-+ (unsigned long long)statbuf.f_bavail,
-+ (unsigned long long)statbuf.f_files,
-+ (unsigned long long)statbuf.f_ffree,
-+ statbuf.f_fsid.val[0], statbuf.f_fsid.val[1]);
-+#else
- tprintf("f_bavail=%llu, f_files=%llu, f_ffree=%llu, f_fsid={%d, %d}",
- (unsigned long long)statbuf.f_bavail,
- (unsigned long long)statbuf.f_files,
- (unsigned long long)statbuf.f_ffree,
- statbuf.f_fsid.__val[0], statbuf.f_fsid.__val[1]);
-+#endif
- tprintf(", f_namelen=%lu", (unsigned long)statbuf.f_namelen);
- #ifdef _STATFS_F_FRSIZE
- tprintf(", f_frsize=%llu", (unsigned long long)statbuf.f_frsize);
-diff -r -u -d /tmp/strace-4.6/ioctl.c ./ioctl.c
---- /tmp/strace-4.6/ioctl.c 2011-01-15 12:15:31.000000000 -0800
-+++ ./ioctl.c 2013-01-04 12:26:34.977221825 -0800
+diff -r -u -d /home/enh/Downloads/strace-4.6/ioctl.c ./ioctl.c
+--- /home/enh/Downloads/strace-4.6/ioctl.c 2011-01-15 12:15:31.000000000 -0800
++++ ./ioctl.c 2014-01-03 15:29:29.552592456 -0800
@@ -155,9 +155,11 @@
case 0x03:
case 0x12:
@@ -144,9 +72,9 @@
default:
break;
}
-diff -r -u -d /tmp/strace-4.6/ipc.c ./ipc.c
---- /tmp/strace-4.6/ipc.c 2010-03-31 15:22:01.000000000 -0700
-+++ ./ipc.c 2013-01-04 12:26:34.977221825 -0800
+diff -r -u -d /home/enh/Downloads/strace-4.6/ipc.c ./ipc.c
+--- /home/enh/Downloads/strace-4.6/ipc.c 2010-03-31 15:22:01.000000000 -0700
++++ ./ipc.c 2014-01-03 15:29:29.552592456 -0800
@@ -40,9 +40,15 @@
#include <fcntl.h>
@@ -163,22 +91,10 @@
#ifndef MSG_STAT
#define MSG_STAT 11
-diff -r -u -d /tmp/strace-4.6/process.c ./process.c
---- /tmp/strace-4.6/process.c 2011-03-14 14:58:59.000000000 -0700
-+++ ./process.c 2013-01-04 12:26:34.987221830 -0800
-@@ -45,7 +45,11 @@
- #include <sys/wait.h>
- #include <sys/resource.h>
- #include <sys/utsname.h>
-+#ifdef HAVE_ANDROID_OS
-+#include <asm/user.h>
-+#else
- #include <sys/user.h>
-+#endif
- #include <sys/syscall.h>
- #include <signal.h>
- #ifdef SUNOS4
-@@ -114,6 +118,10 @@
+diff -r -u -d /home/enh/Downloads/strace-4.6/process.c ./process.c
+--- /home/enh/Downloads/strace-4.6/process.c 2011-03-14 14:58:59.000000000 -0700
++++ ./process.c 2014-01-03 15:29:29.552592456 -0800
+@@ -114,6 +114,10 @@
#define GETGROUPS32_T __kernel_gid32_t
#endif /* LINUX */
@@ -189,16 +105,11 @@
#if defined(LINUX) && defined(IA64)
# include <asm/ptrace_offsets.h>
# include <asm/rse.h>
-diff -r -u -d /tmp/strace-4.6/signal.c ./signal.c
---- /tmp/strace-4.6/signal.c 2011-03-10 15:14:47.000000000 -0800
-+++ ./signal.c 2013-01-04 12:26:34.987221830 -0800
-@@ -37,9 +37,17 @@
-
- #include <stdint.h>
- #include <signal.h>
-+#ifndef HAVE_ANDROID_OS
+diff -r -u -d /home/enh/Downloads/strace-4.6/signal.c ./signal.c
+--- /home/enh/Downloads/strace-4.6/signal.c 2011-03-10 15:14:47.000000000 -0800
++++ ./signal.c 2014-01-07 14:53:10.703113250 -0800
+@@ -40,6 +40,12 @@
#include <sys/user.h>
-+#endif
#include <fcntl.h>
+#ifdef HAVE_ANDROID_OS
@@ -210,7 +121,7 @@
#ifdef SVR4
#include <sys/ucontext.h>
#endif /* SVR4 */
-@@ -455,7 +463,7 @@
+@@ -455,7 +461,7 @@
#endif /* LINUX */
@@ -219,7 +130,80 @@
/* Type for data associated with a signal. */
typedef union sigval
{
-@@ -1492,6 +1500,7 @@
+@@ -1091,7 +1097,12 @@
+
+ #ifdef HAVE_SIGACTION
+
+-#ifdef LINUX
++/* For MIPS, struct sigaction is common between kernel and userland */
++#if defined(LINUX) && !defined(MIPS)
++#define USE_OLD_SIGACTION
++#endif
++
++#ifdef USE_OLD_SIGACTION
+ struct old_sigaction {
+ __sighandler_t __sa_handler;
+ unsigned long sa_mask;
+@@ -1099,7 +1110,7 @@
+ void (*sa_restorer)(void);
+ };
+ #define SA_HANDLER __sa_handler
+-#endif /* LINUX */
++#endif /* USE_OLD_SIGACTION */
+
+ #ifndef SA_HANDLER
+ #define SA_HANDLER sa_handler
+@@ -1110,7 +1121,7 @@
+ struct tcb *tcp;
+ {
+ long addr;
+-#ifdef LINUX
++#ifdef USE_OLD_SIGACTION
+ sigset_t sigset;
+ struct old_sigaction sa;
+ #else
+@@ -1159,28 +1170,24 @@
+ kill(tcp->pid, SIGSTOP);
+ }
+ #endif /* !USE_PROCFS */
+- tprintf("{%#lx, ", (long) sa.SA_HANDLER);
+-#ifndef LINUX
+- printsigmask (&sa.sa_mask, 0);
++ tprintf("{%p, ", sa.SA_HANDLER);
++ }
++#ifndef USE_OLD_SIGACTION
++ printsigmask (&sa.sa_mask, 0);
+ #else
+- long_to_sigset(sa.sa_mask, &sigset);
+- printsigmask(&sigset, 0);
++ long_to_sigset(sa.sa_mask, &sigset);
++ printsigmask(&sigset, 0);
+ #endif
+- tprintf(", ");
+- printflags(sigact_flags, sa.sa_flags, "SA_???");
+-#ifdef SA_RESTORER
+- if (sa.sa_flags & SA_RESTORER)
+- tprintf(", %p", sa.sa_restorer);
++ tprintf(", ");
++ printflags(sigact_flags, sa.sa_flags, "SA_???");
++#if defined(SA_RESTORER) && !defined(MIPS)
++ if (sa.sa_flags & SA_RESTORER)
++ tprintf(", %p", sa.sa_restorer);
+ #endif
+- tprintf("}");
+- }
++ tprintf("}");
+ }
+ if (entering(tcp))
+ tprintf(", ");
+-#ifdef LINUX
+- else
+- tprintf(", %#lx", (unsigned long) sa.sa_restorer);
+-#endif
+ return 0;
+ }
+
+@@ -1492,6 +1499,7 @@
tcp->u_arg[0] = 0;
sp = regs.regs[29];
if (umove(tcp, sp, &si) < 0)
@@ -227,20 +211,81 @@
tcp->u_arg[0] = 1;
tcp->u_arg[1] = si.si_mask;
} else {
-diff -r -u -d /tmp/strace-4.6/syscall.c ./syscall.c
---- /tmp/strace-4.6/syscall.c 2011-02-18 16:02:27.000000000 -0800
-+++ ./syscall.c 2013-03-21 17:57:17.999238040 -0700
-@@ -38,7 +38,9 @@
- #include <signal.h>
- #include <time.h>
- #include <errno.h>
-+#ifndef HAVE_ANDROID_OS
- #include <sys/user.h>
-+#endif
- #include <sys/syscall.h>
- #include <sys/param.h>
+@@ -1934,9 +1942,13 @@
-@@ -2600,6 +2602,7 @@
+
+ /* Structure describing the action to be taken when a signal arrives. */
++#ifdef MIPS
++#define new_sigaction sigaction
++#define new_sigaction2 sigaction
++#else
+ struct new_sigaction
+ {
+- __sighandler_t __sa_handler;
++ __sighandler_t SA_HANDLER;
+ unsigned long sa_flags;
+ void (*sa_restorer) (void);
+ /* Kernel treats sa_mask as an array of longs. */
+@@ -1945,12 +1957,12 @@
+ /* Same for i386-on-x86_64 and similar cases */
+ struct new_sigaction32
+ {
+- uint32_t __sa_handler;
++ uint32_t SA_HANDLER;
+ uint32_t sa_flags;
+ uint32_t sa_restorer;
+ uint32_t sa_mask[2 * (NSIG / sizeof(long) ? NSIG / sizeof(long) : 1)];
+ };
+-
++#endif
+
+ int
+ sys_rt_sigaction(struct tcb *tcp)
+@@ -1983,9 +1995,11 @@
+ r = umove(tcp, addr, &sa32);
+ if (r >= 0) {
+ memset(&sa, 0, sizeof(sa));
+- sa.__sa_handler = (void*)(unsigned long)sa32.__sa_handler;
++ sa.SA_HANDLER = (void*)(unsigned long)sa32.SA_HANDLER;
+ sa.sa_flags = sa32.sa_flags;
++#ifndef MIPS
+ sa.sa_restorer = (void*)(unsigned long)sa32.sa_restorer;
++#endif
+ /* Kernel treats sa_mask as an array of longs.
+ * For 32-bit process, "long" is uint32_t, thus, for example,
+ * 32th bit in sa_mask will end up as bit 0 in sa_mask[1].
+@@ -2013,14 +2027,14 @@
+ * be manipulated by strace. In order to prevent the
+ * compiler from generating code to manipulate
+ * SA_HANDLER we cast the function pointers to long. */
+- if ((long)sa.__sa_handler == (long)SIG_ERR)
++ if ((long)sa.SA_HANDLER == (long)SIG_ERR)
+ tprintf("{SIG_ERR, ");
+- else if ((long)sa.__sa_handler == (long)SIG_DFL)
++ else if ((long)sa.SA_HANDLER == (long)SIG_DFL)
+ tprintf("{SIG_DFL, ");
+- else if ((long)sa.__sa_handler == (long)SIG_IGN)
++ else if ((long)sa.SA_HANDLER == (long)SIG_IGN)
+ tprintf("{SIG_IGN, ");
+ else
+- tprintf("{%#lx, ", (long) sa.__sa_handler);
++ tprintf("{%#lx, ", (long) sa.SA_HANDLER);
+ /* Questionable code below.
+ * Kernel won't handle sys_rt_sigaction
+ * with wrong sigset size (just returns EINVAL)
+@@ -2039,7 +2053,7 @@
+ printsigmask(&sigset, 1);
+ tprintf(", ");
+ printflags(sigact_flags, sa.sa_flags, "SA_???");
+-#ifdef SA_RESTORER
++#if defined(SA_RESTORER) && !defined(MIPS)
+ if (sa.sa_flags & SA_RESTORER)
+ tprintf(", %p", sa.sa_restorer);
+ #endif
+diff -r -u -d /home/enh/Downloads/strace-4.6/syscall.c ./syscall.c
+--- /home/enh/Downloads/strace-4.6/syscall.c 2011-02-18 16:02:27.000000000 -0800
++++ ./syscall.c 2014-01-07 14:53:32.312851042 -0800
+@@ -2600,6 +2600,7 @@
}
switch (known_scno(tcp)) {
@@ -248,7 +293,7 @@
#ifdef SYS_socket_subcall
case SYS_socketcall:
decode_subcall(tcp, SYS_socket_subcall,
-@@ -2612,6 +2615,7 @@
+@@ -2612,6 +2613,7 @@
SYS_ipc_nsubcalls, shift_style);
break;
#endif
@@ -256,9 +301,9 @@
#ifdef SVR4
#ifdef SYS_pgrpsys_subcall
case SYS_pgrpsys:
-diff -r -u -d /tmp/strace-4.6/system.c ./system.c
---- /tmp/strace-4.6/system.c 2011-02-22 02:22:13.000000000 -0800
-+++ ./system.c 2013-03-21 17:27:34.050083824 -0700
+diff -r -u -d /home/enh/Downloads/strace-4.6/system.c ./system.c
+--- /home/enh/Downloads/strace-4.6/system.c 2011-02-22 02:22:13.000000000 -0800
++++ ./system.c 2014-01-03 15:29:29.552592456 -0800
@@ -32,6 +32,11 @@
#include "defs.h"
@@ -280,9 +325,9 @@
#include <asm/sysmips.h>
#endif
-diff -r -u -d /tmp/strace-4.6/time.c ./time.c
---- /tmp/strace-4.6/time.c 2011-03-03 18:08:02.000000000 -0800
-+++ ./time.c 2013-01-04 12:26:34.987221830 -0800
+diff -r -u -d /home/enh/Downloads/strace-4.6/time.c ./time.c
+--- /home/enh/Downloads/strace-4.6/time.c 2011-03-03 18:08:02.000000000 -0800
++++ ./time.c 2014-01-03 15:29:29.552592456 -0800
@@ -33,7 +33,11 @@
#ifdef LINUX
@@ -295,16 +340,3 @@
#include <linux/ioctl.h>
#include <linux/rtc.h>
-diff -r -u -d /tmp/strace-4.6/util.c ./util.c
---- /tmp/strace-4.6/util.c 2011-03-03 18:08:02.000000000 -0800
-+++ ./util.c 2013-03-21 17:57:25.519150107 -0700
-@@ -37,7 +37,9 @@
-
- #include <signal.h>
- #include <sys/syscall.h>
-+#ifndef HAVE_ANDROID_OS
- #include <sys/user.h>
-+#endif
- #include <sys/param.h>
- #include <fcntl.h>
- #if HAVE_SYS_UIO_H