1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
files: 0.910
performance: 0.892
PID: 0.857
device: 0.818
graphic: 0.779
permissions: 0.724
other: 0.717
boot: 0.698
semantic: 0.696
socket: 0.690
debug: 0.625
network: 0.556
vnc: 0.487
KVM: 0.371
qemu-i386 fails on system(3) with a cross-toolchain from Buildroot
qemu-i386 fails with small C program containing a system().
The C program is cross-compiled with a toolchain created by buildroot (http://buildroot.net/), gcc version 4.6.3, uClibc version 0.9.33.2 .
qemu version 1.2.0 (built with http://git.buildroot.net/buildroot/tree/package/qemu/qemu.mk)
host machine : Ubuntu 12.04 LTS on x86_64.
$ cat sys.c
#include <stdio.h>
#include <stdlib.h>
int main()
{
int ret = system("echo hello");
printf("%d\n", ret);
}
$ ../../host/usr/bin/i686-buildroot-linux-uclibc-gcc -o sys sys.c
$ file sys
sys: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), not stripped
$ ../../host/usr/bin/qemu-i386 ./sys
-1
same problem with x86_64 :
$ ../../host/usr/bin/x86_64-buildroot-linux-uclibc-gcc -o sys sys.c
$ file sys
sys: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), not stripped
$ ../../host/usr/bin/qemu-x86_64 sys
-1
works fine with arm :
$ ../../host/usr/bin/arm-buildroot-linux-uclibcgnueabi-gcc -o sys sys.c
$ file sys
sys: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), not stripped
$ ../../host/usr/bin/qemu-arm ./sys
hello
0
works fine with mips :
$ ../../host/usr/bin/mips-buildroot-linux-uclibc-gcc -o sys sys.c
$ file sys
sys: ELF 32-bit MSB executable, MIPS, MIPS32 rel2 version 1 (SYSV), dynamically linked (uses shared libs), with unknown capability 0x41000000 = 0xf676e75, with unknown capability 0x10000 = 0x70403, not stripped
$ ../../host/usr/bin/qemu-mips sys
hello
0
Looks like the long-standing "clone/fork for i386 user mode targets doesn't work" issue. See also discussion in bug 739785...
Fixed in 2013 some time.
|