crosstool - ARM922T - NMS9200
Daniel Kegel
dkegel@google.com
Sun Jan 11 22:08:00 GMT 2004
Trilok Soni wrote:
> test # strace ./hello.shared
> execve("./hello.shared", ["./hello.shared"], [/* 5
> vars */]) = 0
> uname({sys="Linux", node="(none)", ...}) = 0
> brk(0) = 0x1060c
> open("/etc/ld.so.preload", O_RDONLY) = -1 ENOENT
> (No such file or directory)
> --- SIGILL (Illegal instruction) @ 0 (0) ---
> +++ killed by SIGIL
>
> ---
> Why it is opening ld.so.preload?
See 'man ld.so'. It's ok for that file not to be there normally.
> [Same trace, but with 'libc.so' in ld.so.preload]
> /test # strace ./hello.shared
> execve("./hello.shared", ["./hello.shared"], [/* 5 vars */]) = 0
> uname({sys="Linux", node="(none)", ...}) = 0
> brk(0) = 0x10550
> open("/etc/ld.so.preload", O_RDONLY) = 3
> fstat64(3, {st_mode=S_IFREG|0644, st_size=10, ...}) = 0
> old_mmap(NULL, 10, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3, 0) = 0x40013000
> close(3) = 0
> open("/etc/ld.so.cache", O_RDONLY) = 3
> fstat64(3, {st_mode=S_IFREG|0644, st_size=802, ...}) = 0
> old_mmap(NULL, 802, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40014000
> close(3) = 0
> open("/lib/libc.so.6", O_RDONLY) = 3
> read(3, "\177ELF\1\1\1a\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0008\241\1"...,
> 1024) = 1024
> fstat64(3, {st_mode=S_IFREG|0755, st_size=1254738, ...}) = 0
> old_mmap(NULL, 1103544, PROT_READ|PROT_EXEC,
> MAP_PRIVATE, 3, 0) = 0x4001c000
> mprotect(0x40119000, 67256, PROT_NONE) = 0
> old_mmap(0x4011c000, 40960, PROT_READ|PROT_WRITE,
> MAP_PRIVATE|MAP_FIXED, 3, 0xf8
> 000) = 0x4011c000
> old_mmap(0x40126000, 14008, PROT_READ|PROT_WRITE,
> MAP_PRIVATE|MAP_FIXED|MAP_ANON
> YMOUS, -1, 0) = 0x40126000
> close(3) = 0
> munmap(0x40013000, 10) = 0
> --- SIGILL (Illegal instruction) @ 0 (0) ---
> +++ killed by SIGILL +++
It does look like putting something in ld.so.preload helped, but
I can't figure out why. BTW, that trace looks very much like a
normal trace (as you can tell on your build system); when I do it,
the final munmap is followed by
fstat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 1), ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x4017000
write(1, "hello, world\n", 13) = 13
It sounds like maybe the app is crashing on startup. You might need
to create a statically linked gdb or gdbserver to dig into this further,
and possibly compile glibc for debugging.
It is quite likely that crosstool doesn't have some option or patch you
need to get things to work on this platform. If you find it, let me know :-)
- Dan
------
Want more information? See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/
Want to unsubscribe? Send a note to crossgcc-unsubscribe@sources.redhat.com
More information about the crossgcc
mailing list