This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Unreviewed C++ patch for PA (HP assembler)


> This seems like the wrong fix; there's nothing special about the type_info
> classes that would merit this kind of treatment.  Why doesn't it work for
> them to be internal?

It doesn't work because no implementation is generated for these classes
when they are "internal".  The type_info classes are implemented with global
linkage in libstdc++.  Thus, either the type_info classes need to have
external linkage or a local implementation needs to be provided in each
object.  In the latter case, the type_info classes probably shouldn't have
global scope in libstdc++.

There are definitely more issues like this.  The GNU assembler treats
undefined references as external whereas this is an error with the HP
assembler.  I haven't done any sort of complete investigation on this
matter but I do know that many of the additional failures observed in
the testsuite with HP assembler are due to undefined symbols.

Here is a run with the HP assembler:
<http://gcc.gnu.org/ml/gcc-testresults/2001-08/msg00762.html>.

Here is one with the GNU assembler:
<http://gcc.gnu.org/ml/gcc-testresults/2001-08/msg00614.html>.

This is problably a separate issue but the most serious issue with
libstdc++ on systems without weak support is some templates are not
properly being instantiated:

Executing on host: /xxx/gnu/gcc-3.1/objdir/gcc/g++ -B/xxx/gnu/gcc-3.1/objdir/gcc/ -nostdinc++ -L/xxx/gnu/gcc-3.1/objdir/hppa2.0w-hp-hpux11.11/libstdc++-v3/src -L/xxx/gnu/gcc-3.1/objdir/hppa2.0w-hp-hpux11.11/libstdc++-v3/src/.libs -B/opt/gnu/hppa2.0w-hp-hpux11.11/bin/ -B/opt/gnu/hppa2.0w-hp-hpux11.11/lib/ -isystem /opt/gnu/hppa2.0w-hp-hpux11.11/include -g -DDEBUG_ASSERT -DLOCALEDIR="/xxx/gnu/gcc-3.1/objdir/hppa2.0w-hp-hpux11.11/libstdc++-v3/po/share/locale" -nostdinc++ -I/xxx/gnu/gcc-3.1/objdir/hppa2.0w-hp-hpux11.11/libstdc++-v3/include/hppa2.0w-hp-hpux11.11 -I/xxx/gnu/gcc-3.1/objdir/hppa2.0w-hp-hpux11.11/libstdc++-v3/include -I/xxx/gnu/gcc-3.1/libstdc++-v3/libsupc++ -I/xxx/gnu/gcc-3.1/libstdc++-v3/libio -I/xxx/gnu/gcc-3.1/libstdc++-v3/include/backward -I/xxx/gnu/gcc-3.1/libstdc++-v3/testsuite /xxx/gnu/gcc-3.1/libstdc++-v3/testsuite/22_locale/collate.cc    -DDEBUG_ASSERT  -lm   -o ./collate    (timeout = 300)
/usr/ccs/bin/ld: Unsatisfied symbols:
   std::basic_string<unsigned char, std::char_traits<unsigned char>, std::allocator<unsigned char> >::_Rep::_S_max_size(data)
   std::basic_string<unsigned char, std::char_traits<unsigned char>, std::allocator<unsigned char> >::_Rep::_S_terminal(data)
collect2: ld returned 1 exit status

I mention this because it again involves undefined symbols.

Dave
-- 
J. David Anglin                                  dave.anglin@nrc.ca
National Research Council of Canada              (613) 990-0752 (FAX: 952-6605)


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]