[uClibc]can't resolve symbol.

Stuart Hughes seh at zee2.com
Wed Jul 9 12:04:53 UTC 2003


ibe at dcl.info.waseda.ac.jp wrote:
> 
> Thanks, Erik.
> 
> > > Hi,
> > >
> > > By the way, what is .oS?
> > > Is it as same as .o?
> > > My libgcc.a has some .oS.
> >
> > ".oS" is the convention used by some GNU packages such as
> > glibc for object files that were compiled as PIC code.
> >
> >  -Erik
> 
> By the way, Do you know why my symbol of libgcc can not be linked
> successfully?
> Is it concerned with .oS object?
> 
> When I link symbol of libgcc to libuClibc-0.9.19.so,
> some symbol change its type.
> For example,
> 
> In a libgcc.a ->
> 00000384 T __adddf3
> 
> In a libuClibc-0.9.19.so ->
> 00000898 t __adddf3
> 
> So It cause this problem when I use ls or something,
> 
> # ls
> ls: can't resolve symbol '__adddf3'
> 
> Link script is below,
> 
> ppc_8xx-ld  -s -shared --warn-common --warn-once -z combreloc
> -soname=libc.so.0 -o libuClibc-0.9.19.so \
>         --whole-archive ./tmp/libgcc-need.a libc.a \
>         ..//libc/misc/internals/interp.o --no-whole-archive \
>         -init __uClibc_init
> /opt/hardhat/devkit/ppc/8xx/lib/gcc-lib/powerpc-hardhat-linux/3.2.1/
> libgcc.a
> 

I see the same problem on powerpc 8xx too.  The work-around was to set:

# UCLIBC_HAS_FLOATS is not set

in the uclibc configuration.  This is not a proper solution though as I
can't work out why/how when busybox links it resolves __adddf3 and
friends, but on the target when it runs, these symbols get reported as
unresolved.  

Note I had wondered whether the linker should be using the shared
libgcc_s library, but looking at the specs file for gcc, the default is
to use the static libgcc and libgcc_eh libraries.

Regards, Stuart



More information about the uClibc mailing list