Building on freeBSD fails in Jenkins
We seem to have some atomics errors when attempting to build in freeBSD 11 Breaking change occurs sometime after 91d12180 (previous successful build) and before 14d48a9b (first failing build)
I suspect 0af500a2 is the culprit.
/bin/sh /usr/home/jenkins/workspace/bind9-master-freebsd11-64/libtool --mode=compile gcc -I/usr/home/jenkins/workspace/bind9-master-freebsd11-64 -I../.. -I./unix/include -I./pthreads/include -I./include -I./include -I/usr/home/jenkins/workspace/bind9-master-freebsd11-64/lib/dns/include -I../../lib/dns/include -I/usr/local/include -DISC_MEM_DEFAULTFILL=1 -DISC_LIST_CHECKINIT=1 -g -O2 -pthread -I /usr/local/include -I/usr/local/include/libxml2 -I/usr/include -fPIC -W -Wall -Wmissing-prototypes -Wcast-qual -Wwrite-strings -Wformat -Wpointer-arith -fno-strict-aliasing -fno-delete-null-pointer-checks -Wshadow -Werror -c quota.c
libtool: compile: gcc -I/usr/home/jenkins/workspace/bind9-master-freebsd11-64 -I../.. -I./unix/include -I./pthreads/include -I./include -I./include -I/usr/home/jenkins/workspace/bind9-master-freebsd11-64/lib/dns/include -I../../lib/dns/include -I/usr/local/include -DISC_MEM_DEFAULTFILL=1 -DISC_LIST_CHECKINIT=1 -g -O2 -pthread -I /usr/local/include -I/usr/local/include/libxml2 -I/usr/include -fPIC -W -Wall -Wmissing-prototypes -Wcast-qual -Wwrite-strings -Wformat -Wpointer-arith -fno-strict-aliasing -fno-delete-null-pointer-checks -Wshadow -Werror -c quota.c -fPIC -DPIC -o .libs/quota.o
In file included from quota.c:20:0:
./include/isc/quota.h:47:31: error: declaration does not declare anything [-Werror]
atomic_uint_fast32_t __used;
^
In file included from ./include/isc/atomic.h:15:0,
from quota.c:19:
quota.c: In function 'isc_quota_init':
quota.c:27:23: error: expected identifier before '__attribute__'
atomic_store("a->__used, 0);
^
quota.c:27:2: error: '__atomic_store_ptr' undeclared (first use in this function)
atomic_store("a->__used, 0);
^
quota.c:27:2: note: each undeclared identifier is reported only once for each function it appears in
quota.c:27:2: error: argument 1 of '__atomic_store' must be a non-void pointer type
atomic_store("a->__used, 0);
^
quota.c:28:2: error: declaration of '__atomic_store_ptr' shadows previous non-variable [-Werror=shadow]
atomic_store("a->__soft, 0);
^
In file included from ./include/isc/assertions.h:19:0,
from ./include/isc/list.h:16,
from ./include/isc/types.h:29,
from ./include/isc/result.h:19,
from ./pthreads/include/isc/mutex.h:22,
from ./include/isc/quota.h:35,
from quota.c:20:
quota.c: In function 'isc_quota_destroy':
quota.c:33:29: error: expected identifier before '__attribute__'
INSIST(atomic_load("a->__used) == 0);
^
./include/isc/likely.h:19:54: note: in definition of macro 'ISC_LIKELY'
#define ISC_LIKELY(x) __builtin_expect(!!(x), 1)
^
./include/isc/util.h:220:21: note: in expansion of macro 'ISC_INSIST'
#define INSIST(e) ISC_INSIST(e)
^~~~~~~~~~
quota.c:33:2: note: in expansion of macro 'INSIST'
INSIST(atomic_load("a->__used) == 0);
^~~~~~
quota.c:33:9: error: '__atomic_load_ptr' undeclared (first use in this function)
INSIST(atomic_load("a->__used) == 0);
^
./include/isc/likely.h:19:54: note: in definition of macro 'ISC_LIKELY'
#define ISC_LIKELY(x) __builtin_expect(!!(x), 1)
^
./include/isc/util.h:220:21: note: in expansion of macro 'ISC_INSIST'
#define INSIST(e) ISC_INSIST(e)
^~~~~~~~~~
quota.c:33:2: note: in expansion of macro 'INSIST'
INSIST(atomic_load("a->__used) == 0);
^~~~~~
quota.c:33:9: error: argument 1 of '__atomic_load' must be a non-void pointer type
INSIST(atomic_load("a->__used) == 0);
^
./include/isc/likely.h:19:54: note: in definition of macro 'ISC_LIKELY'
#define ISC_LIKELY(x) __builtin_expect(!!(x), 1)
^
./include/isc/util.h:220:21: note: in expansion of macro 'ISC_INSIST'
#define INSIST(e) ISC_INSIST(e)
^~~~~~~~~~
quota.c:33:2: note: in expansion of macro 'INSIST'
INSIST(atomic_load("a->__used) == 0);
^~~~~~
In file included from ./include/isc/atomic.h:15:0,
from quota.c:19:
quota.c:35:23: error: expected identifier before '__attribute__'
atomic_store("a->__used, 0);
^
quota.c:35:2: error: '__atomic_store_ptr' undeclared (first use in this function)
atomic_store("a->__used, 0);
^
quota.c:35:2: error: argument 1 of '__atomic_store' must be a non-void pointer type
atomic_store("a->__used, 0);
^
quota.c:36:2: error: declaration of '__atomic_store_ptr' shadows previous non-variable [-Werror=shadow]
atomic_store("a->__soft, 0);
^
quota.c: In function 'isc_quota_getused':
quota.c:61:38: error: expected identifier before '__attribute__'
return (atomic_load_relaxed("a->__used));
^
quota.c:61:10: note: in expansion of macro 'atomic_load_relaxed'
return (atomic_load_relaxed("a->__used));
^~~~~~~~~~~~~~~~~~~
./include/isc/atomic.h:27:32: error: '__atomic_load_ptr' undeclared (first use in this function)
#define atomic_load_relaxed(o) atomic_load_explicit((o), memory_order_relaxed)
^
quota.c:61:10: note: in expansion of macro 'atomic_load_relaxed'
return (atomic_load_relaxed("a->__used));
^~~~~~~~~~~~~~~~~~~
./include/isc/atomic.h:27:32: error: argument 1 of '__atomic_load' must be a non-void pointer type
#define atomic_load_relaxed(o) atomic_load_explicit((o), memory_order_relaxed)
^
quota.c:61:10: note: in expansion of macro 'atomic_load_relaxed'
return (atomic_load_relaxed("a->__used));
^~~~~~~~~~~~~~~~~~~
quota.c:60:32: error: parameter 'quota' set but not used [-Werror=unused-but-set-parameter]
isc_quota_getused(isc_quota_t *quota) {
^~~~~
In file included from ./include/isc/atomic.h:15:0,
from quota.c:19:
quota.c: In function 'isc_quota_reserve':
quota.c:69:43: error: expected identifier before '__attribute__'
uint32_t used = atomic_fetch_add("a->__used, 1);
^
In file included from ./include/isc/assertions.h:19:0,
from ./include/isc/list.h:16,
from ./include/isc/types.h:29,
from ./include/isc/result.h:19,
from ./pthreads/include/isc/mutex.h:22,
from ./include/isc/quota.h:35,
from quota.c:20:
quota.c:77:35: error: expected identifier before '__attribute__'
INSIST(atomic_fetch_sub("a->__used, 1) > 0);
^
./include/isc/likely.h:19:54: note: in definition of macro 'ISC_LIKELY'
#define ISC_LIKELY(x) __builtin_expect(!!(x), 1)
^
./include/isc/util.h:220:21: note: in expansion of macro 'ISC_INSIST'
#define INSIST(e) ISC_INSIST(e)
^~~~~~~~~~
quota.c:77:3: note: in expansion of macro 'INSIST'
INSIST(atomic_fetch_sub("a->__used, 1) > 0);
^~~~~~
quota.c: In function 'isc_quota_release':
quota.c:85:34: error: expected identifier before '__attribute__'
INSIST(atomic_fetch_sub("a->__used, 1) > 0);
^
./include/isc/likely.h:19:54: note: in definition of macro 'ISC_LIKELY'
#define ISC_LIKELY(x) __builtin_expect(!!(x), 1)
^
./include/isc/util.h:220:21: note: in expansion of macro 'ISC_INSIST'
#define INSIST(e) ISC_INSIST(e)
^~~~~~~~~~
quota.c:85:2: note: in expansion of macro 'INSIST'
INSIST(atomic_fetch_sub("a->__used, 1) > 0);
^~~~~~
quota.c:84:32: error: parameter 'quota' set but not used [-Werror=unused-but-set-parameter]
isc_quota_release(isc_quota_t *quota) {
^~~~~
cc1: all warnings being treated as errors
*** Error code 1
Full console output can be seen by logging in to Jenkins here: https://jenkins.isc.org/view/BIND/job/bind9-master-freebsd11-64/1191/consoleFull