i386: 0.969 kernel: 0.938 x86: 0.893 performance: 0.872 device: 0.836 architecture: 0.812 graphic: 0.772 network: 0.750 semantic: 0.731 debug: 0.675 virtual: 0.643 PID: 0.551 vnc: 0.487 permissions: 0.483 hypervisor: 0.428 mistranslation: 0.424 TCG: 0.420 VMM: 0.413 risc-v: 0.390 ppc: 0.367 boot: 0.348 register: 0.318 peripherals: 0.315 user-level: 0.299 socket: 0.283 KVM: 0.226 arm: 0.209 files: 0.130 assembly: 0.120 Consider doing runtime detection of MAP_FIXED_NOREPLACE Description of problem: ``` qemu-i386-static: Unable to reserve 0xfffff000 bytes of virtual address space at 0x1000 (Operation not supported) for use as guest address space (check your virtual memory ulimit setting, min_mmap_addr or reserve less using -R option) ``` strace says ``` mmap(0x1000, 4294963200, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE|MAP_FIXED_NOREPLACE, -1, 0) = -1 EOPNOTSUPP (Operation not supported) ``` Steps to reproduce: 1. `apt install qemu-i386-static 32subsystem` 2. `strace qemu-i386-static /opt/32/bin/as` Additional information: Repeating the strace call in a minimal C program gives the same errno as expected -- the kernel is only 4.4. The problem here is that qemu only does `MAP_FIXED_NOREPLACE` feature detection at build-time via a `#ifndef` and even that behavior is poorly documented. Maybe do something at runtime?