[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: