Re[2]: [Gc] Missed AO_compare_and_swap_full on Solaris 10 SPARC building

Ivan Maidanski ivmai at mail.ru
Thu Sep 15 08:15:27 PDT 2011


Hi Claudio,

AO_REQUIRE_CAS should defined in include/private/gc_priv.h provided PARALLEL_MARK is defined.

AO_compare_and_swap() should be in use only if PARALLEL_MARK is defined in make scripts.
What's the code that uses AO_compare_and_swap in your case?

Regards.

15 09 2011, 19:04 "Claudio A. Costagliola Fiedler" <claudio.costagliola at gmail.com>:
> Ivan,
> 
> Thanks for your answer.
> 
> In atomic_ops.h, at this point:
> #if defined(AO_REQUIRE_CAS) && !defined(AO_HAVE_compare_and_swap) \
>     && !defined(AO_HAVE_compare_and_swap_full) \
>     && !defined(AO_HAVE_compare_and_swap_acquire)
> # if defined(AO_CAN_EMUL_CAS)
> #   include "atomic_ops/sysdeps/emul_cas.h"
> # else
> #  error Cannot implement AO_compare_and_swap_full on this architecture.
> # endif
> #endif /* AO_REQUIRE_CAS && !AO_HAVE_compare_and_swap ... */
> 
> None of these macros are defined: AO_REQUIRE_CAS, AO_HAVE_compare_and_swap,
> AO_HAVE_compare_and_swap_full, AO_HAVE_compare_and_swap_acquire. So the
> whole outter #if is not compiled.
> 
> The file atomic_ops.c is compiled and it does have
> AO_compare_and_swap_emulation:
> bash-3.00$ pwd
> <path>/gc-7.2alpha6/libatomic_ops
> bash-3.00$ find . -name "atomic_ops.o" -print
> ./src/atomic_ops.o
> bash-3.00$ nm src/atomic_ops.o | grep AO_compare_and_swap_emulation
> [51]    |      1660|     200|FUNC |GLOB |0    |2
> |AO_compare_and_swap_emulation
> 
> Regards,
> Claudio
> 
> On Thu, Sep 15, 2011 at 2:19 AM, Ivan Maidanski <ivmai at mail.ru> wrote:
> 
> > Hi Claudio,
> >
> > Seems that the scripts need some fixing:
> >
> > 1. Check that emul_cas.h is included from atomic_ops.h (it should redirect
> > AO_compare_and_swap_full to AO_compare_and_swap_emulation.
> > 2. Check that atomic_ops.c (which has AO_compare_and_swap_emulation) is
> > compiled.
> >
> > Regards.
> >
> > 15 09 2011, 02:30 Claudio Costagliola <claudio.costagliola at gmail.com>:
> > > I'm trying to build libatomic_ops version 7.2alpha6 on a Solaris 10
> > SPARC. The
> > > configuration and building process seems successful, but the generated
> > > libraries don't have the symbol AO_compare_and_swap_full. I need it to
> > build
> > > Erlang R14B03, which complains about de missing symbol.
> > >
> > > The command line I'm using to configure is:
> > > CC=cc CXX=CC ./configure --prefix=<path>
> > >
> > > The missed symbols:
> > > bash-3.00$ nm libatomic_ops_gpl.a | grep AO_compare_and_swap_full
> > > bash-3.00$ nm libatomic_ops.a | grep AO_compare_and_swap_full
> > > bash-3.00$
> > >
> > > Any help would be appreciated
> > >
> > > Regards,
> > > Claudio
> > >
> > > _______________________________________________
> > > Gc mailing list
> > > Gc at linux.hpl.hp.com
> > > http://www.hpl.hp.com/hosted/linux/mail-archives/gc/
> > >
> 
> --
> Claudio A. Costagliola Fiedler
> 
> 



More information about the Gc mailing list