gdb/gdbsupport/gdbserver: Require c++17

This patch proposes to require a C++17 compiler to build gdb /
gdbsupport / gdbserver.  Before this patch, GDB required a C++11
compiler.

The general policy regarding bumping C++ language requirement in GDB (as
stated in [1]) is:

    Our general policy is to wait until the oldest compiler that
    supports C++NN is at least 3 years old.

    Rationale: We want to ensure reasonably widespread compiler
    availability, to lower barrier of entry to GDB contributions, and to
    make it easy for users to easily build new GDB on currently
    supported stable distributions themselves. 3 years should be
    sufficient for latest stable releases of distributions to include a
    compiler for the standard, and/or for new compilers to appear as
    easily installable optional packages. Requiring everyone to build a
    compiler first before building GDB, which would happen if we
    required a too-new compiler, would cause too much inconvenience.

    See the policy proposal and discussion
    [here](https://sourceware.org/ml/gdb-patches/2016-10/msg00616.html).

The first GCC release which with full C++17 support is GCC-9[2],
released in 2019[3], which is over 4 years ago.  Clang has had C++17
support since Clang-5[4] released in 2018[5].

A discussions with many distros showed that a C++17-able compiler is
always available, meaning that this no hard requirement preventing us to
require it going forward.

[1] https://sourceware.org/gdb/wiki/Internals%20GDB-C-Coding-Standards#When_is_GDB_going_to_start_requiring_C.2B-.2B-NN_.3F
[2] https://gcc.gnu.org/projects/cxx-status.html#cxx17
[3] https://gcc.gnu.org/gcc-9/
[4] https://clang.llvm.org/cxx_status.html
[5] https://releases.llvm.org/

Change-Id: Id596f5db17ea346e8a978668825787b3a9a443fd
Reviewed-By: Eli Zaretskii <eliz@gnu.org>
Approved-By: Tom Tromey <tom@tromey.com>
Approved-By: Pedro Alves <pedro@palves.net>
This commit is contained in:
Lancelot Six 2023-09-12 12:34:51 +00:00
parent eb4de4047d
commit f74dc26792
12 changed files with 4575 additions and 90 deletions

View File

@ -3,6 +3,9 @@
*** Changes since GDB 14
* Building GDB and GDBserver now requires a C++17 compiler.
For example, GCC 9 or later.
* GDB index now contains information about the main function. This speeds up
startup when it is being used for some large binaries.

View File

@ -82,8 +82,8 @@ list of options, invoke the subdirectory `configure', like:
(Take note of how this differs from the invocation used to actually
configure the build tree.)
GDB requires a C++11 compiler. If you do not have a
C++11 compiler for your system, you may be able to download and install
GDB requires a C++17 compiler. If you do not have a
C++17 compiler for your system, you may be able to download and install
the GNU CC compiler. It is available via anonymous FTP from the
directory `ftp://ftp.gnu.org/pub/gnu/gcc'. GDB also requires an ISO
C standard library. The GDB remote server, GDBserver, builds with some

View File

@ -99,8 +99,8 @@
/* Define to 1 if you have the <curses.h> header file. */
#undef HAVE_CURSES_H
/* define if the compiler supports basic C++11 syntax */
#undef HAVE_CXX11
/* define if the compiler supports basic C++17 syntax */
#undef HAVE_CXX17
/* Define to 1 if you have the declaration of `ADDR_NO_RANDOMIZE', and to 0 if
you don't. */

1544
gdb/configure vendored

File diff suppressed because it is too large Load Diff

View File

@ -53,9 +53,9 @@ LT_INIT
# link tests in the configure script.
LT_OUTPUT
# We require a C++11 compiler. Check if one is available, and if
# We require a C++17 compiler. Check if one is available, and if
# necessary, set CXX_DIALECT to some -std=xxx switch.
AX_CXX_COMPILE_STDCXX(11, , mandatory)
AX_CXX_COMPILE_STDCXX(17, , mandatory)
# Dependency checking.
ZW_CREATE_DEPDIR

View File

@ -28,8 +28,8 @@
/* Define to 1 if you have the <arpa/inet.h> header file. */
#undef HAVE_ARPA_INET_H
/* define if the compiler supports basic C++11 syntax */
#undef HAVE_CXX11
/* define if the compiler supports basic C++17 syntax */
#undef HAVE_CXX17
/* Define to 1 if you have the declaration of `ADDR_NO_RANDOMIZE', and to 0 if
you don't. */

1544
gdbserver/configure vendored

File diff suppressed because it is too large Load Diff

View File

@ -46,9 +46,9 @@ AC_PROG_RANLIB
AC_ARG_PROGRAM
# We require a C++11 compiler. Check if one is available, and if
# We require a C++17 compiler. Check if one is available, and if
# necessary, set CXX_DIALECT to some -std=xxx switch.
AX_CXX_COMPILE_STDCXX(11, , mandatory)
AX_CXX_COMPILE_STDCXX(17, , mandatory)
AC_HEADER_STDC

View File

@ -252,7 +252,7 @@ EXEEXT = @EXEEXT@
GENCAT = @GENCAT@
GMSGFMT = @GMSGFMT@
GREP = @GREP@
HAVE_CXX11 = @HAVE_CXX11@
HAVE_CXX17 = @HAVE_CXX17@
HAVE_LIBIPT = @HAVE_LIBIPT@
HAVE_LIBXXHASH = @HAVE_LIBXXHASH@
INCINTL = @INCINTL@

View File

@ -28,8 +28,8 @@
*/
#undef HAVE_ALLOCA_H
/* define if the compiler supports basic C++11 syntax */
#undef HAVE_CXX11
/* define if the compiler supports basic C++17 syntax */
#undef HAVE_CXX17
/* Define to 1 if you have the declaration of `ADDR_NO_RANDOMIZE', and to 0 if
you don't. */

1544
gdbsupport/configure vendored

File diff suppressed because it is too large Load Diff

View File

@ -41,9 +41,9 @@ AC_PROG_RANLIB
AC_USE_SYSTEM_EXTENSIONS
ACX_LARGEFILE
# We require a C++11 compiler. Check if one is available, and if
# We require a C++17 compiler. Check if one is available, and if
# necessary, set CXX_DIALECT to some -std=xxx switch.
AX_CXX_COMPILE_STDCXX(11, , mandatory)
AX_CXX_COMPILE_STDCXX(17, , mandatory)
dnl Set up for gettext.
ZW_GNU_GETTEXT_SISTER_DIR