- 264 license table entries with exact download URLs (224/264 resolved) - Complete sources/ directory with all BitBake recipes - Build configuration: tqma6ul-multi-mba6ulx, spaetzle (musl) - Full traceability for Softwarefreigabeantrag - GCC 13.4.0, Linux 6.6.102, U-Boot 2023.04, musl 1.2.4 - License distribution: GPL-2.0 (24), MIT (23), GPL-2.0+ (18), BSD-3 (16)
50 lines
1.8 KiB
Diff
50 lines
1.8 KiB
Diff
From 375cae3dd6151ef33cae8f243f6a2c2da6c0c356 Mon Sep 17 00:00:00 2001
|
|
From: Richard Purdie <richard.purdie@linuxfoundation.org>
|
|
Date: Fri, 8 Jan 2021 17:27:06 +0000
|
|
Subject: [PATCH 06/12] qemu: Add some user space mmap tweaks to address musl
|
|
32 bit
|
|
|
|
When using qemu-i386 to build qemux86 webkitgtk on musl, it sits in an
|
|
infinite loop of mremap calls of ever decreasing/increasing addresses.
|
|
|
|
I suspect something in the musl memory allocation code loops indefinitely
|
|
if it only sees ENOMEM and only exits when it hits EFAULT.
|
|
|
|
According to the docs, trying to mremap outside the address space
|
|
can/should return EFAULT and changing this allows the build to succeed.
|
|
|
|
A better return value for the other cases of invalid addresses is EINVAL
|
|
rather than ENOMEM so adjust the other part of the test to this.
|
|
|
|
Upstream-Status: Submitted [https://lists.gnu.org/archive/html/qemu-devel/2021-01/msg01355.html]
|
|
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org
|
|
|
|
---
|
|
linux-user/mmap.c | 10 +++++++---
|
|
1 file changed, 7 insertions(+), 3 deletions(-)
|
|
|
|
Index: qemu-8.0.0/linux-user/mmap.c
|
|
===================================================================
|
|
--- qemu-8.0.0.orig/linux-user/mmap.c
|
|
+++ qemu-8.0.0/linux-user/mmap.c
|
|
@@ -776,12 +776,16 @@ abi_long target_mremap(abi_ulong old_add
|
|
int prot;
|
|
void *host_addr;
|
|
|
|
- if (!guest_range_valid_untagged(old_addr, old_size) ||
|
|
- ((flags & MREMAP_FIXED) &&
|
|
+ if (!guest_range_valid_untagged(old_addr, old_size)) {
|
|
+ errno = EFAULT;
|
|
+ return -1;
|
|
+ }
|
|
+
|
|
+ if (((flags & MREMAP_FIXED) &&
|
|
!guest_range_valid_untagged(new_addr, new_size)) ||
|
|
((flags & MREMAP_MAYMOVE) == 0 &&
|
|
!guest_range_valid_untagged(old_addr, new_size))) {
|
|
- errno = ENOMEM;
|
|
+ errno = EINVAL;
|
|
return -1;
|
|
}
|
|
|