Boost logo

Boost Users :

Subject: [Boost-users] [Interprocess Test]Boost Interprocess tests failed to compile on solaris 9
From: d s (dhiraj.reg_at_[hidden])
Date: 2009-07-06 09:13:01


Hi,

The interprocess test compilation fails on solaris 9. Error is thrown for
solaris atomic operations.
Following the command used and log -

./bjam
./libs/interprocess/test/

...patience...

...patience...

...found 1953
targets...

...updating 473
targets...

common.mkdir
bin.v2/libs/interprocess

common.mkdir
bin.v2/libs/interprocess/test

common.mkdir
bin.v2/libs/interprocess/test/intersegment_ptr_test.test

common.mkdir
bin.v2/libs/interprocess/test/intersegment_ptr_test.test/gcc-3.4.2

common.mkdir
bin.v2/libs/interprocess/test/intersegment_ptr_test.test/gcc-3.4.2/debug

common.mkdir
bin.v2/libs/interprocess/test/intersegment_ptr_test.test/gcc-3.4.2/debug/threading-multi

gcc.compile.c++
bin.v2/libs/interprocess/test/intersegment_ptr_test.test/gcc-3.4.2/debug/threading-multi/intersegment_ptr_test.o

In file included from
./boost/interprocess/detail/managed_open_or_create_impl.hpp:20,

                 from
./boost/interprocess/detail/managed_multi_shared_memory.hpp:30,

                 from
libs/interprocess/test/intersegment_ptr_test.cpp:17:

./boost/interprocess/detail/atomic.hpp: In function `boost::uint32_t
boost::interprocess::detail::atomic_add32(volatile boost::uint32_t*,
boost::uint32_t)':
./boost/interprocess/detail/atomic.hpp:331: error: invalid conversion from
`volatile uint32_t*' to
`uint32_t*'
./boost/interprocess/detail/atomic.hpp:331: error: initializing argument 1
of `uint32_t atomic_add_32_nv(uint32_t*,
int32_t)'
./boost/interprocess/detail/atomic.hpp: In function `boost::uint32_t
boost::interprocess::detail::atomic_cas32(volatile boost::uint32_t*,
boost::uint32_t, boost::uint32_t)':
./boost/interprocess/detail/atomic.hpp:341: error: `atomic_cas_32'
undeclared (first use this
function)

./boost/interprocess/detail/atomic.hpp:341: error: (Each undeclared
identifier is reported only once for each function it appears
in.)
./boost/interprocess/detail/atomic.hpp: In function `boost::uint32_t
boost::interprocess::detail::atomic_inc32(volatile
boost::uint32_t*)':
./boost/interprocess/detail/atomic.hpp:347: error: invalid conversion from
`volatile uint32_t*' to
`uint32_t*'
./boost/interprocess/detail/atomic.hpp:347: error: initializing argument 1
of `uint32_t atomic_add_32_nv(uint32_t*,
int32_t)'
./boost/interprocess/detail/atomic.hpp: In function `boost::uint32_t
boost::interprocess::detail::atomic_dec32(volatile
boost::uint32_t*)':
./boost/interprocess/detail/atomic.hpp:353: error: invalid conversion from
`volatile uint32_t*' to
`uint32_t*'
./boost/interprocess/detail/atomic.hpp:353: error: initializing argument 1
of `uint32_t atomic_add_32_nv(uint32_t*,
int32_t)'

    "g++" -ftemplate-depth-128 -O0 -fno-inline -Wall -g -pthreads -fPIC
-DBOOST_ALL_NO_LIB=1 -DBOOST_THREAD_POSIX -DBOOST_THREAD_USE_DLL=1 -I"." -c
-o
"bin.v2/libs/interprocess/test/intersegment_ptr_test.test/gcc-3.4.2/debug/threading-multi/intersegment_ptr_test.o"
"libs/interprocess/test/intersegment_ptr_test.cpp"

...failed gcc.compile.c++
bin.v2/libs/interprocess/test/intersegment_ptr_test.test/gcc-3.4.2/debug/threading-multi/intersegment_ptr_test.o...
common.mkdir
bin.v2/libs/thread/build/gcc-3.4.2/debug

common.mkdir
bin.v2/libs/thread/build/gcc-3.4.2/debug/threading-multi

common.mkdir
bin.v2/libs/thread/build/gcc-3.4.2/debug/threading-multi/pthread

gcc.compile.c++
bin.v2/libs/thread/build/gcc-3.4.2/debug/threading-multi/pthread/thread.o

gcc.compile.c++
bin.v2/libs/thread/build/gcc-3.4.2/debug/threading-multi/pthread/exceptions.o

gcc.compile.c++
bin.v2/libs/thread/build/gcc-3.4.2/debug/threading-multi/pthread/once.o

gcc.link.dll
bin.v2/libs/thread/build/gcc-3.4.2/debug/threading-multi/libboost_thread-gcc34-mt-d-1_39.so.1.39.0

...skipped
<pbin.v2/libs/interprocess/test/intersegment_ptr_test.test/gcc-3.4.2/debug/threading-multi>intersegment_ptr_test
for lack of
<pbin.v2/libs/interprocess/test/intersegment_ptr_test.test/gcc-3.4.2/debug/threading-multi>intersegment_ptr_test.o...

...skipped
<pbin.v2/libs/interprocess/test/intersegment_ptr_test.test/gcc-3.4.2/debug/threading-multi>intersegment_ptr_test.run
for lack of
<pbin.v2/libs/interprocess/test/intersegment_ptr_test.test/gcc-3.4.2/debug/threading-multi>intersegment_ptr_test...

common.mkdir
bin.v2/libs/interprocess/test/intrusive_ptr_test.test

common.mkdir
bin.v2/libs/interprocess/test/intrusive_ptr_test.test/gcc-3.4.2

common.mkdir
bin.v2/libs/interprocess/test/intrusive_ptr_test.test/gcc-3.4.2/debug

common.mkdir
bin.v2/libs/interprocess/test/intrusive_ptr_test.test/gcc-3.4.2/debug/threading-multi

gcc.compile.c++
bin.v2/libs/interprocess/test/intrusive_ptr_test.test/gcc-3.4.2/debug/threading-multi/intrusive_ptr_test.o

In file included from
./boost/interprocess/detail/managed_open_or_create_impl.hpp:20,

                 from
./boost/interprocess/managed_shared_memory.hpp:22,

                 from
libs/interprocess/test/intrusive_ptr_test.cpp:15:

./boost/interprocess/detail/atomic.hpp: In function `boost::uint32_t
boost::interprocess::detail::atomic_add32(volatile boost::uint32_t*,
boost::uint32_t)':
./boost/interprocess/detail/atomic.hpp:331: error: invalid conversion from
`volatile uint32_t*' to
`uint32_t*'

./boost/interprocess/detail/atomic.hpp:331: error: initializing argument 1
of `uint32_t atomic_add_32_nv(uint32_t*,
int32_t)'

./boost/interprocess/detail/atomic.hpp: In function `boost::uint32_t
boost::interprocess::detail::atomic_cas32(volatile boost::uint32_t*,
boost::uint32_t, boost::uint32_t)':
./boost/interprocess/detail/atomic.hpp:341: error: `atomic_cas_32'
undeclared (first use this
function)

./boost/interprocess/detail/atomic.hpp:341: error: (Each undeclared
identifier is reported only once for each function it appears
in.)
./boost/interprocess/detail/atomic.hpp: In function `boost::uint32_t
boost::interprocess::detail::atomic_inc32(volatile
boost::uint32_t*)':

./boost/interprocess/detail/atomic.hpp:347: error: invalid conversion from
`volatile uint32_t*' to
`uint32_t*'

./boost/interprocess/detail/atomic.hpp:347: error: initializing argument 1
of `uint32_t atomic_add_32_nv(uint32_t*,
int32_t)'

./boost/interprocess/detail/atomic.hpp: In function `boost::uint32_t
boost::interprocess::detail::atomic_dec32(volatile
boost::uint32_t*)':

./boost/interprocess/detail/atomic.hpp:353: error: invalid conversion from
`volatile uint32_t*' to
`uint32_t*'

./boost/interprocess/detail/atomic.hpp:353: error: initializing argument 1
of `uint32_t atomic_add_32_nv(uint32_t*, int32_t)'

I have checked online, it suggests that solaris 9 atomic operations are not
available for user code. It can only be used by kernel.
Kindly suggest what may be wrong, or any workaround for the same.

Regards,
DS



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net