Re: Building asterisk - undefined reference to `__sync_fetch_and_add_4'

From: Luigi Rizzo <rizzo_at_icir.org>
Date: Mon, 10 Sep 2007 04:23:55 -0700
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_at_freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-current
> To unsubscribe, send any mail to "freebsd-current-unsubscribe_at_freebsd.org"
Received on Mon Sep 10 2007 - 09:25:14 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:17 UTC