diff --git a/configure.ac b/configure.ac index 00ce2ce05a..9532243e47 100644 --- a/configure.ac +++ b/configure.ac @@ -311,10 +311,9 @@ AC_CHECK_HEADERS([fcntl.h regex.h sys/time.h unistd.h sys/mman.h sys/sockio.h sy # # Check for thread local storage # +# NOTE: OpenBSD doesn't ship , so we can't require it (yet). +# AC_CHECK_HEADERS([threads.h]) -AX_TLS([AS_IF([test "$ac_cv_tls" != "thread_local"], - [AC_DEFINE_UNQUOTED([thread_local], [$ac_cv_tls], [Define if the compiler uses a different keyword than thread_local for TLS variables])])], - [AC_MSG_ERROR([Thread Local Storage support required, update your toolchain to build BIND 9])]) AC_C_CONST AC_C_INLINE diff --git a/doc/arm/platforms.inc.rst b/doc/arm/platforms.inc.rst index 50f1420f8f..e46bc36bd2 100644 --- a/doc/arm/platforms.inc.rst +++ b/doc/arm/platforms.inc.rst @@ -20,24 +20,18 @@ found in the ISC Knowledgebase: https://kb.isc.org/docs/supported-platforms In general, this version of BIND will build and run on any -POSIX-compliant system with a modern C compiler, BSD-style +POSIX-compliant system with a modern C11 (or better) compiler, BSD-style sockets with RFC-compliant IPv6 support, POSIX-compliant threads, and the :ref:`required libraries `. -The following C11 features are required in BIND 9: +The following C11 features are required to compile BIND 9: -- Atomic operations support, either in the form of C11 atomics or - **__atomic** builtin operations. +- Atomic operations support defined in -- Thread Local Storage support, either in the form of C11 - **_Thread_local**/**thread_local**, or the **__thread** GCC - extension. +- Thread Local Storage support defined in -The C11 variants are preferred. - -The following C23 features are required in BIND 9. - -- C23-style attributes - namely [[maybe_unused]] attribute. +Where it makes sense, BIND 9 uses C-standard fixes introduced by C17 update +of the C11 standard. ISC regularly tests BIND on many operating systems and architectures, but lacks the resources to test all of them. Consequently, ISC is only @@ -74,7 +68,7 @@ regularly by ISC. - NetBSD - Other Linux distributions still supported by their vendors, such as: - - Ubuntu 20.10+ + - Ubuntu 22.10+ - Gentoo - Arch Linux diff --git a/lib/isc/include/isc/thread.h b/lib/isc/include/isc/thread.h index a70e2c7937..ade74f7911 100644 --- a/lib/isc/include/isc/thread.h +++ b/lib/isc/include/isc/thread.h @@ -16,8 +16,11 @@ /*! \file */ #include + #if HAVE_THREADS_H #include +#else +#define thread_local _Thread_local #endif #if defined(HAVE_PTHREAD_NP_H) diff --git a/lib/isc/iterated_hash.c b/lib/isc/iterated_hash.c index 263a7b9c6a..3127b6dc59 100644 --- a/lib/isc/iterated_hash.c +++ b/lib/isc/iterated_hash.c @@ -17,6 +17,7 @@ #include #include +#include #include #if OPENSSL_VERSION_NUMBER < 0x30000000L || OPENSSL_API_LEVEL < 30000 diff --git a/lib/isc/tid.c b/lib/isc/tid.c index 59c3928789..554ad96564 100644 --- a/lib/isc/tid.c +++ b/lib/isc/tid.c @@ -16,6 +16,7 @@ #include #include +#include #include #include diff --git a/m4/ax_tls.m4 b/m4/ax_tls.m4 deleted file mode 100644 index 6474e97934..0000000000 --- a/m4/ax_tls.m4 +++ /dev/null @@ -1,73 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later WITH Autoconf-exception-3.0 -# -# =========================================================================== -# https://www.gnu.org/software/autoconf-archive/ax_tls.html -# =========================================================================== -# -# SYNOPSIS -# -# AX_TLS([action-if-found], [action-if-not-found]) -# -# DESCRIPTION -# -# Provides a test for the compiler support of thread local storage (TLS) -# extensions. Defines TLS if it is found. Currently knows about C++11, -# GCC/ICC, and MSVC. I think SunPro uses the same as GCC, and Borland -# apparently supports either. -# -# LICENSE -# -# Copyright (c) 2008 Alan Woodland -# Copyright (c) 2010 Diego Elio Petteno` -# -# This program is free software: you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by the -# Free Software Foundation, either version 3 of the License, or (at your -# option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General -# Public License for more details. -# -# You should have received a copy of the GNU General Public License along -# with this program. If not, see . -# -# As a special exception, the respective Autoconf Macro's copyright owner -# gives unlimited permission to copy, distribute and modify the configure -# scripts that are the output of Autoconf when processing the Macro. You -# need not follow the terms of the GNU General Public License when using -# or distributing such scripts, even though portions of the text of the -# Macro appear in them. The GNU General Public License (GPL) does govern -# all other use of the material that constitutes the Autoconf Macro. -# -# This special exception to the GPL applies to versions of the Autoconf -# Macro released by the Autoconf Archive. When you make and distribute a -# modified version of the Autoconf Macro, you may extend this special -# exception to the GPL to apply to your modified version as well. - -#serial 15 - -AC_DEFUN([AX_TLS], [ - AC_MSG_CHECKING([for thread local storage (TLS) class]) - AC_CACHE_VAL([ac_cv_tls], - [for ax_tls_keyword in thread_local _Thread_local __thread '__declspec(thread)' none; do - AS_CASE([$ax_tls_keyword], - [none], [ac_cv_tls=none ; break], - [AC_COMPILE_IFELSE([AC_LANG_PROGRAM( - [#include ], - [static $ax_tls_keyword int bar;] - )], - [ac_cv_tls=$ax_tls_keyword ; break], - [ac_cv_tls=none] - )] - ) - done ] - ) - AC_MSG_RESULT([$ac_cv_tls]) - - AS_IF([test "$ac_cv_tls" != "none"], - [AC_DEFINE_UNQUOTED([TLS],[$ac_cv_tls],[If the compiler supports a TLS storage class, define it to that here]) - m4_ifnblank([$1],[$1],[[:]])], - [m4_ifnblank([$2],[$2],[[:]])]) -])