Re: hidden symbol `__canonicalize_funcptr_for_compare' in
On Tue, Aug 17, 2010 at 01:27:21PM -0400, John David Anglin wrote:
> On Mon, 16 Aug 2010, dann frazier wrote:
>
> > On Mon, Aug 16, 2010 at 03:42:55PM -0400, John David Anglin wrote:
> > > > On Mon, Aug 16, 2010 at 1:57 PM, dann frazier <dannf@debian.org> wrote:
> > > > > I've seen this message pop up a couple of times recently in build logs
> > > > > (also reproducible w/ gcc-4.3).
> > > > >
> > > > > http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=3D592885
> > > > > https://buildd.debian.org/fetch.cgi?pkg=3Dopenmeeg;ver=3D2.0.0.dfsg-2;arc=
> > > > h=3Dhppa;stamp=3D1281909045
> > > > >
> > > > > google also found this instance, which appears to have been worked
> > > > > around by the maintainer:
> > > > > =A0http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=3D581204
> > > > >
> > > > > Any idea what's causing this?
> > > >
> > > > Not off the top of my head.
> > > >
> > > > Dave?
> > >
> > > I would guess it has something to do with the folowing:
> > >
> > > 2010-01-07 H.J. Lu <hongjiu.lu@intel.com>
> > >
> > > PR ld/11138
> > > * elflink.c (elf_link_check_versioned_symbol): Don't abort if
> > > a symbol referenced by DSO is is defined in a non-shared object
> > > and forced local.
> >
> > Debian's binutils contains this patch. I tried reverting it, but got
> > the same result.
>
> The patch was supposed to fix the problem...
>
> There is one additional error in the build log:
> /usr/bin/ld: final link failed: Nonrepresentable section on output
> Don't know what this means.
>
> The package built for me using the following:
> gcc version 4.4.5 20100728 (prerelease) (Debian 4.4.4-8)
> GNU ld (GNU Binutils) 2.20.51.20100305
> and
> GNU ld (GNU Binutils) 2.20.51.20100817
> So, I don't think this is a binutils issue.
>
> The message regarding `__canonicalize_funcptr_for_compare' suggests
> that a DSO contains an unresolved reference to this function. You
> might use -Wl,--trace-symbol=__canonicalize_funcptr_for_compare to
> find out where the reference is comming from.
/usr/bin/g++ -g -Wall -O2 -Wl,--trace-symbol=__canonicalize_funcptr_for_compare CMakeFiles/om_assemble.dir/assemble.cpp.o -o om_assemble -rdynamic libOpenMEEG.so.0.0.0 ../libs/MatLib/MatLib/libOpenMEEGMaths.so.1.1.0 -lmatio -latlas -lcblas -lf77blas -llapack_atlas -llapack -lblas
/usr/lib/gcc/hppa-linux-gnu/4.4.5/crtbegin.o: reference to __canonicalize_funcptr_for_compare
/usr/lib/gcc/hppa-linux-gnu/4.4.5/../../../libatlas.so: reference to __canonicalize_funcptr_for_compare
/usr/lib/gcc/hppa-linux-gnu/4.4.5/libgcc.a(fptr.o): definition of __canonicalize_funcptr_for_compare
/usr/lib/gcc/hppa-linux-gnu/4.4.5/crtend.o: reference to __canonicalize_funcptr_for_compare
/usr/bin/ld: om_assemble: hidden symbol `__canonicalize_funcptr_for_compare' in /usr/lib/gcc/hppa-linux-gnu/4.4.5/libgcc.a(fptr.o) is referenced by DSO
/usr/bin/ld: final link failed: Nonrepresentable section on output
collect2: ld returned 1 exit status
> Then, check how the
> library is being linked. It may be that it is not being linked against
> libgcc.
From:
https://buildd.debian.org/fetch.cgi?pkg=atlas;ver=3.8.3-21;arch=hppa;stamp=1272651447
[...]
make[4]: Entering directory `/build/buildd-atlas_3.8.3-21-hppa-fWTDBW/atlas-3.8.3/build/atlas-base/lib'
ld -shared -soname libblas.so.3gf -o atlas/libblas.so.3gf.0 \
--whole-archive atlas/libblas.a \
--no-whole-archive -L/usr/lib/gcc/hppa-linux-gnu/4.4.3/ -lgfortran -lgcc_s -lpthread -lm -lc
rm -f atlas/libblas.so.3gf
[...]
--
dann frazier
Reply to: