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