undefined reference to __atomic_compare_exchange

Fernando Apesteguía fernando.apesteguia at gmail.com
Thu May 31 15:59:36 UTC 2018


Hi,

I'm trying to update a port (lang/ponyc), but it fails in different
combinations of FreeBSD versions and architectures. For instance:

10.4 amd64: FAIL
10.4 i386: FAIL
11.1 amd64: OK
11.1 i386: FAIL
12.1 i386: FAIL

The error is always:

build/release/libponyrt.a(pool.o): In function `pool_get':
src/libponyrt/mem/pool.c:(.text+0xbb): undefined reference to
`__atomic_compare_exchange'
build/release/libponyrt.a(pool.o): In function `ponyint_pool_free':
src/libponyrt/mem/pool.c:(.text+0x221): undefined reference to
`__atomic_compare_exchange'
src/libponyrt/mem/pool.c:(.text+0x26f): undefined reference to
`__atomic_compare_exchange'
build/release/libponyrt.a(pool.o): In function `ponyint_pool_thread_cleanup':
src/libponyrt/mem/pool.c:(.text+0x7ef): undefined reference to
`__atomic_compare_exchange'
src/libponyrt/mem/pool.c:(.text+0x8c0): undefined reference to
`__atomic_compare_exchange'
build/release/libponyrt.a(pool.o):src/libponyrt/mem/pool.c:(.text+0x900):
more undefined references to `__atomic_compare_exchange' follow
c++: error: linker command failed with exit code 1 (use -v to see invocation)
gmake[1]: *** [Makefile:817: build/release/libponyrt.tests] Error 1
gmake[1]: *** Waiting for unfinished jobs....
build/release/libponyrt.a(pool.o): In function `pool_get':
src/libponyrt/mem/pool.c:(.text+0xbb): undefined reference to
`__atomic_compare_exchange'
build/release/libponyrt.a(pool.o): In function `ponyint_pool_free':
src/libponyrt/mem/pool.c:(.text+0x221): undefined reference to
`__atomic_compare_exchange'
src/libponyrt/mem/pool.c:(.text+0x26f): undefined reference to
`__atomic_compare_exchange'
build/release/libponyrt.a(pool.o): In function `ponyint_pool_thread_cleanup':
src/libponyrt/mem/pool.c:(.text+0x7ef): undefined reference to
`__atomic_compare_exchange'
src/libponyrt/mem/pool.c:(.text+0x8c0): undefined reference to
`__atomic_compare_exchange'
build/release/libponyrt.a(pool.o):src/libponyrt/mem/pool.c:(.text+0x900):
more undefined references to `__atomic_compare_exchange' follow
c++: error: linker command failed with exit code 1 (use -v to see invocation)
gmake[1]: *** [Makefile:817: build/release/ponyc] Error 1
build/release/libponyrt.a(mpmcq.o): In function `ponyint_mpmcq_pop':
src/libponyrt/sched/mpmcq.c:(.text+0x150): undefined reference to
`__atomic_compare_exchange'
build/release/libponyrt.a(pool.o): In function `pool_get':
src/libponyrt/mem/pool.c:(.text+0xbb): undefined reference to
`__atomic_compare_exchange'
build/release/libponyrt.a(pool.o): In function `ponyint_pool_free':
src/libponyrt/mem/pool.c:(.text+0x221): undefined reference to
`__atomic_compare_exchange'
src/libponyrt/mem/pool.c:(.text+0x26f): undefined reference to
`__atomic_compare_exchange'
build/release/libponyrt.a(pool.o): In function `ponyint_pool_thread_cleanup':
src/libponyrt/mem/pool.c:(.text+0x7ef): undefined reference to
`__atomic_compare_exchange'
build/release/libponyrt.a(pool.o):src/libponyrt/mem/pool.c:(.text+0x8c0):
more undefined references to `__atomic_compare_exchange' follow
c++: error: linker command failed with exit code 1 (use -v to see invocation)
gmake[1]: *** [Makefile:817: build/release/libponyc.tests] Error 1
gmake[1]: Leaving directory '/wrkdirs/usr/ports/lang/ponyc/work/ponyc-0.22.2'
===> Compilation failed unexpectedly.
Try to set MAKE_JOBS_UNSAFE=yes and rebuild before reporting the failure to
the maintainer.
*** Error code 1

I saw a somewhat related bug
(https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=216745) but as far
as I understand, it is fixed now.

The port compiles with LLVM5.

What am I missing here?

Thanks in advance!


More information about the freebsd-ports mailing list