-
Notifications
You must be signed in to change notification settings - Fork 5
Atomic builtins for older toolchains
ricardopadilha edited this page Nov 4, 2014
·
1 revision
If you are getting error messsages like undefined reference to __sync_sub_and_fetch_4
while compiling for the DroboFS or DroboShare, it means the code is trying to use atomic builtins, which are not supported by GCC < 4.3.
Although it is possible to use alternative toolchains, the easiest way to work around this limitation is to create a small static library containing the missing functionality.
Assuming you have a cross-compiling VM, set the CC
environment variable to the toolchain's GCC, and execute inside the VM:
cd ~/build
mkdir gcc-atomic
cd gcc-atomic
wget -O linux-atomic.c "http://gcc.gnu.org/git/?p=gcc.git;a=blob_plain;f=libgcc/config/arm/linux-atomic.c;hb=master"
libtool --tag=CC --mode=compile $CC -g -Os -MT linux-atomic.lo -MD -MP -MF linux-atomic.Tpo -c -o linux-atomic.lo linux-atomic.c
libtool --tag=CC --mode=link $CC -g -Os -o liblinux-atomic.la linux-atomic.lo
Then redefine your environment like this:
LDFLAGS="$LDFLAGS -L~/build/gcc-atomic"
LIBS="$LIBS -llinux-atomic"
Adapted from: http://vincesoft.blogspot.ch/2012/04/how-to-solve-undefined-reference-to.html