From patchwork Mon Jan 11 19:16:15 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mike Frysinger X-Patchwork-Id: 10338 Received: (qmail 38140 invoked by alias); 11 Jan 2016 19:16:24 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 37193 invoked by uid 89); 11 Jan 2016 19:16:23 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=BAYES_00, RP_MATCHES_RCVD, SPF_PASS autolearn=ham version=3.3.2 spammy=sticks, LIBS, $libs, $LIBS X-HELO: smtp.gentoo.org Received: from smtp.gentoo.org (HELO smtp.gentoo.org) (140.211.166.183) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-GCM-SHA384 encrypted) ESMTPS; Mon, 11 Jan 2016 19:16:21 +0000 Received: from localhost.localdomain (localhost [127.0.0.1]) by smtp.gentoo.org (Postfix) with ESMTP id CCCC5340871 for ; Mon, 11 Jan 2016 19:16:19 +0000 (UTC) From: Mike Frysinger To: gdb-patches@sourceware.org Subject: [PATCH 2/2] gdbserver: use the new gdb warning helpers Date: Mon, 11 Jan 2016 14:16:15 -0500 Message-Id: <1452539775-32541-2-git-send-email-vapier@gentoo.org> In-Reply-To: <1452539775-32541-1-git-send-email-vapier@gentoo.org> References: <1452539775-32541-1-git-send-email-vapier@gentoo.org> X-IsSubscribed: yes 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/acinclude.m4 | 3 ++ gdb/gdbserver/configure | 66 +++++++++++++++++++++++++++++++++---- gdb/gdbserver/configure.ac | 81 ++++------------------------------------------ 3 files changed, 70 insertions(+), 80 deletions(-) diff --git a/gdb/gdbserver/acinclude.m4 b/gdb/gdbserver/acinclude.m4 index 284c823..a052c2b 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 ab03cac..57af951 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 fbf33c3..8476fbd 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