diff options
-rw-r--r-- | gdb/acinclude.m4 | 3 | ||||
-rwxr-xr-x | gdb/configure | 66 | ||||
-rw-r--r-- | gdb/configure.ac | 1 | ||||
-rw-r--r-- | gdbserver/acinclude.m4 | 3 | ||||
-rwxr-xr-x | gdbserver/configure | 66 | ||||
-rw-r--r-- | gdbserver/configure.ac | 1 | ||||
-rw-r--r-- | gdbsupport/Makefile.in | 4 | ||||
-rw-r--r-- | gdbsupport/acinclude.m4 | 3 | ||||
-rw-r--r-- | gdbsupport/compiler-type.m4 | 59 | ||||
-rwxr-xr-x | gdbsupport/configure | 66 | ||||
-rw-r--r-- | gdbsupport/configure.ac | 1 | ||||
-rw-r--r-- | gdbsupport/warning.m4 | 8 |
12 files changed, 275 insertions, 6 deletions
diff --git a/gdb/acinclude.m4 b/gdb/acinclude.m4 index 2bdc1ce..95ff2b6 100644 --- a/gdb/acinclude.m4 +++ b/gdb/acinclude.m4 @@ -15,6 +15,9 @@ m4_include(acx_configure_dir.m4) # This gets GDB_AC_TRANSFORM. m4_include(transform.m4) +# This get AM_GDB_COMPILER_TYPE. +m4_include(../gdbsupport/compiler-type.m4) + # This gets AM_GDB_WARNINGS. m4_include(../gdbsupport/warning.m4) diff --git a/gdb/configure b/gdb/configure index 429eaeb..e751edc 100755 --- a/gdb/configure +++ b/gdb/configure @@ -17000,6 +17000,64 @@ _ACEOF + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking the compiler type" >&5 +$as_echo_n "checking the compiler type... " >&6; } +if ${gdb_cv_compiler_type+:} false; then : + $as_echo_n "(cached) " >&6 +else + gdb_cv_compiler_type=unknown + if test "$gdb_cv_compiler_type" = unknown; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + #if !defined __GNUC__ || defined __clang__ + #error not gcc + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gdb_cv_compiler_type=gcc +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + + if test "$gdb_cv_compiler_type" = unknown; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + #ifndef __clang__ + #error not clang + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gdb_cv_compiler_type=clang +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gdb_cv_compiler_type" >&5 +$as_echo "$gdb_cv_compiler_type" >&6; } + + GDB_COMPILER_TYPE="$gdb_cv_compiler_type" + + # Check whether --enable-werror was given. if test "${enable_werror+set}" = set; then : enableval=$enable_werror; case "${enableval}" in @@ -17036,10 +17094,16 @@ build_warnings="-Wall -Wpointer-arith \ -Wdeprecated-copy-dtor \ -Wredundant-move \ -Wmissing-declarations \ --Wmissing-prototypes \ -Wstrict-null-sentinel \ " +# The -Wmissing-prototypes flag will be accepted by GCC, but results +# in a warning being printed about the flag not being valid for C++, +# this is something to do with using ccache, and argument ordering. +if test "$GDB_COMPILER_TYPE" != gcc; then + build_warnings="$build_warnings -Wmissing-prototypes" +fi + case "${host}" in *-*-mingw32*) # Enable -Wno-format by default when using gcc on mingw since many diff --git a/gdb/configure.ac b/gdb/configure.ac index 13e880d..5a380ce 100644 --- a/gdb/configure.ac +++ b/gdb/configure.ac @@ -1833,6 +1833,7 @@ GDB_AC_WITH_DIR(SYSTEM_GDBINIT_DIR, system-gdbinit-dir, [automatically load system-wide gdbinit files from this directory], []) +AM_GDB_COMPILER_TYPE AM_GDB_WARNINGS AM_GDB_UBSAN diff --git a/gdbserver/acinclude.m4 b/gdbserver/acinclude.m4 index d68e318..32d5d14 100644 --- a/gdbserver/acinclude.m4 +++ b/gdbserver/acinclude.m4 @@ -7,6 +7,9 @@ dnl system search paths. dnl gdb/gdbserver/configure.in uses BFD_HAVE_SYS_PROCFS_TYPE. m4_include(../bfd/bfd.m4) +# This get AM_GDB_COMPILER_TYPE. +m4_include(../gdbsupport/compiler-type.m4) + dnl This gets AM_GDB_WARNINGS. m4_include(../gdbsupport/warning.m4) diff --git a/gdbserver/configure b/gdbserver/configure index d90135b..bcb1594 100755 --- a/gdbserver/configure +++ b/gdbserver/configure @@ -9707,6 +9707,64 @@ fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking the compiler type" >&5 +$as_echo_n "checking the compiler type... " >&6; } +if ${gdb_cv_compiler_type+:} false; then : + $as_echo_n "(cached) " >&6 +else + gdb_cv_compiler_type=unknown + if test "$gdb_cv_compiler_type" = unknown; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + #if !defined __GNUC__ || defined __clang__ + #error not gcc + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gdb_cv_compiler_type=gcc +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + + if test "$gdb_cv_compiler_type" = unknown; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + #ifndef __clang__ + #error not clang + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gdb_cv_compiler_type=clang +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gdb_cv_compiler_type" >&5 +$as_echo "$gdb_cv_compiler_type" >&6; } + + GDB_COMPILER_TYPE="$gdb_cv_compiler_type" + + # Check whether --enable-werror was given. if test "${enable_werror+set}" = set; then : enableval=$enable_werror; case "${enableval}" in @@ -9743,10 +9801,16 @@ build_warnings="-Wall -Wpointer-arith \ -Wdeprecated-copy-dtor \ -Wredundant-move \ -Wmissing-declarations \ --Wmissing-prototypes \ -Wstrict-null-sentinel \ " +# The -Wmissing-prototypes flag will be accepted by GCC, but results +# in a warning being printed about the flag not being valid for C++, +# this is something to do with using ccache, and argument ordering. +if test "$GDB_COMPILER_TYPE" != gcc; then + build_warnings="$build_warnings -Wmissing-prototypes" +fi + case "${host}" in *-*-mingw32*) # Enable -Wno-format by default when using gcc on mingw since many diff --git a/gdbserver/configure.ac b/gdbserver/configure.ac index 5576546..dc33f1a 100644 --- a/gdbserver/configure.ac +++ b/gdbserver/configure.ac @@ -146,6 +146,7 @@ fi AC_SUBST(ustlibs) AC_SUBST(ustinc) +AM_GDB_COMPILER_TYPE AM_GDB_WARNINGS dnl dladdr is glibc-specific. It is used by thread-db.c but only for diff --git a/gdbsupport/Makefile.in b/gdbsupport/Makefile.in index 36c2e3d..c74e26a 100644 --- a/gdbsupport/Makefile.in +++ b/gdbsupport/Makefile.in @@ -123,8 +123,8 @@ am__aclocal_m4_deps = $(top_srcdir)/../config/codeset.m4 \ $(top_srcdir)/../config/ax_pthread.m4 \ $(top_srcdir)/../gdb/ax_cxx_compile_stdcxx.m4 \ $(top_srcdir)/../gdb/libiberty.m4 $(top_srcdir)/selftest.m4 \ - $(top_srcdir)/ptrace.m4 $(top_srcdir)/warning.m4 \ - $(top_srcdir)/configure.ac + $(top_srcdir)/ptrace.m4 $(top_srcdir)/compiler-type.m4 \ + $(top_srcdir)/warning.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ diff --git a/gdbsupport/acinclude.m4 b/gdbsupport/acinclude.m4 index cc9c2dc..c627614 100644 --- a/gdbsupport/acinclude.m4 +++ b/gdbsupport/acinclude.m4 @@ -6,5 +6,8 @@ m4_include([../gdb/libiberty.m4]) m4_include([selftest.m4]) m4_include([ptrace.m4]) +dnl This gets AM_GDB_COMPILER_TYPE. +m4_include(compiler-type.m4) + dnl This gets AM_GDB_WARNINGS. m4_include(warning.m4) diff --git a/gdbsupport/compiler-type.m4 b/gdbsupport/compiler-type.m4 new file mode 100644 index 0000000..f943a98 --- /dev/null +++ b/gdbsupport/compiler-type.m4 @@ -0,0 +1,59 @@ +dnl Autoconf configure script for GDB, the GNU debugger. +dnl Copyright (C) 2022 Free Software Foundation, Inc. +dnl +dnl This file is part of GDB. +dnl +dnl This program is free software; you can redistribute it and/or modify +dnl it under the terms of the GNU General Public License as published by +dnl the Free Software Foundation; either version 3 of the License, or +dnl (at your option) any later version. +dnl +dnl This program is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +dnl GNU General Public License for more details. +dnl +dnl You should have received a copy of the GNU General Public License +dnl along with this program. If not, see <http://www.gnu.org/licenses/>. + +# Sets up GDB_COMPILER_TYPE to either 'gcc', 'clang', or 'unknown'. +# The autoconf compiler check will set GCC=yes for clang as well as +# gcc, it's really more of a "is gcc like" check. +# +# By contrast, this will set the GDB_COMPILER_TYPE to 'gcc' only for +# versions of gcc. +# +# There's no reason why this can't be extended to identify other +# compiler types if needed in the future, users of this variable +# should therefore avoid relying on the 'unknown' value, instead +# checks should be written in terms of the known compiler types. +AC_DEFUN([AM_GDB_COMPILER_TYPE],[ + + AC_CACHE_CHECK([the compiler type], + [gdb_cv_compiler_type], + [gdb_cv_compiler_type=unknown + if test "$gdb_cv_compiler_type" = unknown; then + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([], + [ + #if !defined __GNUC__ || defined __clang__ + #error not gcc + #endif + ])], + [gdb_cv_compiler_type=gcc], []) + fi + + if test "$gdb_cv_compiler_type" = unknown; then + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([], + [ + #ifndef __clang__ + #error not clang + #endif + ])], + [gdb_cv_compiler_type=clang], []) + fi + ]) + + GDB_COMPILER_TYPE="$gdb_cv_compiler_type" +]) diff --git a/gdbsupport/configure b/gdbsupport/configure index 8b4cb7e..afaba88 100755 --- a/gdbsupport/configure +++ b/gdbsupport/configure @@ -10192,6 +10192,64 @@ fi # Detect support warning flags. + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking the compiler type" >&5 +$as_echo_n "checking the compiler type... " >&6; } +if ${gdb_cv_compiler_type+:} false; then : + $as_echo_n "(cached) " >&6 +else + gdb_cv_compiler_type=unknown + if test "$gdb_cv_compiler_type" = unknown; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + #if !defined __GNUC__ || defined __clang__ + #error not gcc + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gdb_cv_compiler_type=gcc +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + + if test "$gdb_cv_compiler_type" = unknown; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + #ifndef __clang__ + #error not clang + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gdb_cv_compiler_type=clang +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gdb_cv_compiler_type" >&5 +$as_echo "$gdb_cv_compiler_type" >&6; } + + GDB_COMPILER_TYPE="$gdb_cv_compiler_type" + + # Check whether --enable-werror was given. if test "${enable_werror+set}" = set; then : enableval=$enable_werror; case "${enableval}" in @@ -10228,10 +10286,16 @@ build_warnings="-Wall -Wpointer-arith \ -Wdeprecated-copy-dtor \ -Wredundant-move \ -Wmissing-declarations \ --Wmissing-prototypes \ -Wstrict-null-sentinel \ " +# The -Wmissing-prototypes flag will be accepted by GCC, but results +# in a warning being printed about the flag not being valid for C++, +# this is something to do with using ccache, and argument ordering. +if test "$GDB_COMPILER_TYPE" != gcc; then + build_warnings="$build_warnings -Wmissing-prototypes" +fi + case "${host}" in *-*-mingw32*) # Enable -Wno-format by default when using gcc on mingw since many diff --git a/gdbsupport/configure.ac b/gdbsupport/configure.ac index 4222bb7..55477d5 100644 --- a/gdbsupport/configure.ac +++ b/gdbsupport/configure.ac @@ -57,6 +57,7 @@ AM_CONDITIONAL(SELFTEST, $enable_unittests) GDB_AC_PTRACE # Detect support warning flags. +AM_GDB_COMPILER_TYPE AM_GDB_WARNINGS case ${host} in diff --git a/gdbsupport/warning.m4 b/gdbsupport/warning.m4 index a6b06e8..e9025db 100644 --- a/gdbsupport/warning.m4 +++ b/gdbsupport/warning.m4 @@ -51,10 +51,16 @@ build_warnings="-Wall -Wpointer-arith \ -Wdeprecated-copy-dtor \ -Wredundant-move \ -Wmissing-declarations \ --Wmissing-prototypes \ -Wstrict-null-sentinel \ " +# The -Wmissing-prototypes flag will be accepted by GCC, but results +# in a warning being printed about the flag not being valid for C++, +# this is something to do with using ccache, and argument ordering. +if test "$GDB_COMPILER_TYPE" != gcc; then + build_warnings="$build_warnings -Wmissing-prototypes" +fi + case "${host}" in *-*-mingw32*) # Enable -Wno-format by default when using gcc on mingw since many |