You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@stdcxx.apache.org by Nicole Willson <wi...@roguewave.com> on 2006/02/07 22:35:28 UTC

RE: Any ideas on these StdLib build errors?

I'm having this same issue on SLES9sp2 with Visual Age 8.  However,
explicitly defining _RWSTD_NO_IMPLICIT_INCLUSION does not change anything.
Here are my errors:
xlC -F /package/1/ppc64/compilers/ibm/va80/vac.cfg -qarch=ppc64 -q64
-D_RWCONFIG=std64rd -I./../../../include -I./../../.. -I.. -I.
-D_RWBUILD_std -qpic -qrtti -g -qsuppress=1540-0152:1540-2908:1500-029
-qnotempinc   -c ../ti_messages.cpp  
"./../../../include/string", line 157.5: 1540-2910 (I) The template
"std::basic_string<char,std::char_traits<char>,std::allocator<char>
>::basic_string(const char *, unsigned long, const std::allocator<char> &)"
uses a file organization for tempinc, but tempinc is not being used.
"./../../../include/string", line 64.7: 1540-0424 (I) "template class
std::basic_string" is declared on line 64 of "./../../../include/string".
"./../../../include/string", line 161.5: 1540-2910 (I) The template
"std::basic_string<char,std::char_traits<char>,std::allocator<char>
>::basic_string(const char *, const std::allocator<char> &)" uses a file
organization for tempinc, but tempinc is not being used.
"./../../../include/string", line 64.7: 1540-0424 (I) "template class
std::basic_string" is declared on line 64 of "./../../../include/string".
"./../../../include/string", line 553.5: 1540-2910 (I) The template
"std::basic_string<char,std::char_traits<char>,std::allocator<char> >
&std::basic_string<char,std::char_traits<char>,std::allocator<char>
>::replace(unsigned long, unsigned long, const char *, unsigned long)" uses
a file organization for tempinc, but tempinc is not being used.
"./../../../include/string", line 64.7: 1540-0424 (I) "template class
std::basic_string" is declared on line 64 of "./../../../include/string".
"./../../../include/string", line 563.5: 1540-2910 (I) The template
"std::basic_string<char,std::char_traits<char>,std::allocator<char> >
&std::basic_string<char,std::char_traits<char>,std::allocator<char>
>::replace(unsigned long, unsigned long, unsigned long, char)" uses a file
organization for tempinc, but tempinc is not being used.
 
And

xlC -F /package/1/ppc64/compilers/ibm/va80/vac.cfg -qarch=ppc64 -q64
-D_RWCONFIG=std64rd -I./../../../include -I./../../.. -I.. -I.
-D_RWBUILD_std -qpic -qrtti -g -qsuppress=1540-0152:1540-2908:1500-029
-qnotempinc   -c ../ti_money_get.cpp  
"./../../../include/streambuf", line 283.43: 1540-0062 (S) The incomplete
class "_Traits" must not be used as a qualifier.
"./../../../include/rw/_ioiter.h", line 137.44: 1540-0700 (I) The previous
message was produced while processing "class
std::basic_streambuf<char,std::char_traits<char> >".
make: *** [ti_money_get.o] Error 1

What do you mean by "the whole translation unit"?

Nicole Willson
Consulting Engineer
Rogue Wave Software, Inc.
A Division of Quovadx
303-545-3210


-----Original Message-----
From: Martin Sebor [mailto:sebor@roguewave.com] 
Sent: Thursday, December 08, 2005 10:54 AM
To: stdcxx-dev@incubator.apache.org
Subject: Re: Any ideas on these StdLib build errors?

Jeremy Dean wrote:
> I am getting the following errors when trying to build the  Standard
> Library
> on AIX 5.3 with the Visual Age 7.0 compiler:
>  
>  xlCcore_r -q64  -D_RWCONFIG=12s -I./../../../include
> -I./../../../include/ansi -I./../../.. -I.. -I. -D_RWBUILD_std -O
> -D_REENTRANT -qsuppress=1500-029 -qrtti=all
> -qtemplateregistry=libstd12s.tempreg -qsuppress=1540-0183 -c
> ../ti_messages.cpp  
> "./../../../include/string", line 169.5: 1540-2910 (I) The template
> "std::basic_string<char,std::char_traits<char>,std::allocator<char>
> 
>>::basic_string(const char *, unsigned long, const std::allocator<char>
> 
> &)"
> uses a file organization for tempinc, but tempinc is not being used.

Is the configuration macro _RWSTD_NO_IMPLICIT_INCLUSION #defined?
(It should be when -qtemplateregistry is used.) If not, that's the
most likely reason behind these warnings and suggests that the
library was not configured correctly. What is the exact version
or release date of the compiler you're using (and the name of the
machine)?

[...]
>  xlCcore_r -q64  -D_RWCONFIG=12s -I./../../../include
> -I./../../../include/ansi -I./../../.. -I.. -I. -D_RWBUILD_std -O
> -D_REENTRANT -qsuppress=1500-029 -qrtti=all
> -qtemplateregistry=libstd12s.tempreg -qsuppress=1540-0183 -c
> ../ti_money_get.cpp  
> "./../../../include/streambuf", line 295.43: 1540-0062 (S) The
> incomplete
> class "_Traits" must not be used as a qualifier.

I see this code around line 295:

      294     // 27.5.2.4.5, p3
      295     virtual int_type overflow (int_type = traits_type::eof ()) {
      296         return traits_type::eof ();
      297     }

When you look at the whole translation unit, is the std::char_traits
template defined anywhere in it? If not, that would be the reason for
this error.

Martin

> "./../../../include/rw/_ioiter.h", line 192.50: 1540-0700 (I) The
> previous
> message was produced while processing "class
> std::basic_streambuf<char,std::char_traits<char> >".
> make: 1254-004 The error code from the last command is 1.
>  
>  
>  
> Jeremy Dean 
> 

Re: Any ideas on these StdLib build errors?

Posted by Martin Sebor <se...@roguewave.com>.
Nicole Willson wrote:
> I'm having this same issue on SLES9sp2 with Visual Age 8.  However,
> explicitly defining _RWSTD_NO_IMPLICIT_INCLUSION does not change anything.

The macro should be defined out of the box as a result of compiling
with -qnotempinc. I wonder why you are using the option, though.
The recommended option is -qtemplateregistry.

The (I)nformational diagnostics below look similar to this VAC++ bug:
VAC++ 7.0 bogus warning 1540-2910 on undefined member and explicit
instantiation:
http://iwww.cvo.roguewave.com/bugzilla/show_bug.cgi?id=450

> Here are my errors:
> xlC -F /package/1/ppc64/compilers/ibm/va80/vac.cfg -qarch=ppc64 -q64
> -D_RWCONFIG=std64rd -I./../../../include -I./../../.. -I.. -I.
> -D_RWBUILD_std -qpic -qrtti -g -qsuppress=1540-0152:1540-2908:1500-029
> -qnotempinc   -c ../ti_messages.cpp  
> "./../../../include/string", line 157.5: 1540-2910 (I) The template
> "std::basic_string<char,std::char_traits<char>,std::allocator<char>
> 
>>::basic_string(const char *, unsigned long, const std::allocator<char> &)"
> 
> uses a file organization for tempinc, but tempinc is not being used.
[...]
> And
> 
> xlC -F /package/1/ppc64/compilers/ibm/va80/vac.cfg -qarch=ppc64 -q64
> -D_RWCONFIG=std64rd -I./../../../include -I./../../.. -I.. -I.
> -D_RWBUILD_std -qpic -qrtti -g -qsuppress=1540-0152:1540-2908:1500-029
> -qnotempinc   -c ../ti_money_get.cpp  
> "./../../../include/streambuf", line 283.43: 1540-0062 (S) The incomplete
> class "_Traits" must not be used as a qualifier.

The error looks familiar but I don't see anything on 1540-0062 in
Bugzilla.

> "./../../../include/rw/_ioiter.h", line 137.44: 1540-0700 (I) The previous
> message was produced while processing "class
> std::basic_streambuf<char,std::char_traits<char> >".
> make: *** [ti_money_get.o] Error 1
> 
> What do you mean by "the whole translation unit"?

The output of xlC ... -E.

Btw., since you are using xlC (as opposed to xlCcore) make sure to
avoid linking in the native C++ Standard Library (I assume that's
gcc's libstdc++).

Martin