diff options
author | Andrea Fioraldi <andreafioraldi@gmail.com> | 2019-09-13 14:58:37 +0200 |
---|---|---|
committer | Andrea Fioraldi <andreafioraldi@gmail.com> | 2019-09-13 14:58:37 +0200 |
commit | d8059cab6b09bf2e29e8b8db3d40567f193310d5 (patch) | |
tree | 5a8b508f0647174491cca2f01c91b03cf1598b19 | |
parent | d1a2a3eee540f4f7ddcec45b2195b0941e2f8736 (diff) | |
download | afl++-d8059cab6b09bf2e29e8b8db3d40567f193310d5.tar.gz |
fix #58 with qemu 4 fix backport
-rw-r--r-- | qemu_mode/patches/syscall.diff | 52 |
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: |