From 8f13a3ce8afc1144169a14c7704689e263316e70 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Mon, 11 Jan 2016 14:12:51 -0500 Subject: [PATCH] gdbserver: use the new gdb warning helpers We need to use -Wno-missing-prototypes for now as much of the code sticks externs in local files and not in common headers. 2016-01-11 Mike Frysinger * acinclude.m4: Include new ../warning.m4 file. * configure: Regenerated. * configure.ac: Replace all warning logic with AM_GDB_WARNINGS. --- gdb/gdbserver/ChangeLog | 6 +++ gdb/gdbserver/acinclude.m4 | 3 ++ gdb/gdbserver/configure | 66 ++++++++++++++++++++++++++++--- gdb/gdbserver/configure.ac | 81 ++++---------------------------------- 4 files changed, 76 insertions(+), 80 deletions(-) diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog index cbb7d28af2..3c2d6dbfd5 100644 --- a/gdb/gdbserver/ChangeLog +++ b/gdb/gdbserver/ChangeLog @@ -1,3 +1,9 @@ +2016-01-12 Mike Frysinger + + * acinclude.m4: Include new ../warning.m4 file. + * configure: Regenerated. + * configure.ac: Replace all warning logic with AM_GDB_WARNINGS. + 2016-01-12 Mike Frysinger * ax.c (is_goto_target): Mark static. diff --git a/gdb/gdbserver/acinclude.m4 b/gdb/gdbserver/acinclude.m4 index 284c8237d1..a052c2b975 100644 --- a/gdb/gdbserver/acinclude.m4 +++ b/gdb/gdbserver/acinclude.m4 @@ -6,6 +6,9 @@ sinclude(../acx_configure_dir.m4) # This gets GDB_AC_LIBMCHECK. sinclude(../libmcheck.m4) +# This gets AM_GDB_WARNINGS. +sinclude(../warning.m4) + dnl This gets autoconf bugfixes sinclude(../../config/override.m4) diff --git a/gdb/gdbserver/configure b/gdb/gdbserver/configure index ab03cacfe9..57af95150d 100755 --- a/gdb/gdbserver/configure +++ b/gdb/gdbserver/configure @@ -698,6 +698,8 @@ with_ust with_ust_include with_ust_lib enable_werror +enable_build_warnings +enable_gdb_build_warnings with_pkgversion with_bugurl with_libthread_db @@ -1339,6 +1341,10 @@ Optional Features: --enable-build-with-cxx build with C++ compiler instead of C compiler --enable-libmcheck Try linking with -lmcheck if available --enable-werror treat compile warnings as errors + --enable-build-warnings enable build-time compiler warnings if gcc is used + --enable-gdb-build-warnings + enable GDB specific build-time compiler warnings if + gcc is used --enable-inprocess-agent inprocess agent @@ -6096,6 +6102,7 @@ fi + # Check whether --enable-werror was given. if test "${enable_werror+set}" = set; then : enableval=$enable_werror; case "${enableval}" in @@ -6107,9 +6114,7 @@ fi # Enable -Werror by default when using gcc. Turn it off for releases. -if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" \ - && test x"$enable_build_with_cxx" != x"yes" \ - && $development; then +if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" && $development; then ERROR_ON_WARNING=yes fi @@ -6118,15 +6123,58 @@ if test "${ERROR_ON_WARNING}" = yes ; then WERROR_CFLAGS="-Werror" fi +# These options work in either C or C++ modes. build_warnings="-Wall -Wpointer-arith \ --Wformat-nonliteral -Wno-char-subscripts -Wempty-body" +-Wno-unused -Wunused-value -Wunused-function \ +-Wno-switch -Wno-char-subscripts \ +-Wempty-body" # Now add in C and C++ specific options, depending on mode. if test "$enable_build_with_cxx" = "yes"; then build_warnings="$build_warnings -Wno-sign-compare -Wno-write-strings \ -Wno-narrowing" else - build_warnings="$build_warnings -Wdeclaration-after-statement" + build_warnings="$build_warnings -Wpointer-sign -Wmissing-prototypes \ +-Wdeclaration-after-statement -Wmissing-parameter-type \ +-Wold-style-declaration -Wold-style-definition" +fi + +# Enable -Wno-format by default when using gcc on mingw since many +# GCC versions complain about %I64. +case "${host}" in + *-*-mingw32*) build_warnings="$build_warnings -Wno-format" ;; + *) build_warnings="$build_warnings -Wformat-nonliteral" ;; +esac + +# Check whether --enable-build-warnings was given. +if test "${enable_build_warnings+set}" = set; then : + enableval=$enable_build_warnings; case "${enableval}" in + yes) ;; + no) build_warnings="-w";; + ,*) t=`echo "${enableval}" | sed -e "s/,/ /g"` + build_warnings="${build_warnings} ${t}";; + *,) t=`echo "${enableval}" | sed -e "s/,/ /g"` + build_warnings="${t} ${build_warnings}";; + *) build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;; +esac +if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then + echo "Setting compiler warning flags = $build_warnings" 6>&1 +fi +fi +# Check whether --enable-gdb-build-warnings was given. +if test "${enable_gdb_build_warnings+set}" = set; then : + enableval=$enable_gdb_build_warnings; case "${enableval}" in + yes) ;; + no) build_warnings="-w";; + ,*) t=`echo "${enableval}" | sed -e "s/,/ /g"` + build_warnings="${build_warnings} ${t}";; + *,) t=`echo "${enableval}" | sed -e "s/,/ /g"` + build_warnings="${t} ${build_warnings}";; + *) build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;; +esac +if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then + echo "Setting GDB specific compiler warning flags = $build_warnings" 6>&1 +fi fi # The set of warnings supported by a C++ compiler is not the same as @@ -6141,7 +6189,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu fi WARN_CFLAGS="" -if test "x$GCC" = xyes +if test "x${build_warnings}" != x -a "x$GCC" = xyes then { $as_echo "$as_me:${as_lineno-$LINENO}: checking compiler warning flags" >&5 $as_echo_n "checking compiler warning flags... " >&6; } @@ -6199,6 +6247,12 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu fi +case " $WARN_CFLAGS " in +*" -Wmissing-prototypes "*) + WARN_CFLAGS="$WARN_CFLAGS -Wno-missing-prototypes" + ;; +esac + old_LIBS="$LIBS" LIBS="$LIBS -ldl" for ac_func in dladdr diff --git a/gdb/gdbserver/configure.ac b/gdb/gdbserver/configure.ac index fbf33c387a..8476fbdcbd 100644 --- a/gdb/gdbserver/configure.ac +++ b/gdb/gdbserver/configure.ac @@ -149,80 +149,13 @@ fi AC_SUBST(ustlibs) AC_SUBST(ustinc) -AC_ARG_ENABLE(werror, - AS_HELP_STRING([--enable-werror], [treat compile warnings as errors]), - [case "${enableval}" in - yes | y) ERROR_ON_WARNING="yes" ;; - no | n) ERROR_ON_WARNING="no" ;; - *) AC_MSG_ERROR(bad value ${enableval} for --enable-werror) ;; - esac]) - -# Enable -Werror by default when using gcc. Turn it off for releases. -if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" \ - && test x"$enable_build_with_cxx" != x"yes" \ - && $development; then - ERROR_ON_WARNING=yes -fi - -WERROR_CFLAGS="" -if test "${ERROR_ON_WARNING}" = yes ; then - WERROR_CFLAGS="-Werror" -fi - -build_warnings="-Wall -Wpointer-arith \ --Wformat-nonliteral -Wno-char-subscripts -Wempty-body" - -# Now add in C and C++ specific options, depending on mode. -if test "$enable_build_with_cxx" = "yes"; then - build_warnings="$build_warnings -Wno-sign-compare -Wno-write-strings \ --Wno-narrowing" -else - build_warnings="$build_warnings -Wdeclaration-after-statement" -fi - -# The set of warnings supported by a C++ compiler is not the same as -# of the C compiler. -if test "$enable_build_with_cxx" = "yes"; then - AC_LANG_PUSH([C++]) -fi - -WARN_CFLAGS="" -if test "x$GCC" = xyes -then - AC_MSG_CHECKING(compiler warning flags) - # Separate out the -Werror flag as some files just cannot be - # compiled with it enabled. - for w in ${build_warnings}; do - # GCC does not complain about -Wno-unknown-warning. Invert - # and test -Wunknown-warning instead. - case $w in - -Wno-*) - wtest=`echo $w | sed 's/-Wno-/-W/g'` ;; - *) - wtest=$w ;; - esac - - case $w in - -Werr*) WERROR_CFLAGS=-Werror ;; - *) - # Check whether GCC accepts it. - saved_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $wtest" - saved_CXXFLAGS="$CXXFLAGS" - CXXFLAGS="$CXXFLAGS $wtest" - AC_TRY_COMPILE([],[],WARN_CFLAGS="${WARN_CFLAGS} $w",) - CFLAGS="$saved_CFLAGS" - CXXFLAGS="$saved_CXXFLAGS" - esac - done - AC_MSG_RESULT(${WARN_CFLAGS} ${WERROR_CFLAGS}) -fi -AC_SUBST(WARN_CFLAGS) -AC_SUBST(WERROR_CFLAGS) - -if test "$enable_build_with_cxx" = "yes"; then - AC_LANG_POP([C++]) -fi +AM_GDB_WARNINGS +dnl The codebase isn't clean yet with this flag. +case " $WARN_CFLAGS " in +*" -Wmissing-prototypes "*) + WARN_CFLAGS="$WARN_CFLAGS -Wno-missing-prototypes" + ;; +esac dnl dladdr is glibc-specific. It is used by thread-db.c but only for dnl debugging messages. It lives in -ldl which is handled below so we don't -- 2.34.1