uClibc, libstdc++, and readdir()
Peter S. Mazinger
ps.m at gmx.net
Sat May 27 16:41:52 UTC 2006
On 26 May 2006, Jeff Warren wrote:
> On Thu, 2006-05-25 at 20:07, Mike Frysinger wrote:
>
> > the uClibc ldd app isnt perfect ... sometimes it's better if you just use
> > `readelf -d` and look at the DT_NEEDED entries
> > -mike
>
> arm-linux-readelf -d flyermarker (one of my C++ programs...)
>
> Dynamic segment at offset 0x31fb4 contains 22 entries:
> Tag Type Name/Value
> 0x00000001 (NEEDED) Shared library:
> [libstdc++.so.5]
> 0x00000001 (NEEDED) Shared library: [libfloat.so.1]
> 0x00000001 (NEEDED) Shared library: [libgcc_s.so.1]
it seems you have linked against libc.a instead of libc.so
> 0x0000000c (INIT) 0x98c4
> 0x0000000d (FINI) 0x350c0
> 0x00000004 (HASH) 0x8130
> 0x00000005 (STRTAB) 0x8ec0
> 0x00000006 (SYMTAB) 0x8590
> 0x0000000a (STRSZ) 1622 (bytes)
> 0x0000000b (SYMENT) 16 (bytes)
> 0x00000015 (DEBUG) 0x0
> 0x00000003 (PLTGOT) 0x42128
> 0x00000002 (PLTRELSZ) 344 (bytes)
> 0x00000014 (PLTREL) REL
> 0x00000017 (JMPREL) 0x976c
> 0x00000011 (REL) 0x969c
> 0x00000012 (RELSZ) 208 (bytes)
> 0x00000013 (RELENT) 8 (bytes)
> 0x6ffffffe (VERNEED) 0x963c
> 0x6fffffff (VERNEEDNUM) 2
> 0x6ffffff0 (VERSYM) 0x9516
> 0x00000000 (NULL) 0x0
>
> arm-linux-readelf -d bin/busybox (this is version 1.1.2, which works
> fine).
>
> Dynamic segment at offset 0x6d960 contains 17 entries:
> Tag Type Name/Value
> 0x00000001 (NEEDED) Shared library: [libfloat.so.1]
> 0x0000000c (INIT) 0x902c
> 0x0000000d (FINI) 0x63490
> 0x00000004 (HASH) 0x8130
> 0x00000005 (STRTAB) 0x8960
> 0x00000006 (SYMTAB) 0x83b0
> 0x0000000a (STRSZ) 1091 (bytes)
> 0x0000000b (SYMENT) 16 (bytes)
> 0x00000015 (DEBUG) 0x0
> 0x00000003 (PLTGOT) 0x7da24
> 0x00000002 (PLTRELSZ) 168 (bytes)
> 0x00000014 (PLTREL) REL
> 0x00000017 (JMPREL) 0x8f84
> 0x00000011 (REL) 0x8da4
> 0x00000012 (RELSZ) 480 (bytes)
> 0x00000013 (RELENT) 8 (bytes)
> 0x00000000 (NULL) 0x0
>
>
> Actually it looks like ldd is fine as readelf -d reports the same thing.
> And I don't understand it but I could remove the libuClibc.so from the
> rootfs and bootup, like I said it would eventually hang, but that is the
> ONLY C library on my system, libc.so and all others are links pointing
> to uClibc. Even BusyBox would run. Eventually the system will hang,
> but I would expect something more catastrophic and immediate. I don't
> understand it as using readdir() is obviously using the CLibrary, but it
> would still work.
>
> Now if I removed the libstdc++ library the effect on the program was
> immediate and they would not run.
>
> The end result is good for me now and everything is working. I just
> wanted to understand more what was going on as I would expect the
> program to link to uClibc and it does not, so as far as that goes, I
> still don't get it.
>
> Regards,
>
> Jeff Warren
>
>
>
--
Peter S. Mazinger <ps dot m at gmx dot net> ID: 0xA5F059F2
Key fingerprint = 92A4 31E1 56BC 3D5A 2D08 BB6E C389 975E A5F0 59F2
More information about the uClibc
mailing list