aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrea Fioraldi <andreafioraldi@gmail.com>2019-09-13 14:58:37 +0200
committerAndrea Fioraldi <andreafioraldi@gmail.com>2019-09-13 14:58:37 +0200
commitd8059cab6b09bf2e29e8b8db3d40567f193310d5 (patch)
tree5a8b508f0647174491cca2f01c91b03cf1598b19
parentd1a2a3eee540f4f7ddcec45b2195b0941e2f8736 (diff)
downloadafl++-d8059cab6b09bf2e29e8b8db3d40567f193310d5.tar.gz
fix #58 with qemu 4 fix backport
-rw-r--r--qemu_mode/patches/syscall.diff52
1 files changed, 46 insertions, 6 deletions
diff --git a/qemu_mode/patches/syscall.diff b/qemu_mode/patches/syscall.diff
index 60b5905e..8158aa64 100644
--- a/qemu_mode/patches/syscall.diff
+++ b/qemu_mode/patches/syscall.diff
@@ -1,18 +1,58 @@
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
-index 280137da..8c0e749f 100644
+index b13a170e..5678c006 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
-@@ -112,6 +112,9 @@
+@@ -111,6 +111,9 @@
+
#include "qemu.h"
#include "fd-trans.h"
+#include <linux/sockios.h>
-
-+extern unsigned int afl_forksrv_pid;
+
++extern unsigned int afl_forksrv_pid;
+
#ifndef CLONE_IO
#define CLONE_IO 0x80000000 /* Clone io context */
+@@ -250,7 +253,8 @@ static type name (type1 arg1,type2 arg2,type3 arg3,type4 arg4,type5 arg5, \
+ #endif
+
+ #ifdef __NR_gettid
+-_syscall0(int, gettid)
++#define __NR_sys_gettid __NR_gettid
++_syscall0(int, sys_gettid)
+ #else
+ /* This is a replacement for the host gettid() and must return a host
+ errno. */
+@@ -5384,7 +5388,7 @@ static void *clone_func(void *arg)
+ cpu = ENV_GET_CPU(env);
+ thread_cpu = cpu;
+ ts = (TaskState *)cpu->opaque;
+- info->tid = gettid();
++ info->tid = sys_gettid();
+ task_settid(ts);
+ if (info->child_tidptr)
+ put_user_u32(info->tid, info->child_tidptr);
+@@ -5529,9 +5533,9 @@ static int do_fork(CPUArchState *env, unsigned int flags, abi_ulong newsp,
+ mapping. We can't repeat the spinlock hack used above because
+ the child process gets its own copy of the lock. */
+ if (flags & CLONE_CHILD_SETTID)
+- put_user_u32(gettid(), child_tidptr);
++ put_user_u32(sys_gettid(), child_tidptr);
+ if (flags & CLONE_PARENT_SETTID)
+- put_user_u32(gettid(), parent_tidptr);
++ put_user_u32(sys_gettid(), parent_tidptr);
+ ts = (TaskState *)cpu->opaque;
+ if (flags & CLONE_SETTLS)
+ cpu_set_tls (env, newtls);
+@@ -10529,7 +10533,7 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1,
+ return TARGET_PAGE_SIZE;
#endif
-@@ -10799,8 +10801,19 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1,
+ case TARGET_NR_gettid:
+- return get_errno(gettid());
++ return get_errno(sys_gettid());
+ #ifdef TARGET_NR_readahead
+ case TARGET_NR_readahead:
+ #if TARGET_ABI_BITS == 32
+@@ -10813,8 +10817,19 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1,
return get_errno(safe_tkill((int)arg1, target_to_host_signal(arg2)));
case TARGET_NR_tgkill:
@@ -33,4 +73,4 @@ index 280137da..8c0e749f 100644
+ }
#ifdef TARGET_NR_set_robust_list
- case TARGET_NR_set_robust_list: \ No newline at end of file
+ case TARGET_NR_set_robust_list: