Hello, I have an issue with perl and qemu that I'm hoping someone knows what is happening. I'm using qemu-i386 on a fedora 11 intel system and the following command fails:
$ qemu-i386 -L / /usr/bin/perl -e 'print `perl -v`' qemu: Unsupported syscall: 240 I've included the strace at the end of the message. The command should give the following output: $ /usr/bin/perl -e 'print `perl -v`' This is perl, v5.10.0 built for i386-linux-thread-multi Copyright 1987-2007, Larry Wall Perl may be copied only under the terms of either the Artistic License or the GNU General Public License, which may be found in the Perl 5 source kit. Complete documentation for Perl, including FAQ lists, should be found on this system using "man perl" or "perldoc perl". If you have access to the Internet, point your browser at http://www.perl.org/, the Perl Home Page. Note the following works just fine: $ qemu-i386 -L / /usr/bin/perl -v qemu: Unsupported syscall: 240 This is perl, v5.10.0 built for i386-linux-thread-multi Copyright 1987-2007, Larry Wall Perl may be copied only under the terms of either the Artistic License or the GNU General Public License, which may be found in the Perl 5 source kit. Complete documentation for Perl, including FAQ lists, should be found on this system using "man perl" or "perldoc perl". If you have access to the Internet, point your browser at http://www.perl.org/, the Perl Home Page. I am using qemu-i386 v0.11.0 as shown below and other binaries run under qemu look fine. Could you suggest a way to get this perl command working. Thank you, Jay ------------------------------------------------------- # ./configure --prefix=/usr --target-list=i386-linux-user # make # make install $ qemu-i386 -v qemu-i386 version 0.11.0, Copyright (c) 2003-2008 Fabrice Bellard usage: qemu-i386 [options] program [arguments...] Linux CPU emulator (compiled for i386 emulation) Standard options: -h print this help -g port wait gdb connection to port -L path set the elf interpreter prefix (default=/usr/gnemul/qemu-i386) -s size set the stack size in bytes (default=524288) -cpu model select CPU (-cpu ? for list) -drop-ld-preload drop LD_PRELOAD for target process -E var=value sets/modifies targets environment variable(s) -U var unsets targets environment variable(s) -0 argv0 forces target process argv[0] to be argv0 Debug options: -d options activate log (logfile=/tmp/qemu.log) -p pagesize set the host page size to 'pagesize' -singlestep always run in singlestep mode -strace log system calls Environment variables: QEMU_STRACE Print system calls and arguments similar to the 'strace' program. Enable by setting to any value. You can use -E and -U options to set/unset environment variables for target process. It is possible to provide several variables by repeating the option. For example: -E var1=val2 -E var2=val2 -U LD_PRELOAD -U LD_DEBUG Note that if you provide several changes to single variable last change will stay in effect. ------------------------------------------------------- [jschul...@cross-comp-j ~]$ qemu-i386 -strace -L / /usr/bin/perl -e 'print `perl -v`' 18454 brk(NULL) = 0x0804a000 18454 uname(0x4007f296) = 0 18454 access("/etc/ld.so.preload",R_OK) = -1 errno=2 (No such file or directory) 18454 open("/usr/lib/perl5/5.10.0/i386-linux-thread-multi/CORE/tls/i686/sse2/libperl.so",O_RDONLY) = -1 errno=2 (No such file or directory) 18454 stat64("/usr/lib/perl5/5.10.0/i386-linux-thread-multi/CORE/tls/i686/sse2",0x4007efcc) = -1 errno=2 (No such file or directory) 18454 open("/usr/lib/perl5/5.10.0/i386-linux-thread-multi/CORE/tls/i686/libperl.so",O_RDONLY) = -1 errno=2 (No such file or directory) 18454 stat64("/usr/lib/perl5/5.10.0/i386-linux-thread-multi/CORE/tls/i686",0x4007efcc) = -1 errno=2 (No such file or directory) 18454 open("/usr/lib/perl5/5.10.0/i386-linux-thread-multi/CORE/tls/sse2/libperl.so",O_RDONLY) = -1 errno=2 (No such file or directory) 18454 stat64("/usr/lib/perl5/5.10.0/i386-linux-thread-multi/CORE/tls/sse2",0x4007efcc) = -1 errno=2 (No such file or directory) 18454 open("/usr/lib/perl5/5.10.0/i386-linux-thread-multi/CORE/tls/libperl.so",O_RDONLY) = -1 errno=2 (No such file or directory) 18454 stat64("/usr/lib/perl5/5.10.0/i386-linux-thread-multi/CORE/tls",0x4007efcc) = -1 errno=2 (No such file or directory) 18454 open("/usr/lib/perl5/5.10.0/i386-linux-thread-multi/CORE/i686/sse2/libperl.so",O_RDONLY) = -1 errno=2 (No such file or directory) 18454 stat64("/usr/lib/perl5/5.10.0/i386-linux-thread-multi/CORE/i686/sse2",0x4007efcc) = -1 errno=2 (No such file or directory) 18454 open("/usr/lib/perl5/5.10.0/i386-linux-thread-multi/CORE/i686/libperl.so",O_RDONLY) = -1 errno=2 (No such file or directory) 18454 stat64("/usr/lib/perl5/5.10.0/i386-linux-thread-multi/CORE/i686",0x4007efcc) = -1 errno=2 (No such file or directory) 18454 open("/usr/lib/perl5/5.10.0/i386-linux-thread-multi/CORE/sse2/libperl.so",O_RDONLY) = -1 errno=2 (No such file or directory) 18454 stat64("/usr/lib/perl5/5.10.0/i386-linux-thread-multi/CORE/sse2",0x4007efcc) = -1 errno=2 (No such file or directory) 18454 open("/usr/lib/perl5/5.10.0/i386-linux-thread-multi/CORE/libperl.so",O_RDONLY) = 3 18454 read(3,0x4007f094,512) = 512 18454 fstat64(3,0x4007efa0) = 0 18454 mmap2(NULL,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS,-1,0) = 0x42083000 18454 mmap2(NULL,2473052,PROT_EXEC|PROT_READ,MAP_PRIVATE|MAP_DENYWRITE,3,0) = 0x42084000 18454 mmap2(0x422db000,20480,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_DENYWRITE|MAP_FIXED,3,0x257) = 0x422db000 18454 close(3) = 0 18454 open("/usr/lib/perl5/5.10.0/i386-linux-thread-multi/CORE/libresolv.so.2",O_RDONLY) = -1 errno=2 (No such file or directory) 18454 open("/etc/ld.so.cache",O_RDONLY) = 3 18454 fstat64(3,0x4007ef5c) = 0 18454 mmap2(NULL,100843,PROT_READ,MAP_PRIVATE,3,0) = 0x422e0000 18454 close(3) = 0 18454 open("/lib/libresolv.so.2",O_RDONLY) = 3 18454 read(3,0x4007f078,512) = 512 18454 fstat64(3,0x4007ef90) = 0 18454 mmap2(0x00cb6000,100424,PROT_EXEC|PROT_READ,MAP_PRIVATE|MAP_DENYWRITE,3,0) = 0x00cb6000 18454 mprotect(0x00cca000,4096,PROT_NONE) = 0 18454 mmap2(0x00ccb000,8192,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_DENYWRITE|MAP_FIXED,3,0x14) = 0x00ccb000 18454 mmap2(0x00ccd000,6216,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED,-1,0) = 0x00ccd000 18454 close(3) = 0 18454 open("/usr/lib/perl5/5.10.0/i386-linux-thread-multi/CORE/libnsl.so.1",O_RDONLY) = -1 errno=2 (No such file or directory) 18454 open("/lib/libnsl.so.1",O_RDONLY) = 3 18454 read(3,0x4007f05c,512) = 512 18454 fstat64(3,0x4007ef70) = 0 18454 mmap2(0x05c85000,108520,PROT_EXEC|PROT_READ,MAP_PRIVATE|MAP_DENYWRITE,3,0) = 0x05c85000 18454 mmap2(0x05c9c000,8192,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_DENYWRITE|MAP_FIXED,3,0x16) = 0x05c9c000 18454 mmap2(0x05c9e000,6120,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED,-1,0) = 0x05c9e000 18454 close(3) = 0 18454 open("/usr/lib/perl5/5.10.0/i386-linux-thread-multi/CORE/libdl.so.2",O_RDONLY) = -1 errno=2 (No such file or directory) 18454 open("/lib/libdl.so.2",O_RDONLY) = 3 18454 read(3,0x4007f040,512) = 512 18454 fstat64(3,0x4007ef50) = 0 18454 mmap2(0x00576000,16500,PROT_EXEC|PROT_READ,MAP_PRIVATE|MAP_DENYWRITE,3,0) = 0x00576000 18454 mmap2(0x00579000,8192,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_DENYWRITE|MAP_FIXED,3,0x2) = 0x00579000 18454 close(3) = 0 18454 open("/usr/lib/perl5/5.10.0/i386-linux-thread-multi/CORE/libm.so.6",O_RDONLY) = -1 errno=2 (No such file or directory) 18454 open("/lib/libm.so.6",O_RDONLY) = 3 18454 read(3,0x4007f024,512) = 512 18454 fstat64(3,0x4007ef30) = 0 18454 mmap2(0x0054c000,159872,PROT_EXEC|PROT_READ,MAP_PRIVATE|MAP_DENYWRITE,3,0) = 0x0054c000 18454 mmap2(0x00572000,8192,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_DENYWRITE|MAP_FIXED,3,0x25) = 0x00572000 18454 close(3) = 0 18454 open("/usr/lib/perl5/5.10.0/i386-linux-thread-multi/CORE/libcrypt.so.1",O_RDONLY) = -1 errno=2 (No such file or directory) 18454 open("/lib/libcrypt.so.1",O_RDONLY) = 3 18454 read(3,0x4007f008,512) = 512 18454 fstat64(3,0x4007ef20) = 0 18454 mmap2(NULL,196956,PROT_EXEC|PROT_READ,MAP_PRIVATE|MAP_DENYWRITE,3,0) = 0x422f9000 18454 mmap2(0x42301000,8192,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_DENYWRITE|MAP_FIXED,3,0x7) = 0x42301000 18454 mmap2(0x42303000,155996,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED,-1,0) = 0x42303000 18454 close(3) = 0 18454 open("/usr/lib/perl5/5.10.0/i386-linux-thread-multi/CORE/libutil.so.1",O_RDONLY) = -1 errno=2 (No such file or directory) 18454 open("/lib/libutil.so.1",O_RDONLY) = 3 18454 read(3,0x4007efec,512) = 512 18454 fstat64(3,0x4007ef00) = 0 18454 mmap2(NULL,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS,-1,0) = 0x4232a000 18454 mmap2(0x00dfa000,12420,PROT_EXEC|PROT_READ,MAP_PRIVATE|MAP_DENYWRITE,3,0) = 0x00dfa000 18454 mmap2(0x00dfc000,8192,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_DENYWRITE|MAP_FIXED,3,0x1) = 0x00dfc000 18454 close(3) = 0 18454 open("/usr/lib/perl5/5.10.0/i386-linux-thread-multi/CORE/libpthread.so.0",O_RDONLY) = -1 errno=2 (No such file or directory) 18454 open("/lib/libpthread.so.0",O_RDONLY) = 3 18454 read(3,0x4007efd0,512) = 512 18454 fstat64(3,0x4007eee0) = 0 18454 mmap2(0x0057d000,106976,PROT_EXEC|PROT_READ,MAP_PRIVATE|MAP_DENYWRITE,3,0) = 0x0057d000 18454 mprotect(0x00593000,4096,PROT_NONE) = 0 18454 mmap2(0x00594000,8192,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_DENYWRITE|MAP_FIXED,3,0x16) = 0x00594000 18454 mmap2(0x00596000,4576,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED,-1,0) = 0x00596000 18454 close(3) = 0 18454 open("/usr/lib/perl5/5.10.0/i386-linux-thread-multi/CORE/libc.so.6",O_RDONLY) = -1 errno=2 (No such file or directory) 18454 open("/lib/libc.so.6",O_RDONLY) = 3 18454 read(3,0x4007efb4,512) = 512 18454 fstat64(3,0x4007eec0) = 0 18454 mmap2(0x003d9000,1509672,PROT_EXEC|PROT_READ,MAP_PRIVATE|MAP_DENYWRITE,3,0) = 0x003d9000 18454 mmap2(0x00544000,12288,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_DENYWRITE|MAP_FIXED,3,0x16b) = 0x00544000 18454 mmap2(0x00547000,10536,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED,-1,0) = 0x00547000 18454 close(3) = 0 18454 open("/usr/lib/perl5/5.10.0/i386-linux-thread-multi/CORE/libfreebl3.so",O_RDONLY) = -1 errno=2 (No such file or directory) 18454 open("/lib/libfreebl3.so",O_RDONLY) = 3 18454 read(3,0x4007ec5c,512) = 512 18454 fstat64(3,0x4007eb70) = 0 18454 mmap2(NULL,293964,PROT_EXEC|PROT_READ,MAP_PRIVATE|MAP_DENYWRITE,3,0) = 0x4232b000 18454 mmap2(0x4236e000,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_DENYWRITE|MAP_FIXED,3,0x42) = 0x4236e000 18454 mmap2(0x4236f000,15436,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED,-1,0) = 0x4236f000 18454 close(3) = 0 18454 mmap2(NULL,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS,-1,0) = 0x42373000 18454 mmap2(NULL,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS,-1,0) = 0x42374000 18454 set_thread_area(1074263116,1078292420,1110916768,1,0,1074263144) = 0 18454 mprotect(0x00544000,8192,PROT_READ) = 0 18454 mprotect(0x00594000,4096,PROT_READ) = 0 18454 mprotect(0x00dfc000,4096,PROT_READ) = 0 18454 mprotect(0x42301000,4096,PROT_READ) = 0 18454 mprotect(0x00572000,4096,PROT_READ) = 0 18454 mprotect(0x00579000,4096,PROT_READ) = 0 18454 mprotect(0x05c9c000,4096,PROT_READ) = 0 18454 mprotect(0x00ccb000,4096,PROT_READ) = 0 18454 mprotect(0x40456000,4096,PROT_READ) = 0 18454 munmap(0x422e0000,100843) = 0 18454 set_tid_address(1110916872,5853172,1110916872,47,29,1074263456) = 18454 18454 set_robust_list(1110916880,12,5853172,47,1110916768,1074263456) = -1 errno=38 (Function not implemented) 18454 futex(0x4007f590,129,1,0x0000002f,0x00594ff4,5853172)qemu: Unsupported syscall: 240 = -1 errno=38 (Function not implemented) 18454 rt_sigaction(32,1074262588,0,8,5853172,1074262740) = 0 18454 rt_sigaction(33,1074262588,0,8,5853172,1074262740) = -1 errno=22 (Invalid argument) 18454 rt_sigprocmask(1,1074263288,0,8,5853172,1074263456) = 0 18454 ugetrlimit(3,1074263424,5529588,8,1,1074262740) = 0 18454 uname(0x4007f2f4) = 0 18454 rt_sigaction(8,1074262904,1074262764,8,5529588,1074263056) = 0 18454 brk(NULL) = 0x0804a000 18454 brk(0x0806b000) = 0x0806b000 18454 getuid32(1110299820,1110916908,134520840,134520840,134522140,1074263288) = 540 18454 geteuid32(1110299820,1110916908,134520840,134520840,134522140,1074263288) = 540 18454 getgid32(1110299820,1110916908,134520840,134520840,134522140,1074263288) = 1005 18454 getegid32(1110299820,1110916908,134520840,134520840,134522140,1074263288) = 1005 18454 open("/usr/lib/locale/locale-archive",O_RDONLY|O_LARGEFILE) = 3 18454 fstat64(3,0x00546ae0) = 0 18454 mmap2(NULL,2097152,PROT_READ,MAP_PRIVATE,3,0) = 0x42375000 18454 close(3) = 0 18454 open("/dev/urandom",O_RDONLY|O_LARGEFILE) = 3 18454 read(3,0x4007f3cc,4) = 4 18454 close(3) = 0 18454 time(0,1110299820,134521660,134520840,1074263644,1074263080) = 1256231880 18454 readlink("/proc/self/exe",0x4007e3cc,4095) = 13 18454 stat64("/usr/lib/perl5/site_perl/5.10.0/i386-linux-thread-multi",0x4007f330) = -1 errno=2 (No such file or directory) 18454 stat64("/usr/lib/perl5/site_perl/5.10.0",0x4007f330) = -1 errno=2 (No such file or directory) 18454 stat64("/usr/lib/perl5/site_perl/i386-linux-thread-multi",0x4007f330) = -1 errno=2 (No such file or directory) 18454 ioctl(0,21505,1074262216,1074262280,5529588,1074262264) = 0 18454 _llseek(0,0,0,1074262256,1,1074262280) = -1 errno=29 (Illegal seek) 18454 ioctl(1,21505,1074262216,1074262280,5529588,1074262264) = 0 18454 _llseek(1,0,0,1074262256,1,1074262280) = -1 errno=29 (Illegal seek) 18454 ioctl(2,21505,1074262216,1074262280,5529588,1074262264) = 0 18454 _llseek(2,0,0,1074262256,1,1074262280) = -1 errno=29 (Illegal seek) 18454 open("/dev/null",O_RDONLY|O_LARGEFILE) = 3 18454 ioctl(3,21505,1074262504,1074262568,5529588,1074262552) = -1 errno=25 (Inappropriate ioctl for device) 18454 _llseek(3,0,0,1074262544,1,1074262568) = 0 18454 fcntl64(3,F_SETFD,0x00000001) = 0 18454 fstat64(3,0x0804a060) = 0 18454 rt_sigaction(17,0,1074262588,8,5853172,1074262880) = 0 18454 brk(0x0808c000) = 0x0808c000 18454 close(3) = 0 18454 pipe(1074262656,1110191144,1110299820,134520840,1,1074262696) = 0 18454 pipe(1074262648,1110191144,1110299820,134520840,1,1074262696) = 0 18454 clone(18874385,0,0,0,1110916872,1074262556) = -1 errno=22 (Invalid argument) 18454 close(3) = 0 18454 close(4) = 0 18454 close(5) = 0 18454 close(6) = 0 18454 exit_group(0) [jschul...@cross-comp-j ~]$