[ROOT] Re: Update2: cintdlls fails to build with GCC 3.1.1 & 3.2 (Was: ROOT + GCC 3.2 seems okay.)

From: Masaharu Goto (MXJ02154@nifty.ne.jp)
Date: Thu Aug 29 2002 - 03:25:53 MEST


Hello Brett,

Thank you very much for analyzing the cintdll problems.
This kind of problem is quite popular with STL.  Every C++
compiler has different STL implementation. Even worst, they
change implementation from version to version. And so far,
I have not seen any compiler which is fully compliant to ANSI/ISO
C++.  Some look very close, but down to this detail, there is
difference.

I'll try RH7.2 soon. If it comes with gcc3.1/3.2, I can work on it.

Thank you
Masaharu Goto


----- Original Message -----
From: "Brett Viren" <bv@bnl.gov>
To: <roottalk@pcroot.cern.ch>
Cc: "Masaharu Goto" <MXJ02154@nifty.ne.jp>
Sent: Thursday, August 29, 2002 4:15 AM
Subject: Update2: cintdlls fails to build with GCC 3.1.1 & 3.2 (Was: ROOT +
GCC 3.2 seems okay.)


> Brett Viren writes:
>  > Brett Viren writes:
>  > -Brett.
>
> I gotta stop talking to myself like this...
>
>
> Okay, I found a problem with ROOT and GCC 3.1.1/3.2 in the area of
> building cintdlls ("make cintdlls"):
>
>
> -------------------
> In file included from cint/lib/dll_stl/G__cpp_vector.cxx:4:
> cint/lib/dll_stl/G__cpp_vector.h:73: syntax error before `;' token
> cint/lib/dll_stl/G__cpp_vector.h:77: syntax error before `;' token
> (many more ....)
> In file included from cint/lib/dll_stl/G__cpp_list.cxx:4:
> cint/lib/dll_stl/G__cpp_list.h:71: syntax error before `;' token
> cint/lib/dll_stl/G__cpp_list.h:76: syntax error before `;' token
> (many more ....)
> -------------------
>
>
> And similar for map, map2, deque, set, multimap, multimap2, multiset,
> stack, and queue.
>
> The offending lines are like the following for the "vector" and the
> "list", respectively:
>
>
> -------------------
> typedef random_access_iterator<char,long>
G__random_access_iteratorlEcharcOlonggR;
> typedef bidirectional_iterator<int,long>
G__bidirectional_iteratorlEintcOlonggR;
> -------------------
>
>
> I tried playing with these lines and found the "syntax error" is due
> to these iterators types not being defined.
>
> The only places I find these defined in GCC 3.1.1 and 3.2's libstdc++
> headers are:
>
> /usr/include/c++/3.1/backward/iterator.h
> /usr/include/c++/3.2/backward/iterator.h
>
> in which I find this warning:
>
> -------------------
> #warning This file includes at least one deprecated or antiquated header.
\
> Please consider using one of the 32 headers found in section 17.4.1.2 of
the \
> C++ standard. Examples include substituting the <X> header for the <X.h> \
> header for C++ includes, or <sstream> instead of the deprecated header \
> <strstream.h>. To disable this warning use -Wno-deprecated.
> -------------------
>
> and this comment:
>
> -------------------
> // The base classes input_iterator, output_iterator, forward_iterator,
> // bidirectional_iterator, and random_access_iterator are not part of
> // the C++ standard.  (They have been replaced by struct iterator.)
> // They are included for backward compatibility with the HP STL.
> [ defs of the iterators ... ]
> -------------------
>
> The backward/iterator.h file is not getting included into
> G__cpp_vector.cxx and the rest, although the warning is triggered in
> two spots (both due to cint/lib/longlong/longlong.h including
> iostream.h).
>
>
> This is with ROOT 3.03/08 CVS ca. 8/26 on Debian x86 with both GCC
> versions 3.1.1 and 3.2:
>
>
> -------------------
> g++-3.1 -v
> Reading specs from /usr/lib/gcc-lib/i386-linux/3.1.1/specs
> Configured with:
/mnt/data/gcc-3.1/gcc-3.1-3.1.1ds3/src/configure -v --enable-languages=c,c++
,java,f77,proto,objc,ada --prefix=/usr --mandir=/usr/share/man --infodir=/us
r/share/info --with-gxx-include-dir=/usr/include/c++/3.1 --enable-shared --w
ith-system-zlib --enable-long-long --enable-nls --without-included-gettext -
-enable-clocale=gnu --enable-__cxa_atexit --enable-threads=posix --enable-ja
va-gc=boehm --enable-objc-gc i386-linux
> Thread model: posix
> gcc version 3.1.1
> -------------------
>
>
> and
>
>
> -------------------
> g++-3.2 -v
> Reading specs from /usr/lib/gcc-lib/i386-linux/3.2/specs
> Configured with:
/mnt/data/gcc-3.1/gcc-3.2-3.2ds0/src/configure -v --enable-languages=c,c++,j
ava,f77,proto,objc,ada --prefix=/usr --mandir=/usr/share/man --infodir=/usr/
share/info --with-gxx-include-dir=/usr/include/c++/3.2 --enable-shared --wit
h-system-zlib --enable-nls --without-included-gettext --enable-__cxa_atexit 
--enable-java-gc=boehm --enable-objc-gc i386-linux
> Thread model: posix
> gcc version 3.2 20020809 (Debian prerelease)
> -------------------
>
>
> Not sure what the best solution is, but I guess replacing these
> iterator types with those defined in <iterator> is a start.
>
> Cheers,
> -Brett.
>



This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:51:06 MET