Hi all,

I'm running into an issue with simulating a dynamic library in SE mode. My
binary has been compiled and linked with a library that is not installed in
one of the system default locations (/usr/lib, /usr/local/lib,
/usr/lib/x86_64-linux-gnu,
etc). I have the correct path added to LD_LIBRARY_PATH in my environment,
and I am able to run it locally. When I try to run it under gem5, gem5 appears
to be ignoring my LD_LIBRARY_PATH, or at least some directories in the
path. I get the following errors:

Global frequency set at 1000000000000 ticks per second
      0: system.cpu: Constructing CPU with id 0, socket id 0
0: system.remote_gdb.listener: listening for remote gdb #0 on port 7000
**** REAL SIMULATION ****
info: Entering event queue @ 0.  Starting simulation...
warn: x86 cpuid family 0x0000: unimplemented function 7
warn: x86 cpuid family 0x0000: unimplemented function 7
warn: ignoring syscall access(...)
6674500: system.cpu: T0 : syscall  mmap range is 0x7ffff7dd5000 -
0x7ffff7dd6fff
warn: ignoring syscall access(...)
7759000: system.cpu: T0 : syscall open: failed -> path:/etc/ld.so.preload
10364000: system.cpu: T0 : syscall open: sim_fd[7], target_fd[3] ->
path:/etc/ld.so.cache
10574500: system.cpu: T0 : syscall  mmap range is 0x7ffff7db0000 -
0x7ffff7dd4fff
warn: ignoring syscall access(...)
13967000: system.cpu: T0 : syscall open: sim_fd[7], target_fd[3] ->
path:/usr/local/lib/libconfuse.so.2
15210500: system.cpu: T0 : syscall  mmap range is 0x7ffff7ba3000 -
0x7ffff7daffff
warn: ignoring syscall mprotect(...)
15415500: system.cpu: T0 : syscall  mmap range is 0x7ffff7dae000 -
0x7ffff7daffff
warn: ignoring syscall access(...)
19750500: system.cpu: T0 : syscall open: sim_fd[7], target_fd[3] ->
path:/lib/x86_64-linux-gnu/librt.so.1
20682000: system.cpu: T0 : syscall  mmap range is 0x7ffff799b000 -
0x7ffff7ba2fff
warn: ignoring syscall mprotect(...)
20733000: system.cpu: T0 : syscall  mmap range is 0x7ffff7ba1000 -
0x7ffff7ba2fff
warn: ignoring syscall access(...)
24809000: system.cpu: T0 : syscall open: failed ->
path:/lib/x86_64-linux-gnu/libmkldnn.so.0
25151500: system.cpu: T0 : syscall open: failed ->
path:/usr/lib/x86_64-linux-gnu/libmkldnn.so.0
25313000: system.cpu: T0 : syscall open: failed -> path:/lib/libmkldnn.so.0
25469000: system.cpu: T0 : syscall open: failed ->
path:/usr/lib/libmkldnn.so.0
/work/samxi/test: error while loading shared libraries: libmkldnn.so.0:
cannot open shared object file: No such file or directory

My LD_LIBRARY_PATH is:
*/usr/local/mkl-dnn/lib*:/lib/x86_64-linux-gnu:/usr/local/lib.
The bolded directory is not attempted during the search for the library, as
shown in the latter lines of the log. As far as I can tell, all the
permissions for that directory have been set correctly, and the library is
indeed present there.

If I link with -Wl,r-path=/usr/local/mkl-dnn/lib, however, gem5 successfully
locates the dynamic library and everything is good. For now, this solution
will suffice, but not having to do this would be nice.

I'm running on x86, simulating x86 too, on Ubuntu 16.04.

Thanks,
Sam
-- 
Thanks,

Sam Xi
Harvard University
Computer Science, Ph.D. Candidate
http://www.samxi.org
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to