On 18.12.2012 20:10, Michael Tokarev wrote:
Since at least 1.1 version of qemu, I can't run any
mips binary using statically linked qemu-mips on x86_64
host. It immediately fails with SIGSEGV:
# chroot mipsroot /bin/bash
qemu: uncaught target signal 11 (Segmentation fault) - core dumped
mipsroot/bin/bash: ELF 32-bit MSB executable, MIPS, MIPS-II version 1 (SYSV),
dynamically linked (uses shared libs), for GNU/Linux 2.6.26,
BuildID[sha1]=0xeb1a3595d733e28f4f081beabb1f135bc5bf7527,
with unknown capability 0x41000000 = 0xf676e75,
with unknown capability 0x10000 = 0x70401,
stripped
(this is current Debian install of mips architecture).
At the same time, 32bit qemu-mips works just fine:
# cp -p /usr/bin/qemu-mips-static-32 mipsroot/usr/bin/
# chroot mipsroot /bin/bash
I have no address@hidden:/# ls
bin dev home lib64 proc run selinux tmp var
boot etc lib mnt root sbin sys usr
I have no address@hidden:/# uname -a
Linux gandalf 3.2.0-amd64 #3.2.30 SMP Thu Sep 20 18:50:45 MSK 2012 mips
GNU/Linux
Current qemu git behaves the same - it also segfaults
when trying to run a 32bit mips binary from x86_64
host qemu-mips binary.
There are numerous bugreports about this issue on Debian
as well.
Is it just Debian, or is something really broken there?
I'd think that running 32bit mips code on x86_64 host
is quite common, no?
This is broken (bisected to) since
commit 288e65b9eea0c9b3cbe21be46f3e24e4e8b2a090
Author: Alexander Graf<address@hidden>
Date: Wed Dec 14 00:33:28 2011 +0100
linux-user: reserve 4GB of vmem for 32-on-64
When running 32-on-64 bit guests, we should always reserve as much
virtual memory as we possibly can for the guest process, so it can
never overlap with QEMU address space.
Fortunately we already have the infrastructure for that. All that's
missing is some sane default value to also make use of it!
Signed-off-by: Alexander Graf<address@hidden>
Signed-off-by: Riku Voipio<address@hidden>
(Cc'ing).
Reverting this commit on top of qemu-1.1, 1.2 or 1.3 makes
it work again.
This commit has been applied in the middle between 1.0 and 1.1
versions of qemu. It is interesting that no one noticed this
before now, when 1.3 is out already. Oh well.
Thanks,
/mjt