Boost logo

Boost Testing :

From: Jim Douglas (jim_at_[hidden])
Date: 2005-10-17 05:26:35

(Continuation of correspondence with Rene Rivera from boost.user group)

Just to note to say that I have not given up. I was slightly delayed by
the release of a QNX service pack which I have been evaluating and
deploying. This pack upgrades the gcc compiler from 3.3.1 to 3.3.5.

I am attempting to run the tests on QNX 6.3.0 SP2 (AKA Neutrino) with
the gcc compiler called via the proprietary 'qcc/QCC' front-end.
Available libraries are GNU and Dinkumware (see below).

I have been running the tests on the code from RC_1_33_0 using the
'' script. The tests will run to completion, but the
process_jam_log application crashes with a memory fault before it can
complete the report. FYI I have attached the fragment it produces. At
some point I will build a debug version and run it through gdb to find
out what is happening. (Rene, do you have a version that runs OK?)

It may be that the 20+ MByte regress.log file is too big? I appear to be
getting this size because some of the libs and tests produce error and
warning messages that makes my terminal window look like 'The Matrix' on
steroids :-)

By far the most common warning seems to be the "virtual functions but
non-virtual destructor" which, if true, is something that perhaps should
be fixed? AFAIK there is not an option to suppress this warning in gcc
version 3.3.5 (or indeed any version of gcc).

I have modified qcc-tools.jam to force the correct version of the
compiler and library i.e.

GXX = QCC -V3.3.5,gcc_ntox86_gpp -lang-c++

I have also inserted a few case statements in gcc-tools.bjam so that the
'-Wxx' and '-fxx' options are prefixed with '-Wc,' - a quirk of QCC. I
couldn't figure out how to force a local override of the options in
qcc-tools.jam. If this can be done what is the syntax?

QNX has a choice of GNU or Dinkumware C++ libraries and within
Dinkumware there are 6 variants! I started with Dinkumware because it is
the default, but I was able to identify that the python library was
failing because it uses the macro __GNUC__ to determine the presence or
otherwise of the file 'cxxabi.h'. In other words there is an implicit
assumption that if you are using the GNU compiler you MUST also have the
associated GNU library. This is a Very Bad Thing. OK, so changing to the
GNU library fixed this particular problem but...

On a more philosophical note QNX does open up quite a can of worms. To
quote from their website:

"QNX Momentics PE gives you choice. You can ... work with multiple
development hosts (Windows, Solaris, QNX Neutrino), and target a variety
of processors (x86, MIPS, PowerPC, ARM, StrongARM, Intel® XScale™
Microarchitecture, and SH-4) - all from the same IDE."

So, ideally the Boost configuration options would need to be capable of
_independently_ specifying:

Host OS,
Target Platform,
Target OS, (so that it can be applied to other than QNX)
Tools (there is a choice of GNU 2.95.5, 3.3.5 or Intel C++ with QNX),
C++ Library

...but that's for the future.

Jim Douglas

Boost Compiler Status Error Log

Compiler Status: Generic Unix

Run Date: 19:27:46 UTC, Sunday 16 October 2005

config - config_info - qcc

Run output:

GNU C++ version 3.3.5 (qnx-nto)
    __cplusplus                             =1
    __STDC__                                =1
    __GNUC__                                =3
    __GNUC_MINOR__                          =3
    __STDC_VERSION__                        =199901L
    __GNUG__                                =3
    __VERSION__                             ="3.3.5 (qnx-nto)"
    __REGISTER_PREFIX__                      [no value]
    __USER_LABEL_PREFIX__                    [no value]
    __EXCEPTIONS                            =1
    __ELF__                                 =1
    __i386__                                =1
    __unix                                  =1
    __i386                                  =1
    i386                                    =1
    __STDC_HOSTED__                         =1


GNU libstdc++ version 20040930
    _CPPLIB_VER                             =402
    _HAS_EXCEPTIONS                         =1
    __GLIBCPP__                             =20040930
    _GLIBCPP_VERSION                        ="3.3.5"


Detected Platform: Generic Unix
    Type char is signed
    Type wchar_t is unsigned
    byte order for type short               =0 8 
    byte order for type int                 =0 8 16 24 
    byte order for type long                =0 8 16 24 
    sizeof(wchar_t)                         =4
    sizeof(short)                           =2
    sizeof(int)                             =4
    sizeof(long)                            =4
    sizeof(size_t)                          =4
    sizeof(ptrdiff_t)                       =4
    sizeof(void*)                           =4
    sizeof(void(*)(void))                   =4
    sizeof(float)                           =4
    sizeof(double)                          =8
    sizeof(long double)                     =12
    CHAR_BIT                                =8
    CHAR_MAX                                =127
    WCHAR_MAX                               =0x7fffffff
    SHRT_MAX                                =32767
    INT_MAX                                 =2147483647
    LONG_MAX                                =2147483647L
    LLONG_MAX                               =9223372036854775807LL
    LONGLONG_MAX                            =9223372036854775807LL
    ULLONG_MAX                              =18446744073709551615ULL
    ULONGLONG_MAX                           =18446744073709551615ULL
    __STDC_IEC_559__                        =1
    __STDC_IEC_559_COMPLEX__                =1
    __STDC_ISO_10646__                      =200009L
    _LARGEFILE64_SOURCE                     =1
    _POSIX_CHOWN_RESTRICTED                 =1
    _POSIX_FSYNC                            =1
    _POSIX_MEMORY_PROTECTION                =1
    _POSIX_MESSAGE_PASSING                  =1
    _POSIX_NO_TRUNC                         =1
    _POSIX_PRIORITY_SCHEDULING              =1
    _POSIX_REALTIME_SIGNALS                 =1
    _POSIX_SAVED_IDS                        =1
    _POSIX_SEMAPHORES                       =1
    _POSIX_SYNCHRONIZED_IO                  =1
    _POSIX_THREAD_PRIO_INHERIT              =1
    _POSIX_THREADS                          =1
    _POSIX_TIMEOUTS                         =1
    _POSIX_TIMERS                           =1
    _POSIX_VDISABLE                         =0
    _POSIX_VERSION                          =199506L
    _POSIX2_C_BIND                          =1
    _POSIX2_CHAR_TERM                       =1
    _POSIX2_FORT_DEV                        =1
    _POSIX2_FORT_RUN                        =1
    _POSIX2_LOCALEDEF                       =1
    _POSIX2_SW_DEV                          =1
    _POSIX2_UPE                             =1
    _POSIX2_VERSION                         =1
    _XBS5_ILP32_OFF32                       =1
    _XBS5_ILP32_OFFBIG                      =1
    _XBS5_LP64_OFF64                        =1
    _XBS5_LPBIG_OFFBIG                      =1
    _XOPEN_CRYPT                            =1
    _XOPEN_ENH_I18N                         =1
    _XOPEN_LEGACY                           =1
    _XOPEN_REALTIME                         =1
    _XOPEN_REALTIME_THREADS                 =1
    _XOPEN_SHM                              =1
    _XOPEN_UNIX                             =1
    _XOPEN_VERSION                          =500


Boost version 103301
    BOOST_USER_CONFIG                       =<boost/config/user.hpp>
    BOOST_COMPILER_CONFIG                   ="boost/config/compiler/gcc.hpp"
    BOOST_STDLIB_CONFIG                     ="boost/config/stdlib/libstdcpp3.hpp"
    BOOST_PLATFORM_CONFIG                   ="boost/config/platform/qnx.hpp"
    BOOST_DEDUCED_TYPENAME                  =typename
    BOOST_HAS_LONG_LONG                      [no value]
    BOOST_HAS_NRVO                           [no value]
    BOOST_HAS_PARTIAL_STD_ALLOCATOR          [no value]
    BOOST_HAS_STDINT_H                       [no value]
    BOOST_MSVC6_MEMBER_TEMPLATES             [no value]
    BOOST_NESTED_TEMPLATE                   =template
    BOOST_NO_CWCHAR                          [no value]
    BOOST_NO_CWCTYPE                         [no value]
    BOOST_NO_HASH                            [no value]
    BOOST_NO_IS_ABSTRACT                     [no value]
    BOOST_NO_MS_INT64_NUMERIC_LIMITS         [no value]
    BOOST_NO_SLIST                           [no value]
    BOOST_NO_STD_WSTREAMBUF                  [no value]
    BOOST_NO_STD_WSTRING                     [no value]
    BOOST_NO_SWPRINTF                        [no value]
    BOOST_UNREACHABLE_RETURN(0)              [no value]


config - config_test - qcc

Compiler output:

In file included from /root/workspaces/Libs/boost_dev/libs/config/test/config_test.cpp:409:
/root/workspaces/Libs/boost_dev/libs/config/test/boost_has_stdint_h.ipp: In 
   function `int boost_has_stdint_h::test()':
/root/workspaces/Libs/boost_dev/libs/config/test/boost_has_stdint_h.ipp:29: error: `
   int_fast8_t' undeclared (first use this function)
/root/workspaces/Libs/boost_dev/libs/config/test/boost_has_stdint_h.ipp:29: error: (Each
   undeclared identifier is reported only once for each function it appears 
/root/workspaces/Libs/boost_dev/libs/config/test/boost_has_stdint_h.ipp:29: error: parse
   error before `=' token
/root/workspaces/Libs/boost_dev/libs/config/test/boost_has_stdint_h.ipp:30: error: `
   int_least8_t' undeclared (first use this function)
/root/workspaces/Libs/boost_dev/libs/config/test/boost_has_stdint_h.ipp:32: error: `
   j' undeclared (first use this function)
/root/workspaces/Libs/boost_dev/libs/config/test/boost_has_stdint_h.ipp:33: error: `
   k' undeclared (first use this function)
cc: /usr/qnx630/host/qnx6/x86/usr/lib/gcc-lib/i386-pc-nto-qnx6.3.0/3.3.5/cc1plus error 1

    set -e 
    "QCC"  -V3.3.5,gcc_ntox86_gpp -lang-c++  -c -Wc,-Wall,-ftemplate-depth-255   -g -O0 -Wc,-fno-inline   -I"../bin/boost/status"   -I "/root/workspaces/Libs/boost_dev"  -o "../bin/boost/status/config_test.test/qcc/debug/config_test.o"  "/root/workspaces/Libs/boost_dev/libs/config/test/config_test.cpp" 

crc - crc_test - qcc

Compiler output:

In file included from /root/workspaces/Libs/boost_dev/boost/integer.hpp:20,
                 from /root/workspaces/Libs/boost_dev/boost/crc.hpp:13,
                 from /root/workspaces/Libs/boost_dev/libs/crc/crc_test.cpp:18:
/root/workspaces/Libs/boost_dev/boost/integer_traits.hpp:117:2: #error No WCHAR_MIN and WCHAR_MAX present, please adjust integer_traits<> for your compiler.
In file included from /root/workspaces/Libs/boost_dev/boost/integer.hpp:20,
                 from /root/workspaces/Libs/boost_dev/boost/crc.hpp:13,
                 from /root/workspaces/Libs/boost_dev/libs/crc/crc_test.cpp:18:
/root/workspaces/Libs/boost_dev/boost/integer_traits.hpp:119: error: parse 
   error before `{' token
cc: /usr/qnx630/host/qnx6/x86/usr/lib/gcc-lib/i386-pc-nto-qnx6.3.0/3.3.5/cc1plus error 1

    set -e 
    "QCC"  -V3.3.5,gcc_ntox86_gpp -lang-c++  -c -Wc,-Wall,-ftemplate-depth-255   -g -O0 -Wc,-fno-inline   -I"../bin/boost/status"   -I "/root/workspaces/Libs/boost_dev"  -o "../bin/boost/status/crc_test.test/qc

Boost-testing list run by mbergal at