qemu-discuss
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-discuss] qemu-arm fails to run program using GModule


From: Marvin Schmidt
Subject: [Qemu-discuss] qemu-arm fails to run program using GModule
Date: Sat, 7 Nov 2015 15:35:37 +0100
User-agent: Mutt/1.5.24 (2015-08-30)

Hey everybody,

I'm trying to run a program using GModule with qemu-arm, but it
fails whereas it works perfectly fine when I execute it on the RPi2.

I attach the program I'm testing with. I cross-compiled it using:

  armv7-unknown-linux-gnueabihf-cc -fPIC -shared -o libmodule.so module.c 
`pkg-config --cflags --libs gmodule-2.0`
  armv7-unknown-linux-gnueabihf-cc -o main main.c `pkg-config --cflags --libs 
gmodule-2.0`

Executing it with qemu-arm gives following output:

  $ G_MESSAGES_DEBUG=all qemu-arm -strace ./main

    13981 brk(NULL) = 0x00021000
    13981 uname(0xf6ffef58) = 0
    13981 mmap2(NULL,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS,-1,0) 
= 0xf67cd000
    13981 access("/etc/ld.so.preload",R_OK) = -1 errno=2 (No such file or 
directory)
    13981 open("/etc/ld.so.cache",O_RDONLY|O_CLOEXEC) = 3
    13981 fstat64(3,0xf6ffeb50) = 0
    13981 mmap2(NULL,71546,PROT_READ,MAP_PRIVATE,3,0) = 0xf67bb000
    13981 close(3) = 0
    13981 
open("/usr/armv7-unknown-linux-gnueabihf/lib/tls/neon/vfp/libgmodule-2.0.so.0",O_RDONLY|O_CLOEXEC)
 = -1 errno=2 (No such file or directory)
    13981 
stat64("/usr/armv7-unknown-linux-gnueabihf/lib/tls/neon/vfp",0xf6ffeb88) = -1 
errno=2 (No such file or directory)
    13981 
open("/usr/armv7-unknown-linux-gnueabihf/lib/tls/neon/libgmodule-2.0.so.0",O_RDONLY|O_CLOEXEC)
 = -1 errno=2 (No such file or directory)
    13981 stat64("/usr/armv7-unknown-linux-gnueabihf/lib/tls/neon",0xf6ffeb88) 
= -1 errno=2 (No such file or directory)
    13981 
open("/usr/armv7-unknown-linux-gnueabihf/lib/tls/vfp/libgmodule-2.0.so.0",O_RDONLY|O_CLOEXEC)
 = -1 errno=2 (No such file or directory)
    13981 stat64("/usr/armv7-unknown-linux-gnueabihf/lib/tls/vfp",0xf6ffeb88) = 
-1 errno=2 (No such file or directory)
    13981 
open("/usr/armv7-unknown-linux-gnueabihf/lib/tls/libgmodule-2.0.so.0",O_RDONLY|O_CLOEXEC)
 = -1 errno=2 (No such file or directory)
    13981 stat64("/usr/armv7-unknown-linux-gnueabihf/lib/tls",0xf6ffeb88) = -1 
errno=2 (No such file or directory)
    13981 
open("/usr/armv7-unknown-linux-gnueabihf/lib/neon/vfp/libgmodule-2.0.so.0",O_RDONLY|O_CLOEXEC)
 = -1 errno=2 (No such file or directory)
    13981 stat64("/usr/armv7-unknown-linux-gnueabihf/lib/neon/vfp",0xf6ffeb88) 
= -1 errno=2 (No such file or directory)
    13981 
open("/usr/armv7-unknown-linux-gnueabihf/lib/neon/libgmodule-2.0.so.0",O_RDONLY|O_CLOEXEC)
 = -1 errno=2 (No such file or directory)
    13981 stat64("/usr/armv7-unknown-linux-gnueabihf/lib/neon",0xf6ffeb88) = -1 
errno=2 (No such file or directory)
    13981 
open("/usr/armv7-unknown-linux-gnueabihf/lib/vfp/libgmodule-2.0.so.0",O_RDONLY|O_CLOEXEC)
 = -1 errno=2 (No such file or directory)
    13981 stat64("/usr/armv7-unknown-linux-gnueabihf/lib/vfp",0xf6ffeb88) = -1 
errno=2 (No such file or directory)
    13981 
open("/usr/armv7-unknown-linux-gnueabihf/lib/libgmodule-2.0.so.0",O_RDONLY|O_CLOEXEC)
 = 3
    13981 read(3,0xf6ffec58,512) = 512
    13981 fstat64(3,0xf6ffeb88) = 0
    13981 mmap2(NULL,76144,PROT_EXEC|PROT_READ,MAP_PRIVATE|MAP_DENYWRITE,3,0) = 
0xf67a8000
    13981 mprotect(0xf67ab000,61440,PROT_NONE) = 0
    13981 
mmap2(0xf67ba000,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_DENYWRITE|MAP_FIXED,3,0x2)
 = 0xf67ba000
    13981 close(3) = 0
    13981 
open("/usr/armv7-unknown-linux-gnueabihf/lib/libglib-2.0.so.0",O_RDONLY|O_CLOEXEC)
 = 3
    13981 read(3,0xf6ffec40,512) = 512
    13981 fstat64(3,0xf6ffeb70) = 0
    13981 mmap2(NULL,1572860,PROT_EXEC|PROT_READ,MAP_PRIVATE|MAP_DENYWRITE,3,0) 
= 0xf6628000
    13981 mprotect(0xf6797000,65536,PROT_NONE) = 0
    13981 
mmap2(0xf67a7000,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_DENYWRITE|MAP_FIXED,3,0x16f)
 = 0xf67a7000
    13981 close(3) = 0
    13981 
open("/usr/armv7-unknown-linux-gnueabihf/lib/libpthread.so.0",O_RDONLY|O_CLOEXEC)
 = 3
    13981 read(3,0xf6ffec28,512) = 512
    13981 fstat64(3,0xf6ffeb58) = 0
    13981 mmap2(NULL,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS,-1,0) 
= 0xf6627000
    13981 mmap2(NULL,164436,PROT_EXEC|PROT_READ,MAP_PRIVATE|MAP_DENYWRITE,3,0) 
= 0xf65fe000
    13981 mprotect(0xf6614000,61440,PROT_NONE) = 0
    13981 
mmap2(0xf6623000,8192,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_DENYWRITE|MAP_FIXED,3,0x15)
 = 0xf6623000
    13981 
mmap2(0xf6625000,4692,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED,-1,0)
 = 0xf6625000
    13981 close(3) = 0
    13981 
open("/usr/armv7-unknown-linux-gnueabihf/lib/libc.so.6",O_RDONLY|O_CLOEXEC) = 3
    13981 read(3,0xf6ffec10,512) = 512
    13981 fstat64(3,0xf6ffeb40) = 0
    13981 mmap2(NULL,1291632,PROT_EXEC|PROT_READ,MAP_PRIVATE|MAP_DENYWRITE,3,0) 
= 0xf64c2000
    13981 mprotect(0xf65e9000,61440,PROT_NONE) = 0
    13981 
mmap2(0xf65f8000,12288,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_DENYWRITE|MAP_FIXED,3,0x126)
 = 0xf65f8000
    13981 
mmap2(0xf65fb000,9584,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED,-1,0)
 = 0xf65fb000
    13981 close(3) = 0
    13981 
open("/usr/armv7-unknown-linux-gnueabihf/lib/libdl.so.2",O_RDONLY|O_CLOEXEC) = 3
    13981 read(3,0xf6ffeb60,512) = 512
    13981 fstat64(3,0xf6ffea90) = 0
    13981 mmap2(NULL,73912,PROT_EXEC|PROT_READ,MAP_PRIVATE|MAP_DENYWRITE,3,0) = 
0xf64af000
    13981 mprotect(0xf64b1000,61440,PROT_NONE) = 0
    13981 
mmap2(0xf64c0000,8192,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_DENYWRITE|MAP_FIXED,3,0x1)
 = 0xf64c0000
    13981 close(3) = 0
    13981 mmap2(NULL,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS,-1,0) 
= 0xf64ae000
    13981 mprotect(0xf65f8000,8192,PROT_READ) = 0
    13981 mprotect(0xf64c0000,4096,PROT_READ) = 0
    13981 mprotect(0xf6623000,4096,PROT_READ) = 0
    13981 mprotect(0xf67fd000,4096,PROT_READ) = 0
    13981 munmap(0xf67bb000,71546) = 0
    13981 
set_tid_address(-162865048,-150998428,-162865152,-162863936,-161320960,-161333248)
 = 13981
    13981 set_robust_list(-162865040,12,-20,-162863936,-161320960,-161333248) = 
-1 errno=38 (Function not implemented)
    13981 rt_sigaction(32,0xf6fff030,NULL) = 0
    13981 rt_sigaction(33,0xf6fff030,NULL) = -1 errno=22 (Invalid argument)
    13981 rt_sigprocmask(SIG_UNBLOCK,0xf6fff178,NULL) = 0
    13981 ugetrlimit(3,-150998676,4,-161324544,1744,-161333248) = 0
    13981 brk(NULL) = 0x00021000
    13981 brk(0x00042000) = 0x00042000
    13981 gettimeofday(-150998680,0,2118856084,0,-150998680,0) = 0
    13981 stat64(".",0xf6fff008) = 0
    13981 stat64("/home/marv/gmodule-test",0xf6fff070) = 0
    13981 stat64("/home/marv/gmodule-test/libmodule.so",0xf6fff038) = 0
    13981 
futex(0xf64c10ac,FUTEX_PRIVATE_FLAG|FUTEX_WAKE,2147483647,NULL,NULL,0) = 0
    13981 open("/home/marv/gmodule-test/libmodule.so",O_RDONLY|O_CLOEXEC) = 3
    13981 read(3,0xf6ffe9c0,512) = 512
    13981 fstat64(3,0xf6ffe8f0) = 0
    13981 mmap2(NULL,67436,PROT_EXEC|PROT_READ,MAP_PRIVATE|MAP_DENYWRITE,3,0) = 
0xf649d000
    13981 mprotect(0xf649e000,61440,PROT_NONE) = 0
    13981 
mmap2(0xf64ad000,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_DENYWRITE|MAP_FIXED,3,0)
 = 0xf64ad000
    13981 close(3) = 0
    13981 
open("/usr/armv7-unknown-linux-gnueabihf/lib/charset.alias",O_RDONLY|O_LARGEFILE)
 = -1 errno=2 (No such file or directory)
    13981 
open("/usr/armv7-unknown-linux-gnueabihf/lib/gconv/gconv-modules.cache",O_RDONLY)
 = -1 errno=2 (No such file or directory)
    13981 
open("/usr/armv7-unknown-linux-gnueabihf/lib/gconv/gconv-modules",O_RDONLY|O_CLOEXEC)
 = 3
    13981 fstat64(3,0xf6ffe7f8) = 0
    13981 mmap2(NULL,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS,-1,0) 
= 0xf649c000
    13981 read(3,0xf649c000,4096) = 4096
    13981 read(3,0xf649c000,4096) = 4096
    13981 read(3,0xf649c000,4096) = 4096
    13981 read(3,0xf649c000,4096) = 4096
    13981 read(3,0xf649c000,4096) = 4096
    13981 read(3,0xf649c000,4096) = 4096
    13981 read(3,0xf649c000,4096) = 4096
    13981 read(3,0xf649c000,4096) = 4096
    13981 read(3,0xf649c000,4096) = 4096
    13981 read(3,0xf649c000,4096) = 4096
    13981 read(3,0xf649c000,4096) = 4096
    13981 read(3,0xf649c000,4096) = 4096
    13981 read(3,0xf649c000,4096) = 4096
    13981 read(3,0xf649c000,4096) = 2847
    13981 read(3,0xf649c000,4096) = 0
    13981 close(3) = 0
    13981 munmap(0xf649c000,4096) = 0
    13981 brk(0x00063000) = 0x00063000
    13981 
futex(0xf65faee8,FUTEX_PRIVATE_FLAG|FUTEX_WAKE,2147483647,NULL,NULL,0) = 0
    13981 write(2,0x42378,151)
    ** (process:13981): ERROR **: Unable to get function reference: 
'm_helloworld': /home/marv/gmodule-test/libmodule.so: undefined symbol: 
_m_helloworld
    = 151
    13981 tgkill(13981,13981,5,-162863936,-159747576,-160871156)qemu: uncaught 
target signal 5 (Trace/breakpoint trap) - core dumped


Executing it on the RPi2 works as expected:

  $ G_MESSAGES_DEBUG=all ./main 
  ** (process:2189): DEBUG: Module path: /tmp/gmodule-test/libmodule.so
  Hello modular world!


Is this a problem on my end? Am I missing anything or is legitimate
problem on qemu's side? I appreciate any insight on this. If you need
more information I'm happy to provide it

Thanks in advance and best regards,

Marvin

Attachment: main.c
Description: Text document

Attachment: module.c
Description: Text document


reply via email to

[Prev in Thread] Current Thread [Next in Thread]