This is the mail archive of the crossgcc@sources.redhat.com mailing list for the crossgcc project.
See the CrossGCC FAQ for lots more information.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
| Other format: | [Raw text] | |
Hi Dan,
I am giving you more output with experments. So
visualize where is the error.
source file: hello.c
#include <stdio.h>
int main(int argc, char **argv){
printf("Hello, World");
return 0;
}
#arm-linux-gcc -o hello.shared hello.c
Now on target board:
#ldconfig -v
bin # ldconfig -v
ldconfig: Can't stat /usr/lib: No such file or
directory
ldconfig: Path `/lib' given more than once
/lib:
ld-linux.so.2 -> ld-2.2.5.so
libutil.so.1 -> libutil-2.2.5.so
libresolv.so.2 -> libresolv-2.2.5.so
libpthread.so.0 -> libpthread-0.9.so
libm.so.6 -> libm-2.2.5.so
libdl.so.2 -> libdl-2.2.5.so
libcrypt.so.1 -> libcrypt-2.2.5.so
libc.so.6 -> libc-2.2.5.so
/qt/lib:
libqte.so.3 -> libqte.so.3.2.3
then ld.so.cache is genereated in /etc/ dir.
I need write echo libc.so.6 > /etc/ld.so.preload
otherwise strace output quits giving error that
ld.so.preload doesn't exits ...even without trying
ld.so.cache? why?
Here is the output:
/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) = 102
4
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 +++
But it still exits with illigal instruction...why?
Regards,
Trilok Soni
--- Trilok Soni <trilok_ulug@yahoo.co.in> wrote: >
Hi,
>
> > OK, let's see where libc.so is, and what's in it.
> > On the target board, what do the commands
> > # ls -l /lib/libc[-.]*
>
> libc-2.2.5.so
> libc.so.6->libc-2.2.5.so
>
> > # cat /lib/libc.so
> /* GNU ld script
> Use the shared library, but some functions are
> only
> in
> the static library, so try that secondarily. */
> GROUP ( libc.so.6 libc_nonshared.a )
> / #
>
>
> > # ldd ./hello
> ldd is not availbale on target. But I can give
> readelf
> output:
>
> #arm-linux-readelf -a hello | grep "Shared"
> 0x00000001 (NEEDED) Shared Library: [ libc.so.6 ]
>
> #arm-linux-readelf -a hello | grep "ld-linux.so.2"
> [Requesting program interpreter :
> /lib/ld-linux.so.2]
>
> > say? Also, if you compile strace statically, what
> > does
> > # strace ./hello
> > say? (You can get strace from
>
> 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 - I think related
> with
> security concern..Do I have make one...?
> I don't have ld.so.preload on my target. But I don't
> understand it's requirement.
>
> Just write back if u need more information. I need
> to
> solve this problem. Because my C++ library problem
> is
> hanging and depends upon the solution of above
> problem.
>
>
> Regards
> Trilok Soni
> --- Dan Kegel <dank@kegel.com> wrote: > Trilok Soni
> wrote:
> > > I have built arm-linux toolchain using
> > crosstool-0.25
> > > version from kegel.com.
> > >
> > > script executed for:
> > > arm.dat gcc-3.2.3-glibc-2.2.5
> > >
> > > Board:
> > > NMS9200 - MiMagic5
> > >
> > > I have then built ramdisk for my target board
> > nms9200.
> > > I have copied following files on
> > > ramdisk/lib.
> > >
> > > # ls $ARM_ROOT/ramdisk/lib
> > > ld-2.2.5.so libgcc_s.so libstdc++.so ...
> > >
> > > Now when I execute simple Hello, World "c"
> shared
> > > library program, it just comeback to shell
> > > without printing a "hello, world" message.
> > > ...
> > > I think it is able to find loader..but loader
> is
> > > unable to load libc.so to memory. Do u think
> that
> > > I have to copy library somewhere else?
> >
>
>
>
________________________________________________________________________
> Yahoo! India Mobile: Download the latest polyphonic
> ringtones.
> Go to http://in.mobile.yahoo.com
>
> ------
> Want more information? See the CrossGCC FAQ,
> http://www.objsw.com/CrossGCC/
> Want to unsubscribe? Send a note to
> crossgcc-unsubscribe@sources.redhat.com
>
________________________________________________________________________
Yahoo! India Mobile: Download the latest polyphonic ringtones.
Go to http://in.mobile.yahoo.com
------
Want more information? See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/
Want to unsubscribe? Send a note to crossgcc-unsubscribe@sources.redhat.com
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |