Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 10 Sep 2007 04:23:55 -0700
From:      Luigi Rizzo <rizzo@icir.org>
To:        Ian FREISLICH <ianf@clue.co.za>
Cc:        current@freebsd.org
Subject:   Re: Building asterisk - undefined reference to `__sync_fetch_and_add_4'
Message-ID:  <20070910042355.A45937@xorpc.icir.org>
In-Reply-To: <E1IUg7m-0004n7-8M@clue.co.za>; from ianf@clue.co.za on Mon, Sep 10, 2007 at 12:04:10PM %2B0200
References:  <E1IUg7m-0004n7-8M@clue.co.za>

next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, Sep 10, 2007 at 12:04:10PM +0200, Ian FREISLICH wrote:
> Hi
> 
> I was wondering if anyone else is having this problem building
> asterisk on -CURRENT.  The problem may not be with FreeBSD - it
> looks like gnu configure is incorrectly detecting the CPU as "i386"
> when it's actually a pentium3:
> 
> configure: Package configured for: 
> configure: OS type  : freebsd7.0
> configure: Host CPU : i386
> ===>  Building for asterisk-1.4.11
> 
> The i386 doesn't have any atomic primatives or something like that
> (maybe just according to gcc-4.2).  If I frob the configured sources
> and change the i386 to pentium3, then the build works, but I don't
> have enough asterisk foo at this point to verify that it actually
> works.

i don't completely understand what is happening here - i386 presumably
refers to the architecture, not to the very-low-level details of
the architecture, so there should not be anything specific to
one processor of the family in the flags passed to the compiler.

Could it be that it's a compiler bug instead (or something in
your /etc/make.conf which is forcing compiler-specific optimizations
but only for a part of the build or the libraries) ?

cheers
luigi


>  ast_expr2f.o asterisk.o astmm.o autoservice.o callerid.o cdr.o channel.o chanv
> ars.o cli.o config.o cryptostub.o db.o devicestate.o dial.o dns.o dnsmgr.o dsp.o
>  enum.o file.o fixedjitterbuf.o frame.o fskmodem.o http.o image.o indications.o 
> io.o jitterbuf.o loader.o logger.o manager.o md5.o netsock.o pbx.o plc.o privacy
> .o rtp.o say.o sched.o sha1.o slinfactory.o srv.o stdtime/localtime.o strcompat.
> o tdd.o term.o threadstorage.o translate.o udptl.o ulaw.o utils.o editline/libed
> it.a -> asterisk
> channel.o(.text+0x2b52): In function `ast_channel_alloc':
> /usr/ports/net/asterisk/work/asterisk-1.4.11/include/asterisk/lock.h:775: undefi
> ned reference to `__sync_fetch_and_add_4'
> channel.o(.text+0x2ec1):/usr/ports/net/asterisk/work/asterisk-1.4.11/include/ast
> erisk/lock.h:775: undefined reference to `__sync_fetch_and_add_4'
> cli.o(.text+0x3a4a): In function `ast_cli_command':
> /usr/ports/net/asterisk/work/asterisk-1.4.11/include/asterisk/lock.h:775: undefi
> ned reference to `__sync_fetch_and_add_4'
> dial.o(.text+0x3da): In function `ast_dial_append':
> /usr/ports/net/asterisk/work/asterisk-1.4.11/include/asterisk/lock.h:775: undefi
> ned reference to `__sync_fetch_and_add_4'
> loader.o(.text+0xe3c): In function `__ast_module_user_add':
> /usr/ports/net/asterisk/work/asterisk-1.4.11/include/asterisk/lock.h:775: undefi
> ned reference to `__sync_fetch_and_add_4'
> loader.o(.text+0xec9):/usr/ports/net/asterisk/work/asterisk-1.4.11/include/aster
> isk/lock.h:775: more undefined references to `__sync_fetch_and_add_4' follow
> manager.o(.text+0x197): In function `process_events':
> /usr/ports/net/asterisk/work/asterisk-1.4.11/include/asterisk/lock.h:809: undefi
> ned reference to `__sync_sub_and_fetch_4'
> manager.o(.text+0x173e): In function `free_session':
> /usr/ports/net/asterisk/work/asterisk-1.4.11/include/asterisk/lock.h:809: undefi
> ned reference to `__sync_sub_and_fetch_4'
> manager.o(.text+0x18ab): In function `accept_thread':
> /usr/ports/net/asterisk/work/asterisk-1.4.11/include/asterisk/lock.h:775: undefi
> ned reference to `__sync_fetch_and_add_4'
> manager.o(.text+0x1962):/usr/ports/net/asterisk/work/asterisk-1.4.11/include/ast
> erisk/lock.h:775: undefined reference to `__sync_fetch_and_add_4'
> manager.o(.text+0x1a67):/usr/ports/net/asterisk/work/asterisk-1.4.11/include/ast
> erisk/lock.h:775: undefined reference to `__sync_fetch_and_add_4'
> manager.o(.text+0x1b15):/usr/ports/net/asterisk/work/asterisk-1.4.11/include/ast
> erisk/lock.h:775: undefined reference to `__sync_fetch_and_add_4'
> manager.o(.text+0x4774): In function `action_waitevent':
> /usr/ports/net/asterisk/work/asterisk-1.4.11/include/asterisk/lock.h:809: undefi
> ned reference to `__sync_sub_and_fetch_4'
> manager.o(.text+0x5f81): In function `generic_http_callback':
> /usr/ports/net/asterisk/work/asterisk-1.4.11/include/asterisk/lock.h:775: undefi
> ned reference to `__sync_fetch_and_add_4'
> manager.o(.text+0x5f8f):/usr/ports/net/asterisk/work/asterisk-1.4.11/include/ast
> erisk/lock.h:775: undefined reference to `__sync_fetch_and_add_4'
> manager.o(.text+0x6a65):/usr/ports/net/asterisk/work/asterisk-1.4.11/include/ast
> erisk/lock.h:775: undefined reference to `__sync_fetch_and_add_4'
> manager.o(.text+0x70b5): In function `session_do':
> /usr/ports/net/asterisk/work/asterisk-1.4.11/include/asterisk/lock.h:775: undefi
> ned reference to `__sync_fetch_and_add_4'
> utils.o(.text+0xde8): In function `ast_atomic_dec_and_test':
> /usr/ports/net/asterisk/work/asterisk-1.4.11/include/asterisk/lock.h:809: undefi
> ned reference to `__sync_sub_and_fetch_4'
> utils.o(.text+0xe01): In function `ast_atomic_fetchadd_int':
> /usr/ports/net/asterisk/work/asterisk-1.4.11/include/asterisk/lock.h:775: undefi
> ned reference to `__sync_fetch_and_add_4'
> gmake[1]: *** [asterisk] Error 1
> gmake: *** [main] Error 2
> *** Error code 2
> 
> Stop in /usr/ports/net/asterisk.
> *** Error code 1
> 
> Stop in /usr/ports/net/asterisk.
> 
> 
> --
> Ian Freislich
> 
> _______________________________________________
> freebsd-current@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-current
> To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.org"



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20070910042355.A45937>