From b82cc0b90e271ef1cd1bd91f3f1ae729918eccd0 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Thu, 1 Apr 2021 13:00:52 +0300 Subject: [PATCH] gnu: qemu-for-american-fuzzy-lop: Fix build. * gnu/packages/debug.scm (qemu-for-american-fuzzy-lop)[source]: Add patch. * gnu/packages/patches/qemu-glibc-2.30.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it. --- gnu/local.mk | 1 + gnu/packages/debug.scm | 5 +- gnu/packages/patches/qemu-glibc-2.30.patch | 57 ++++++++++++++++++++++ 3 files changed, 61 insertions(+), 2 deletions(-) create mode 100644 gnu/packages/patches/qemu-glibc-2.30.patch diff --git a/gnu/local.mk b/gnu/local.mk index 3eeae5e96a..b037b397c3 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1610,6 +1610,7 @@ dist_patch_DATA = \ %D%/packages/patches/qemu-build-info-manual.patch \ %D%/packages/patches/qemu-CVE-2021-20203.patch \ %D%/packages/patches/qemu-glibc-2.27.patch \ + %D%/packages/patches/qemu-glibc-2.30.patch \ %D%/packages/patches/qpdfview-qt515-compat.patch \ %D%/packages/patches/qrcodegen-cpp-make-install.patch \ %D%/packages/patches/qt4-ldflags.patch \ diff --git a/gnu/packages/debug.scm b/gnu/packages/debug.scm index b3a000e6e3..f67f32a7f8 100644 --- a/gnu/packages/debug.scm +++ b/gnu/packages/debug.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014, 2015, 2016, 2017, 2019, 2020 Eric Bavier -;;; Copyright © 2016, 2017, 2018, 2020 Efraim Flashner +;;; Copyright © 2016, 2017, 2018, 2020, 2021 Efraim Flashner ;;; Copyright © 2018, 2020 Tobias Geerinckx-Rice ;;; Copyright © 2018, 2019 Rutger Helling ;;; Copyright © 2019 Pkill -9 @@ -269,7 +269,8 @@ down the road.") (base32 "17w21spvaxaidi2am5lpsln8yjpyp2zi3s3gc6nsxj5arlgamzgw")) (patches - (search-patches "qemu-glibc-2.27.patch")))) + (search-patches "qemu-glibc-2.27.patch" + "qemu-glibc-2.30.patch")))) (build-system gnu-build-system) (arguments `(;; Running tests in parallel can occasionally lead to failures, like: diff --git a/gnu/packages/patches/qemu-glibc-2.30.patch b/gnu/packages/patches/qemu-glibc-2.30.patch new file mode 100644 index 0000000000..1b74dee4ac --- /dev/null +++ b/gnu/packages/patches/qemu-glibc-2.30.patch @@ -0,0 +1,57 @@ +This patch was taken from NixOS +https://raw.githubusercontent.com/Mindavi/nixpkgs/1a737743a829746e48f4869ac517ff29c23c9d09/pkgs/tools/security/afl/qemu-patches/syscall-glibc2_30.diff +It is based on an unmerged patch against american-fuzzy-lop and was +never merged upstream because the author was unable to sign Google's CLA. +Based on https://github.com/google/AFL/commit/6c917e3d63a2a0685d58c3518524f9615b001893.patch + +--- qemu-2.10.0-clean/linux-user/syscall.c 2020-03-12 18:47:47.898592169 +0100 ++++ qemu-2.10.0/linux-user/syscall.c 2020-03-13 09:13:42.461809699 +0100 +@@ -34,6 +34,7 @@ + #include + #include + #include ++#include // https://lkml.org/lkml/2019/6/3/988 + #include + #include + #ifdef __ia64__ +@@ -256,7 +257,9 @@ static type name (type1 arg1,type2 arg2, + #endif + + #ifdef __NR_gettid +-_syscall0(int, gettid) ++// taken from https://patchwork.kernel.org/patch/10862231/ ++#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. */ +@@ -6219,7 +6222,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); +@@ -6363,9 +6366,9 @@ static int do_fork(CPUArchState *env, un + 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); +@@ -11402,7 +11405,7 @@ abi_long do_syscall(void *cpu_env, int n + break; + #endif + case TARGET_NR_gettid: +- ret = get_errno(gettid()); ++ ret = get_errno(sys_gettid()); + break; + #ifdef TARGET_NR_readahead + case TARGET_NR_readahead: -- 2.20.1