From d9fcad1430b3b85e1acfdd46ee44419b11f38e6d Mon Sep 17 00:00:00 2001 From: oreo639 Date: Fri, 16 Feb 2024 23:31:30 -0800 Subject: [PATCH 1/2] qemu: update to 8.1.5. Re-add patch removed in 147fb2841cdd6532a73009079f73cf0568ada885 to avoid deadlock when when cross compiling to arm musl. This was noticed in webkit2, with the WebKit2 gir executable causing qemu-user-static to become stuck. --- srcpkgs/qemu/patches/mmap-mremap-efault.patch | 42 +++++++++++++++++++ srcpkgs/qemu/template | 4 +- 2 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 srcpkgs/qemu/patches/mmap-mremap-efault.patch diff --git a/srcpkgs/qemu/patches/mmap-mremap-efault.patch b/srcpkgs/qemu/patches/mmap-mremap-efault.patch new file mode 100644 index 0000000000000..5a70e9658b300 --- /dev/null +++ b/srcpkgs/qemu/patches/mmap-mremap-efault.patch @@ -0,0 +1,42 @@ +Source: @pullmoll +Upstream: no +Reason: errno=EFAULT when the address passed to mremap(2) is not valid + +See Rich Felker's comment at https://www.openwall.com/lists/musl/2017/06/21/2 for +why we need to return errno as described in man mremap(2) from qemu-user-static. +Also speed up the loop when checking for increasing the mappings size to go +in steps of TARGET_PAGE_SIZE and OR-in a check for the very last byte of the range. +diff --git linux-user/mmap.c linux-user/mmap.c +index 7e3b245..1e8d0f1 100644 +--- a/linux-user/mmap.c ++++ b/linux-user/mmap.c +@@ -738,7 +738,7 @@ abi_long target_mremap(abi_ulong old_addr, abi_ulong old_size, + !guest_range_valid_untagged(new_addr, new_size)) || + ((flags & MREMAP_MAYMOVE) == 0 && + !guest_range_valid_untagged(old_addr, new_size))) { +- errno = ENOMEM; ++ errno = EFAULT; + return -1; + } + +@@ -775,9 +775,10 @@ abi_long target_mremap(abi_ulong old_addr, abi_ulong old_size, + abi_ulong addr; + for (addr = old_addr + old_size; + addr < old_addr + new_size; +- addr++) { ++ addr += TARGET_PAGE_SIZE) { + prot |= page_get_flags(addr); + } ++ prot |= page_get_flags(old_addr + new_size - 1); + } + if (prot == 0) { + host_addr = mremap(g2h_untagged(old_addr), +@@ -796,7 +797,7 @@ abi_long target_mremap(abi_ulong old_addr, abi_ulong old_size, + } + } + } else { +- errno = ENOMEM; ++ errno = EFAULT; + host_addr = MAP_FAILED; + } + } diff --git a/srcpkgs/qemu/template b/srcpkgs/qemu/template index 92df1dcb9de25..fe70489fbc352 100644 --- a/srcpkgs/qemu/template +++ b/srcpkgs/qemu/template @@ -1,7 +1,7 @@ # Template file for 'qemu' # This package should be updated together with qemu-user-static pkgname=qemu -version=8.1.3 +version=8.1.5 revision=1 build_style=configure configure_args="--prefix=/usr --sysconfdir=/etc --libexecdir=/usr/libexec --localstatedir=/var @@ -28,7 +28,7 @@ maintainer="Orphaned " license="GPL-2.0-only, LGPL-2.1-only" homepage="https://www.qemu.org" distfiles="https://wiki.qemu.org/download/qemu-${version}.tar.bz2" -checksum=0e448fb68f3a3bf43a3206e72a91e69136283b430b5996156dd7dfc64e55c998 +checksum=a12e9b5cdf41a3eeb534fa1467b81946fb57b5b27bcabc2ec0e450e7e0e785ba ignore_elf_dirs="/usr/share/qemu" nostrip_files="hppa-firmware.img openbios-ppc openbios-sparc32 openbios-sparc64 palcode-clipper s390-ccw.img s390-netboot.img u-boot.e500 opensbi-riscv32-generic-fw_dynamic.elf From 9b556d898668a46e1a3cdaeeb070f5be0ff19413 Mon Sep 17 00:00:00 2001 From: oreo639 Date: Fri, 16 Feb 2024 23:31:55 -0800 Subject: [PATCH 2/2] qemu-user-static: update to 8.1.5. --- srcpkgs/qemu-user-static/template | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/srcpkgs/qemu-user-static/template b/srcpkgs/qemu-user-static/template index 0674a92878a80..edb2b1fe60baf 100644 --- a/srcpkgs/qemu-user-static/template +++ b/srcpkgs/qemu-user-static/template @@ -1,7 +1,7 @@ # Template file for 'qemu-user-static' # This package should be updated together with qemu pkgname=qemu-user-static -version=8.1.3 +version=8.1.5 revision=1 build_style=configure configure_args="--prefix=/usr --sysconfdir=/etc --libexecdir=/usr/libexec @@ -14,7 +14,7 @@ maintainer="Orphaned " license="GPL-2.0-only, LGPL-2.1-only" homepage="https://www.qemu.org" distfiles="https://wiki.qemu.org/download/qemu-${version}.tar.bz2" -checksum=0e448fb68f3a3bf43a3206e72a91e69136283b430b5996156dd7dfc64e55c998 +checksum=a12e9b5cdf41a3eeb534fa1467b81946fb57b5b27bcabc2ec0e450e7e0e785ba _fmts="aarch64 aarch64_be alpha arm armeb cris hppa i386 m68k microblaze microblazeel mips mipsel mips64 mips64el mipsn32 mipsn32el or1k