In order for our emulation of MAP_FIXED_NOREPLACE to succeed within linux-user target_mmap, we require a non-zero value. This does not require host kernel support, merely the bit being defined.
MAP_FIXED_NOREPLACE was added with glibc 2.28. From repology.org: Fedora 36: 2.35 CentOS 8 (RHEL-8): 2.28 Debian 11: 2.31 OpenSUSE Leap 15.4: 2.31 Ubuntu LTS 20.04: 2.31 Reported-by: Akihiko Odaki <akihiko.od...@daynix.com> Signed-off-by: Richard Henderson <richard.hender...@linaro.org> --- include/qemu/osdep.h | 3 --- linux-user/elfload.c | 1 - 2 files changed, 4 deletions(-) diff --git a/include/qemu/osdep.h b/include/qemu/osdep.h index cc61b00ba9..21ef8f1699 100644 --- a/include/qemu/osdep.h +++ b/include/qemu/osdep.h @@ -289,9 +289,6 @@ void QEMU_ERROR("code path is reachable") #ifndef MAP_ANONYMOUS #define MAP_ANONYMOUS MAP_ANON #endif -#ifndef MAP_FIXED_NOREPLACE -#define MAP_FIXED_NOREPLACE 0 -#endif #ifndef MAP_NORESERVE #define MAP_NORESERVE 0 #endif diff --git a/linux-user/elfload.c b/linux-user/elfload.c index 36e4026f05..9d9c79a653 100644 --- a/linux-user/elfload.c +++ b/linux-user/elfload.c @@ -2807,7 +2807,6 @@ static void pgb_reserved_va(const char *image_name, abi_ulong guest_loaddr, /* Widen the "image" to the entire reserved address space. */ pgb_static(image_name, 0, reserved_va, align); - /* osdep.h defines this as 0 if it's missing */ flags |= MAP_FIXED_NOREPLACE; /* Reserve the memory on the host. */ -- 2.34.1