Re[4]: [Gc] atomic-ops on arm trouble, again

Ivan Maidanski ivmai at mail.ru
Fri Mar 18 13:37:49 PST 2011


Hi,

Is this a linkage error? If yes then check that src/atomic_ops.c is included in the compilation set.

Regards.

Fri, 18 Mar 2011 14:28:01 -0700 Gregory Farnum <gregf at hq.newdream.net>:

> Well here's what I've got. Our Debian maintainer recently started trying to
> build Ceph on their armel port, which is an ARMv5 setup. It failed as
> mentioned below (full logs:
> https://buildd.debian.org/fetch.cgi?pkg=ceph&arch=armel&ver=0.24.3-2&stamp=1298712439&file=log&as=raw).
> 
> Setting AO_REQUIRE_CAS as suggested lets the build proceed further, but ends
> up failing on:
> libtool: link: g++ -Wall -DAO_REQUIRE_CAS -D__CEPH__ -D_FILE_OFFSET_BITS=64
> -D_REENTRANT -D_THREAD_SAFE -rdynamic -g -O2 -Wl,--as-needed -o cmon cmon.o
> SimpleMessenger.o libmon.a libcrush.a libcommon.a -lpthread -lm -lcrypto++
> cmon.o: In function `AO_fetch_and_add_full':
> /usr/include/atomic_ops/generalize.h:338: undefined reference to
> `AO_compare_and_swap_emulation(unsigned int volatile*, unsigned int, unsigned
> int)'
> (Transcribed by hand out of a QEMU console, so please forgive any typos :)).
> 
> My tests (like the above failure) are on a QEMU arm setup (I think Debian's
> default). /proc/cpuinfo says, among other things:
> Processor  : ARM926EJ-S rev 5 (v51)
> Features : swp half thumb fastmult vfp edsp java
> CPU implementer : 0x41
> CPU architecture: 5TEJ
> CPU variant  : 0x0
> CPU part : 0x926
> CPU revision : 5
> Hardware : ARM-Versatile PB
> 
> I don't have access to the exact specs for Debian's build farm but I should be
> able to get more information from our maintainer if requested.
> 
> I don't think I should need to be adding anything else for this to work if
> it's set up properly in atomic-ops, should I?
> -Greg
> On Friday, March 18, 2011 at 2:09 PM, Ivan Maidanski wrote:
> Hi Gregory,
> > 
> > For pre-v6 ARMs, libatomic_ops emulates the missing primitives (using
> thread_lock/unlock) if AO_REQUIRE_CAS is defined.
> > 
> > Regards.
> > 
> > Fri, 18 Mar 2011 10:57:55 -0700 Gregory Farnum <gregf at hq.newdream.net>:
> > > Ivan:
> > > Thanks. As it turns out I should have checked earlier, but these are ARMv5
> > > machines (other people set these up and I just wasn't expecting it...).
> IIRC
> > > libatomic-ops don't support these, is that correct?
> > > -Greg
> > > On Friday, March 11, 2011 at 11:54 PM, Ivan Maidanski wrote:
> > > Hi,
> > > > 
> > > > Quick fix that should work for you: -D AO_REQUIRE_CAS
> > > > 
> > > > Really, the problem is here:
> > > > 
> > > > /* NEC LE-IT: gcc has no way to easily check the arm architecture
> > > >  * but defines only one of __ARM_ARCH_x__ to be true */
> > > > #if defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) \
> > > >  || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6ZK__) \
> > > >  || defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) \
> > > >  || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7R__)
> > > > 
> > > > If your target is arm 6+ then we should update this list (send me please
> > > your target's predefined ARM macro).
> > > > 
> > > > Regards. 
> > > > 
> > > > Fri, 11 Mar 2011 13:11:11 -0800 Gregory Farnum
> > > <gregory.farnum at dreamhost.com>:
> > > > 
> > > > > Hello all,
> > > > > Last September I wrote about an issue we were having with the
> atomic-ops
> > > > > implementation on ARM in Ubuntu. [1][2] This apparently got solved (I
> > > > > submitted a patch and a more generalized solution was implemented),
> but a
> > > week
> > > > > or two ago I got a report from our Debian maintainer that Ceph on ARM
> was
> > > > > failing due to issues with the atomic ops. He sent along the full
> build
> > > log.
> > > > > [3] There are no issues with any of the other debian architectures
> (well,
> > > > > relevant ones -- an unrelated issue popped up on s390).
> > > > > The relevant bit of the log is included below, but the gist of it is
> that
> > > none
> > > > > of the AO_* functions seem to be working. I've managed to reproduce
> this
> > > in a
> > > > > QEMU ARM install on both the 7.2~alpha5+cvs20100601-1 and 1.2-4+lenny1
> > > > > versions (from Debian packages), and the Debian build system is using
> > > > > 7.2~alpha5+cvs20101124-1 (I'm afraid I don't know exactly how these
> > > versions
> > > > > correspond to the cvs versions, sorry). Unlike the last time, I've
> been
> > > unable
> > > > > to find a simple fix that I think will fix things. :(
> > > > > Any suggestions? Requests for more data? Patches to try?
> > > > > Thanks!
> > > > > -Greg
> > > > > 
> > > > > [1]: https://bugs.launchpad.net/ubuntu/+source/ceph/+bug/635388
> > > > > [2]:
> > >
> http://www.hpl.hp.com/hosted/linux/mail-archives/gc/2010-September/004137.html[3]:
> > >
> https://buildd.debian.org/fetch.cgi?pkg=ceph&arch=armel&ver=0.24.3-2&stamp=1298712439&file=log&as=raw
> > > > > 
> > > > > g++ -DHAVE_CONFIG_H -I. -Wall -D__CEPH__ -D_FILE_OFFSET_BITS=64
> > > -D_REENTRANT
> > > > > -D_THREAD_SAFE -rdynamic -g -O2 -MT AuthAuthorizeHandler.o -MD -MP -MF
> > > > > .deps/AuthAuthorizeHandler.Tpo -c -o AuthAuthorizeHandler.o `test -f
> > > > > 'auth/AuthAuthorizeHandler.cc' || echo
> './'`auth/AuthAuthorizeHandler.cc
> > > > > In file included from ./include/buffer.h:55,
> > > > > from ./include/encoding.h:20,
> > > > > from ./include/object.h:29,
> > > > > from ./include/types.h:64,
> > > > > from auth/Crypto.h:17,
> > > > > from auth/Auth.h:18,
> > > > > from auth/AuthAuthorizeHandler.cc:1:
> > > > > ./include/atomic.h: In member function 'void ceph::atomic_t::inc()':
> > > > > ./include/atomic.h:33: error: 'AO_fetch_and_add1' was not declared in
> this
> > > > > scope
> > > > > ./include/atomic.h: In member function 'size_t ceph::atomic_t::dec()':
> > > > > ./include/atomic.h:36: error: 'AO_fetch_and_sub1_write' was not
> declared
> > > in
> > > > > this scope
> > > > > ./include/atomic.h: In member function 'void
> ceph::atomic_t::add(size_t)':
> > > > > ./include/atomic.h:39: error: 'AO_fetch_and_add' was not declared in
> this
> > > > > scope
> > > > > ./include/atomic.h: In member function 'void
> ceph::atomic_t::sub(int)':
> > > > > ./include/atomic.h:43: error: 'AO_fetch_and_add_write' was not
> declared in
> > > > > this scope
> > > > > make[3]: *** [AuthAuthorizeHandler.o] Error 1
> > > > > make[2]: *** [all] Error 2
> > > > > make[1]: *** [all-recursive] Error 1
> > > > > make: *** [build-stamp] Error 2
> > > > > dpkg-buildpackage: error: debian/rules build gave error exit status 2 
> > > > > _______________________________________________
> > > > > Gc mailing list
> > > > > Gc at linux.hpl.hp.com
> > > > > http://www.hpl.hp.com/hosted/linux/mail-archives/gc/
> > > 
> > > _______________________________________________
> > > Gc mailing list
> > > Gc at linux.hpl.hp.com
> > > http://www.hpl.hp.com/hosted/linux/mail-archives/gc/
> > 



More information about the Gc mailing list