
2012/3/5 Peter Dimov <pdimov@pdimov.com>
The problem here is that basically all Sparcs currently in existence support the V9 instruction set, but the GCC architecture macros denote an ABI and not an instruction set, and the V9 ABI is 64 bit. When you compile with -mcpu=v9 -m32, which enables the CAS instruction but still compiles for 32 bit and the V8 ABI, __sparcv8 is set. So there's no way to determine, on the basis of the predefined macros, whether shared_ptr should use CAS or not.
Thanks for the explanation. I got it to build by specifying exactly that, -mcpu=v9 -m32, which resulted in v8+ binaries. For those interested, here's my set of Boost packages compiled on Solaris 10, for sparc and intel architectures: http://buildfarm.opencsw.org/experimental.html#boost Here's the build recipe: https://gar.svn.sourceforge.net/svnroot/gar/csw/mgar/pkg/boost/branches/boos... Each shared library is in a separate package, so if you build something depending on Boost, you only need to depend on a small package instead of a big bundle. There are 32-bit and 64-bit libraries, under /opt/csw/gxx/lib and /opt/csw/gxx/lib/{sparcv9,amd64}. If anyone's interested in trying them, I'll be happy to get feedback. Maciej