Re: (Rising Spam Alert)Re: (Rising Spam Alert)Re: wrong lib address

xchen
2007-09-03T10:30:22Z

Hi Daniel

I have resolved this problem. I misunderstood the mean of
solib-absolute-prefix. And now I use solib-search-path to load the library.
Bad luck! New errors occured include Malformed packet(b) (missing colon)
and Invalid remote reply when I continue to debug my peogram. Belowed is the
snapshot

(gdb) set solib-absolute-prefix /root/
(gdb) set solib-search-path
/opt/montavista/pro/devkit/ppc/8xx/target/lib/:/opt/montavista/pro/devkit/pp
c/8xx/target/usr/lib/
(gdb) b main
Breakpoint 1 at 0x1000a5cc: file ../working/src/root.cpp, line 232.
(gdb) target remote 192.168.70.99:1234
Remote debugging using 192.168.70.99:1234
_start () at ../sysdeps/powerpc/powerpc32/dl-start.S:33
33 ../sysdeps/powerpc/powerpc32/dl-start.S: No such file or directory.
in ../sysdeps/powerpc/powerpc32/dl-start.S
Current language: auto; currently asm
(gdb) c
Continuing.
Ignoring packet error, continuing...
[New Thread 16384]
[Switching to Thread 16384]

Breakpoint 1, main (argc=2147483016, argv=0xfc32da4) at ../working/src/root.
cpp:232
232 pthread_attr_init( &init_attr );
Current language: auto; currently c++
(gdb) info sharedlibrary
From To Syms Read Shared Object Library
0x0ff940c0 0x0ff9cc84 Yes
/opt/montavista/pro/devkit/ppc/8xx/target/lib/libpthread.so.0
0x0ff5fc24 0x0ff63bb4 Yes
/opt/montavista/pro/devkit/ppc/8xx/target/lib/librt.so.1
0x0feb9a78 0x0ff198bc Yes
/opt/montavista/pro/devkit/ppc/8xx/target/usr/lib/libstdc++.so.5
0x0fdae728 0x0fe1e998 Yes
/opt/montavista/pro/devkit/ppc/8xx/target/lib/libm.so.6
0x0fd7da40 0x0fd86f3c Yes
/opt/montavista/pro/devkit/ppc/8xx/target/lib/libgcc_s.so.1
0x0fc32ad0 0x0fd3a1fc Yes
/opt/montavista/pro/devkit/ppc/8xx/target/lib/libc.so.6
0x30001f90 0x30013760 Yes
/opt/montavista/pro/devkit/ppc/8xx/target/lib/ld.so.1
(gdb) b sysInit
Breakpoint 2 at 0x1000a2c0: file ../working/src/root.cpp, line 90.
(gdb) set listsize 30
(gdb) c
Continuing.
warning: Invalid remote reply: n8001
warning: Invalid remote reply: n4002
[New Thread 16386]
[Switching to Thread 16386]
(gdb) n
Malformed packet(b) (missing colon): 01:30024860;40:0ff970ac;
Packet: 'TR272;01:30024860;40:0ff970ac;'

(gdb) n
Malformed packet(b) (missing colon): 01:30024860;40:0ff970ac;
Packet: 'TR273;01:30024860;40:0ff970ac;'

(gdb) n
Malformed packet(b) (missing colon): 01:30024860;40:0ff970ac;
Packet: 'TR274;01:30024860;40:0ff970ac;'

(gdb) n
warning: Invalid remote reply: n8003
warning: Invalid remote reply: nc004
warning: Invalid remote reply: n10005
warning: Invalid remote reply: n14006
warning: Invalid remote reply: n18007
warning: Invalid remote reply: n1c008
warning: Invalid remote reply: n20009
warning: Invalid remote reply: n2400a
warning: Invalid remote reply: n2800b
warning: Invalid remote reply: n2c00c
warning: Invalid remote reply: n3000d
warning: Invalid remote reply: n3400e

Hope your help
Thx,
Xi

-----邮件原件-----
发件人: gdb-owner@sourceware.org [mailto:gdb-owner@sourceware.org] 代表
xchen
发送时间: 2007年9月3日 12:17
收件人: 'Daniel Jacobowitz'
抄送: gdb@sourceware.org
主题: (Rising Spam Alert)Re: (Rising Spam Alert)Re: wrong lib address

Hi Daniel,

You said I need the libraries available in the same path for both
host and target. But gdb can load ld.so.1 successfully , in fact my target
doesn't have the path such as
/opt/montavista/pro/devkit/ppc/8xx/target/lib, ld.so.1 was storaged in /lib
for target. It means gdb load the same library use different path.
Why gdb can't load other library use different path.
BTW /mnt/cf/shared/lib was added in the ld.so.conf for target. I
guess $(CROSS_COMPILE)/lib is the default library path for montavista, in
target, $(CROSS_COMPILE) is a empty string, so for gdb both
/opt/montavista/pro/devkit/ppc/8xx/target/lib and /lib are equle to
$(CROSS_COMPILE)/lib. But when I use echo $CROSS_COMPILE in host,

Last login: Mon Sep 3 10:24:10 2007 from 192.168.70.183 Have a lot of
fun...
metrodev:~ # echo $CROSS_COMPILE

metrodev:~ #
It displays empty string
Could you give me directions.

Thx,
Xi

(gdb) info sharedlibrary
From To Syms Read Shared Object Library
0x30001f90 0x30013760 Yes
/opt/montavista/pro/devkit/ppc/8xx/target/lib/ld.so.1
No /mnt/cf/shared/lib/libpthread.so.0
No /mnt/cf/shared/lib/librt.so.1
No /mnt/cf/shared/lib/libstdc++.so.5
No /mnt/cf/shared/lib/libm.so.6
0x0fd7da40 0x0fd86f3c Yes
/opt/montavista/pro/devkit/ppc/8xx/target/lib/libgcc_s.so.1
0x0fc32ad0 0x0fd3a1fc Yes
/opt/montavista/pro/devkit/ppc/8xx/target/lib/libc.so.6

-----邮件原件-----
发件人: gdb-owner@sourceware.org [mailto:gdb-owner@sourceware.org] 代表
Daniel Jacobowitz
发送时间: 2007年8月30日 20:15
收件人: xchen
抄送: gdb@sourceware.org
主题: (Rising Spam Alert)Re: wrong lib address

On Thu, Aug 30, 2007 at 06:21:12PM +0800, xchen wrote:
> I don't know why the path changed to /mnt/cf/shared/lib, this is my
> target lib path. Maybe I create the related dir can solve the problem,
> but I am glad to know the essential reason and the related solution.

That means /mnt/cf/shared is the path on your target where these libraries
are found. You need the libraries available in the same path (plus sysroot)
on your host that is used on your target. Try running ldd on the target
instead of the cross ldd.