bind-9.12.2-P2 fails to compile with baffling undefined symbol issues
Dennis Clarke
dclarke at blastwave.org
Thu Oct 18 15:40:24 UTC 2018
On 10/18/2018 04:04 AM, Michał Kępień wrote:
...
>> -L/usr/local/lib -latomic
>> Undefined first referenced
>> symbol in file
>> _TG_atomic_fetch_add ../dns/libdns.a(tsig.o)
>> _TG_atomic_fetch_sub ../dns/libdns.a(tsig.o)
>> _TG_atomic_load ../dns/libdns.a(tsig.o)
>> _TG_atomic_compare_exchange_strong ../isc/libisc.a(rwlock.o)
>> _TG_atomic_store ../isc/libisc.a(stats.o)
>> ld: fatal: symbol referencing errors. No output written to resolve
...
>
> This looks like an Oracle Developer Studio glitch related to C11 atomic
> operations. To fix it, try fiddling around with the -xatomic compiler
> option [1] and/or the -std compiler option and/or the CC environment
> variable. To work around the problem, build BIND with --disable-atomic.
> Note that atomic operations support is mandatory as of BIND 9.13.3.
>
After talking with experts in the field I have learned that :
in Studio 12.6, stdatomic.h lives in
lib/compilers/include/cc/stdatomic.h and uses
those _TG_atomic_* intrinsics
Thus if one compiles a trivial test with -std=c11 we see :
#include <stdatomic.h>
int
main (void)
{
_Atomic int i;
atomic_store (&i, 0);
return 0;
}
No issues at all with -xatomic=studio -std=c11 however this is
impossible with c99.
So what is the minimum spec for ISC Bind? If the ISO/IEC 9899:2011
standard is minimum then perhaps there could be a notation somewhere
on the isc site for that.
Dennis Clarke
More information about the bind-users
mailing list