Hi

 

Not sure if this belongs on this list or the Boost.Build list, but the problem exists when using Boost as well as building it.

 

I’m using Boost with the ARM-ELF-GCC toolchain with gcc version 4.0.1. When building the Boost serialization library, I get the following error:

./boost/archive/basic_binary_oarchive.hpp:80: error: invalid application of 'sizeof' to incomplete type 'boost::STATIC_ASSERTION_FAILURE<false>'

 

It turns out that sizeof(class_id_type ) == 4 in stead of 2, where class_id_type is defined as follows:

 

class class_id_type {

private:

    typedef int_least16_t base_type;

    base_type t;

};

 

Using a toolchain with a more recent gcc version (arm-none-eabi-gcc 4.4.1) works correctly, but unfortunately I need to get Boost working with the old toolchain as well. I have tried to add __attribute__ ((packed)) to the class declaration, but that breaks as well (cannot bind packed field in operator int_least16_t).

Is there anything I can do to rectify the situation?

 

My user-config.jam contains the following:

 

using gcc : armelf :  "arm-elf-gcc.exe" :

                <cflags>-nostdlib

                <cxxflags>-DBOOST_NO_INTRINSIC_WCHAR_T

                <cxxflags>-D__OAT_API_VERSION__=637

                <cxxflags>-D__WIP_PLUGIN_VERSION__=543

                <cxxflags>-D__arm

                <cxxflags>-D_LITTLE_ENDIAN

                <cxxflags>-IC:\Program Files (x86)\Sierra Wireless\Embedded Software\com.wavecom.openat.ide.spm.lib.os.model.6.37.0.201202060950_6.37.0.201202060950\resources/ADL/itf

                <cxxflags>-IC:\Program Files (x86)\Sierra Wireless\Embedded Software\com.wavecom.openat.ide.spm.lib.os.model.6.37.0.201202060950_6.37.0.201202060950\resources/ADL/basic

                <cxxflags>-IC:\Program Files (x86)\Sierra Wireless\Embedded Software\com.wavecom.openat.ide.spm.lib.plugin.model.WIP.5.43.0.201202100610_5.43.0.201202100610\resources/WIP/itf

                <cxxflags>-fshort-enums

                <cxxflags>-fdollars-in-identifiers

                <cxxflags>-nostartfiles

                <cxxflags>-fno-strict-aliasing

                <cxxflags>-fno-common

                <cxxflags>-fomit-frame-pointer

                <cxxflags>-mthumb-interwork

                <cxxflags>-mthumb

                <cxxflags>-march=armv5te

                <cxxflags>-msoft-float

                <cxxflags>-mfpu=fpa

                <cxxflags>-mapcs

                <cxxflags>-mno-apcs-stack-check

                <cxxflags>-mlittle-endian

                <architecture>arm

                <address-model>32

 

;

 

I’m building boost with the following command .\b2 variant=debug,release link=static threading=single toolset=gcc-armelf --debug-configuration --debug-building --with-serialization stage

 

Any help will be appreciated.

 

Pierre-Andre van Leeuwen

Director | Gendac (Pty) Ltd