From: Rob Desbois (rob.desbois_at_[hidden])
Date: 2008-04-04 09:33:45
On Fri, Apr 4, 2008 at 1:35 PM, Schrader, Glenn <gschrad_at_[hidden]> wrote:
> > > I cannot link against Boost libraries 1.35.0 built with CodeSourcery's
> > > ARM/GNU toolchain, although the build is successful.
> > ...
> > > undefined reference to `__sync_fetch_and_add_4'
> > > collect2: ld returned 1 exit status
> > >
> > > With assistance on the boost-build list I've ascertained that the
> > > problem is that GCC doesn't support __sync_fetch_and_add and the other
> > > atomic built-ins on ARM.
> > > An additional case for this may need to be added to
> > > boost/detail/sp_counted_base.hpp
> > >
> > > I don't know enough to patch boost for this, short-term or otherwise;
> > > can anyone offer any advice?
> > Two workarounds are available: define BOOST_SP_DISABLE_THREADS to disable
> > MT-safety for the reference count, or define BOOST_SP_USE_PTHREADS to use
> > a
> > pthread_mutex.
> Another option would be to just supply the __sync_fetch_and_add_4 function that gcc is trying to link in. When gcc doesn't support the builtin it assumes that a function exists with that name. A snippet of ARM assembly to implement the atomic operation shouldn't be that difficult.
Perhaps not for you. I am a novice when it comes to any assembly, and
have never even touched ARM assembly.
If you can provide the ARM equivalent operation I would be extremely
grateful, but I am unable to code it myself unfortunately.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk