[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#443234: Inconsistent definition of _GLIBCXX_USE_C99 across arches



Package: libstdc++6-4.1-dev
Version: 4.1.2-15
Severity: important

Investigating why stlport5.1 fails to build from sources on arm[1] and
mips[2] shows that _GLIBCXX_USE_C99 is defined inconsistently across
platforms.

The following C++ snippet:

  #include <cstdlib>

  int main(int argc, char* argv[]) {
    long long int l = std::llabs(0LL);
    return (int) l;
  }

compiles fine on my amd64 box with `g++ stlportftbfs.cc', but on mips I get:
  stlportftbfs.cc: In function 'int main(int, char**)':
  stlportftbfs.cc:3: error: 'llabs' is not a member of 'std'

Adding `-D_GLIBCXX_USE_C99' makes the program compile on mips[3]. The
difference seems to come from /usr/include/c++/4.1/$arch/bits/c++config.h
which #define _GLIBCXX_USE_C99 on some arches but not on others.

Having a look a libstdc++-dev 4.2.1-5 headers on mips show that the
macro is still not defined, but I have not been able to test with the
snippet.

Adding unconditionally -D_GLIBCXX_USE_C99 when compiling stlport5.1
might work, but I'm not sure it's the way to go. Shouldn't g++ rather
provide similar features (if doable) on all arches we support?

Regards,

Thomas

[1] http://buildd.debian.org/fetch.cgi?&pkg=stlport5.1&ver=5.1.3-3&arch=arm&stamp=1187913269&file=log
[2] http://buildd.debian.org/fetch.cgi?&pkg=stlport5.1&ver=5.1.3-3&arch=mips&stamp=1187912520&file=log
[3] and `-D_GNU_SOURCE' does not help




Reply to: