_dl_app_init_array and _dl_app_fini_array problems

Kevin Day thekevinday at gmail.com
Thu Oct 5 23:00:29 UTC 2006


> I have checked everything except the ld-uClibc.so file.
> # ldd /tools/lib/ld-uClibc.so.0
>         not a dynamic executable
>
> # ldd /lib/ld-uClibc.so.0
>         libc.so.0 => /lib/libc.so.0 (0xb7ec1000)
>         ld-uClibc.so.0 => /lib/ld-uClibc.so.0 (0xb7f5f000)
>         libc.so.0 => libc.so.0 (0x00000000)
>         /lib/ld-uClibc.so.0 => /lib/ld-uClibc.so.0 (0x00000000)
>
> For some reason, the ld-uClibc.so.0 (aka ld-uClibc-0.9.29.so) is not
> being created as a shared  object, so attempts to link against it do
> not seem to work properly.
>
I went over with a uClibc 0.9.28 and found this was the case as well,
so the above quoted post is no bug.  I still don't get why a static
file is being called a *.so file.  This may be whats breaking, but I
cannot see this as being true as the same gcc and same binutils are
used to build uClibc-0.9.28 sucessfully.  The only difference between
the systems is the uClibc version.

It is simply impossible to create a toolchain as is, so there is no
possible way to have anything link against libc.so as is.  And created
a uClibc svn from a host of a different version (or libc) is
practically the definition of what the toolchain is for.  So this is a
problem.

However, this problem may be spawned by the combination of whatever
gcc-4.1.1 does, binutils-2.17 does (tested on binutils-2.16.1 to the
same end) and uClibc svn...

As I had pointed out in #2 of the original post.  The functions are
not being attatched (UND), this normally is supposed to happen when
objects become linked.

So, I decided that I'd put it back in myself.  After the compilation
of the "broken" libc, I then created the following: ln -s
ld-uClibc.so.0 /tools/lib/libld-uClibc.so.  I then add the following
to all packages built agains this libc: "-lld-uClibc "

Which means this generates code that compiles and creates a working executable:
/tools/bin//i686-pc-linux-uclibc-gcc -lld-uClibc -x c -

This works.  It also shows that somehow when the libuClibc-0.9.29 is
being linked, and is somehow doing it improperly.  However, the cause
of this is a complete mystery to me.

-- 
Kevin Day



More information about the uClibc mailing list