GCC snapshots + binutils 2.11 CVS won't bootstrap on FreeBSD 2.2.7
Alexandre Oliva
aoliva@redhat.com
Tue Feb 6 18:40:00 GMT 2001
On Feb 6, 2001, Alexandre Oliva <aoliva@redhat.com> wrote:
> Using only FreeBSD-native tools seems to work fine.
Spoke too soon. Linking libstdc++.so fails with FreeBSD tools too:
ld: .libs/libstdc++.lax/libsupc++convenience.a/tinfo2.o: relocation for internal symbol expected at 0x555
/home/css/guest/oliva/src/egcs/libstdc++-v3/libsupc++/new_handler.cc:44: Definition of symbol `__ZNSt9bad_allocD1Ev' (multiply defined)
/home/css/guest/oliva/src/egcs/libstdc++-v3/libsupc++/new_op.cc:50: Definition of symbol `__ZNSt9bad_allocD1Ev' (multiply defined)
The multiply-defined error messages are odd. new_handler does indeed
define the destructor of class std::bad_alloc, as per the `#pragma
implementation "new"'. new_op.cc introduces a local definition of
it anyway, and, for some reason, nm says it's a global definition.
Maybe it's because the @GOT reference appears before the symbol is
defined as non-global? Here's the relevant assembly snippet from
new_op.s:
[no previous reference to __ZNSt9bad_allocD1Ev]
pushl __ZNSt9bad_allocD1Ev@GOT(%ebx)
[...]
.type __ZNSt9bad_allocD1Ev,@function
__ZNSt9bad_allocD1Ev:
[...]
.size __ZNSt9bad_allocD1Ev,Lfe2-__ZNSt9bad_allocD1Ev
.stabs "_ZNSt9bad_allocD1Ev:f21",36,0,50,__ZNSt9bad_allocD1Ev
[no further references to it]
% nm new_op.o | grep __ZNSt9bad_allocD1Ev
000004cc T __ZNSt9bad_allocD1Ev
Is this expected behavior from FreeBSD assembler as of release 2.2.7?
% as -v
GNU assembler version 1.92.3, FreeBSD $Revision: 1.4 $
--
Alexandre Oliva Enjoy Guarana', see http://www.ic.unicamp.br/~oliva/
Red Hat GCC Developer aoliva@{cygnus.com, redhat.com}
CS PhD student at IC-Unicamp oliva@{lsd.ic.unicamp.br, gnu.org}
Free Software Evangelist *Please* write to mailing lists, not to me
More information about the Gcc-bugs
mailing list