[GCC-XML] gccxml vs _glibcxx_debug

Jakub Zytka kubol at kormoran.net
Tue Aug 10 10:21:15 EDT 2010


Hello

As far as I remember gccxml (0.9) uses parser from gcc 4.2 which apparently 
doesn't support stl debug mode (or does it? I've only seen some fragmentary 
notes around the net, nothing definite)

Consider following example:
#include <list>

namespace nondebug
{
#ifndef _GLIBCXX_DEBUG
using std::list;
#else
using __gnu_norm::list;
#endif
}

void f(nondebug::list<int> const &);

If i use gccxml with -D_GLIBCXX_DEBUG i get:
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/x86_64-redhat-linux/bits/c++config.h:1226: 
error: current namespace 'std' does not enclose strongly used namespace 
'__gnu_debug_def'

The offending code in c++config.h:

#ifdef _GLIBCXX_DEBUG
# define _GLIBCXX_STD __gnu_norm
# define _GLIBCXX_EXTERN_TEMPLATE 0
namespace __gnu_norm
{
   using namespace std;
}
namespace std
{
   using namespace __gnu_debug_def __attribute__ ((strong)); // here's the error
}
# if __NO_INLINE__ && !__GXX_WEAK__
#  warning debug mode without inlining may fail due to lack of weak symbols
# endif
#else
# define _GLIBCXX_STD std
#endif


Is _GLIBCXX_DEBUG not supported or is it just me? Would upgrading gcc from 4.1 
to 4.2 or eg. 4.4 help in such case? Or perhaps namespace nondebug should be 
defined in some other way?
Have anyone succeeded with tweaking c++config.h in gccxml in order to be able to 
use _GLIBCXX_DEBUG? Any hints?

I use gccxml as a feed for pygccxml/pyplusplus. In my interface there are 
functions which expect non-debug containers regardless of overall config being 
used. Turning off _GLIBCXX_DEBUG only for gccxml won't be any good because 
types get mixed.

regards,
Jakub Zytka




More information about the gccxml mailing list