From patchwork Thu Sep 22 08:25:44 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tsukasa OI X-Patchwork-Id: 57884 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 90CD93857428 for ; Thu, 22 Sep 2022 08:26:30 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 90CD93857428 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1663835190; bh=usrWgsLbanKk6kiCXY3p/G8YpjvXEFVErTkLJhLkLRE=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=RAUMZwQOplZmQwvlljYnfnwA/ou4NOtQLpx/DY18ARDf71qq3i0v9ygwcvnKyXWIT sXbLH6RiU6FGlLQ/tL+29kkYHOakBsLXSTRt4/esPUtJ2Zzen0PSkUzko5uokmEi1t vtkpPKfsYw/kz/NkjXUtWqLMhbt/q+fVdNFldEGE= X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org Received: from mail-sender-0.a4lg.com (mail-sender.a4lg.com [153.120.152.154]) by sourceware.org (Postfix) with ESMTPS id 33FA0385801A; Thu, 22 Sep 2022 08:26:02 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 33FA0385801A Received: from [127.0.0.1] (localhost [127.0.0.1]) by mail-sender-0.a4lg.com (Postfix) with ESMTPSA id 47458300089; Thu, 22 Sep 2022 08:26:00 +0000 (UTC) To: Tsukasa OI , Pedro Alves , Joel Brobecker , Enze Li Subject: [PATCH v2 1/4] include: Add macro to ignore -Wuser-defined-warnings Date: Thu, 22 Sep 2022 08:25:44 +0000 Message-Id: <2ce08418715c662152290077e1bbc92ee1cf0f10.1663835104.git.research_trasio@irq.a4lg.com> In-Reply-To: References: Mime-Version: 1.0 X-Spam-Status: No, score=-12.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, GIT_PATCH_0, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Tsukasa OI via Gdb-patches From: Tsukasa OI Reply-To: Tsukasa OI Cc: binutils@sourceware.org, gdb-patches@sourceware.org Errors-To: gdb-patches-bounces+patchwork=sourceware.org@sourceware.org Sender: "Gdb-patches" User-defined warnings (on Clang, "-Wuser-defined-warnings") can be harmful if we have specified "-Werror" and we have no control to disable the warning ourself. The particular example is Gnulib. Gnulib generates a warning if the system version of certain functions are used (to redirect the developer to use Gnulib version). However, it can be harmful if we cannot easily replace them (e.g. the target is in the standard C++ library). The new DIAGNOSTIC_IGNORE_USER_DEFINED_WARNINGS macro can be helpful on such cases. A typical use of this macro is to place this macro before including certain system headers. include/ChangeLog: * diagnostics.h (DIAGNOSTIC_IGNORE_USER_DEFINED_WARNINGS): New. --- include/diagnostics.h | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/include/diagnostics.h b/include/diagnostics.h index 3da88282261..dbe6288d3d6 100644 --- a/include/diagnostics.h +++ b/include/diagnostics.h @@ -63,6 +63,11 @@ # define DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL \ DIAGNOSTIC_IGNORE ("-Wformat-nonliteral") +# if __has_warning ("-Wuser-defined-warnings") +# define DIAGNOSTIC_IGNORE_USER_DEFINED_WARNINGS \ + DIAGNOSTIC_IGNORE ("-Wuser-defined-warnings") +# endif + # define DIAGNOSTIC_ERROR_SWITCH \ DIAGNOSTIC_ERROR ("-Wswitch") @@ -121,6 +126,10 @@ # define DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL #endif +#ifndef DIAGNOSTIC_IGNORE_USER_DEFINED_WARNINGS +# define DIAGNOSTIC_IGNORE_USER_DEFINED_WARNINGS +#endif + #ifndef DIAGNOSTIC_ERROR_SWITCH # define DIAGNOSTIC_ERROR_SWITCH #endif From patchwork Thu Sep 22 08:25:45 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tsukasa OI X-Patchwork-Id: 57885 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 5AB56385742B for ; Thu, 22 Sep 2022 08:26:38 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 5AB56385742B DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1663835198; bh=W5fehORkCTZM0gX41LSOyh28oD+t9SJB02gpiY4t5AE=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=DtQmvv4bXipHuiSk4xpe9HGf6mc1vtqYVqBQQ27KqtFhwIF6wXGdPTdHkRRM5IQJx 9B1LNcZjnLg3HFe3FYssW8RVXoWhmrrRPh+ldOWTTIJ5SaC9z/XyKe2seaV8MkLLVL FTXLEz1yXAFeLdhjqt8H9wOKFx74Hzaj4YggUQ4o= X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org Received: from mail-sender-0.a4lg.com (mail-sender.a4lg.com [153.120.152.154]) by sourceware.org (Postfix) with ESMTPS id 91E3B3857C52; Thu, 22 Sep 2022 08:26:12 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 91E3B3857C52 Received: from [127.0.0.1] (localhost [127.0.0.1]) by mail-sender-0.a4lg.com (Postfix) with ESMTPSA id DF926300089; Thu, 22 Sep 2022 08:26:10 +0000 (UTC) To: Tsukasa OI , Pedro Alves , Joel Brobecker , Enze Li Subject: [PATCH v2 2/4] include: Add macro to ignore -Wunused-but-set-variable Date: Thu, 22 Sep 2022 08:25:45 +0000 Message-Id: <6c1a2fe519fa913a0ad96e6debdec77ecdd9cdf6.1663835104.git.research_trasio@irq.a4lg.com> In-Reply-To: References: Mime-Version: 1.0 X-Spam-Status: No, score=-12.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, GIT_PATCH_0, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Tsukasa OI via Gdb-patches From: Tsukasa OI Reply-To: Tsukasa OI Cc: binutils@sourceware.org, gdb-patches@sourceware.org Errors-To: gdb-patches-bounces+patchwork=sourceware.org@sourceware.org Sender: "Gdb-patches" "-Wunused-but-set-variable" warning option can be helpful to track variables that are written but not read thereafter. But it can be harmful if some of the code is auto-generated and we have no ways to deal with it. The particular example is Bison-generated code. The new DIAGNOSTIC_IGNORE_UNUSED_BUT_SET_VARIABLE macro can be helpful on such cases. A typical use of this macro is to place this macro before the end of user prologues on Bison (.y) files. include/ChangeLog: * diagnostics.h (DIAGNOSTIC_IGNORE_UNUSED_BUT_SET_VARIABLE): New. --- include/diagnostics.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/include/diagnostics.h b/include/diagnostics.h index dbe6288d3d6..4161dff6abc 100644 --- a/include/diagnostics.h +++ b/include/diagnostics.h @@ -68,6 +68,11 @@ DIAGNOSTIC_IGNORE ("-Wuser-defined-warnings") # endif +# if __has_warning ("-Wunused-but-set-variable") +# define DIAGNOSTIC_IGNORE_UNUSED_BUT_SET_VARIABLE \ + DIAGNOSTIC_IGNORE ("-Wunused-but-set-variable") +# endif + # define DIAGNOSTIC_ERROR_SWITCH \ DIAGNOSTIC_ERROR ("-Wswitch") @@ -89,6 +94,11 @@ # define DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL \ DIAGNOSTIC_IGNORE ("-Wformat-nonliteral") +# if __GNUC__ >= 5 +# define DIAGNOSTIC_IGNORE_UNUSED_BUT_SET_VARIABLE \ + DIAGNOSTIC_IGNORE ("-Wunused-but-set-variable") +# endif + /* GCC 4.8's "diagnostic push/pop" seems broken when using this, -Wswitch remains enabled at the error level even after a pop. Therefore, don't use it for GCC < 5. */ @@ -130,6 +140,10 @@ # define DIAGNOSTIC_IGNORE_USER_DEFINED_WARNINGS #endif +#ifndef DIAGNOSTIC_IGNORE_UNUSED_BUT_SET_VARIABLE +# define DIAGNOSTIC_IGNORE_UNUSED_BUT_SET_VARIABLE +#endif + #ifndef DIAGNOSTIC_ERROR_SWITCH # define DIAGNOSTIC_ERROR_SWITCH #endif From patchwork Thu Sep 22 08:25:46 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tsukasa OI X-Patchwork-Id: 57887 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id AE99B385C33A for ; Thu, 22 Sep 2022 08:28:59 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org AE99B385C33A DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1663835339; bh=uhI+j6CF7m0EHc/EauSt1STphYjgwk+jyFcRPlSsd9M=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=CJDl/MZjzbey91qfN4wlsxMURy9m2wOMRRHFworCRup9942rzsXgcMwx/41P7q1b7 W7NH+eAyZhx5s7m2nyRP/O0cqXBxN5MEkJW+KdpsSmgzfC+5fPXjk9K8gD1Sd4/yFt ld9uSZgDGIc8JvaIJhd3khxSZ+VoOSkXFM2apuoI= X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org Received: from mail-sender-0.a4lg.com (mail-sender.a4lg.com [153.120.152.154]) by sourceware.org (Postfix) with ESMTPS id 246BB3858012; Thu, 22 Sep 2022 08:26:23 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 246BB3858012 Received: from [127.0.0.1] (localhost [127.0.0.1]) by mail-sender-0.a4lg.com (Postfix) with ESMTPSA id 6EDEE300089; Thu, 22 Sep 2022 08:26:21 +0000 (UTC) To: Tsukasa OI , Pedro Alves , Joel Brobecker , Enze Li Subject: [PATCH v2 3/4] gdb/unittests: PR28413, suppress warnings generated by Gnulib Date: Thu, 22 Sep 2022 08:25:46 +0000 Message-Id: <667cafec3594a5eb180aee68f8c3adf1531addd3.1663835104.git.research_trasio@irq.a4lg.com> In-Reply-To: References: Mime-Version: 1.0 X-Spam-Status: No, score=-12.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, GIT_PATCH_0, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Tsukasa OI via Gdb-patches From: Tsukasa OI Reply-To: Tsukasa OI Cc: binutils@sourceware.org, gdb-patches@sourceware.org Errors-To: gdb-patches-bounces+patchwork=sourceware.org@sourceware.org Sender: "Gdb-patches" Gnulib generates a warning if the system version of certain functions are used (to redirect the developer to use Gnulib version). It caused a compiler error when... - Compiled with Clang - -Werror is specified (by default) - C++ standard used by Clang is before C++17 (by default as of 15.0.0) when this unit test is activated. This issue is raised as PR28413. However, previous proposal to fix this issue (a "fix" to Gnulib): was rejected because it ruins the intent of Gnulib warnings. So, we need a Binutils/GDB-side solution. This commit tries to deal with this issue on the GDB side. We have "include/diagnostics.h" to disable certain warnings only when necessary. This commit suppresses the Gnulib warnings by adding DIAGNOSTIC_IGNORE_USER_DEFINED_WARNINGS before including "defs.h". gdb/ChangeLog: pr 28413 * unittests/string_view-selftests.c: Suppress Gnulib-generated warnings when "defs.h" is included. Reviewed-by: Enze Li --- gdb/unittests/string_view-selftests.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/gdb/unittests/string_view-selftests.c b/gdb/unittests/string_view-selftests.c index 2d7261d18d3..c1f7799d94c 100644 --- a/gdb/unittests/string_view-selftests.c +++ b/gdb/unittests/string_view-selftests.c @@ -23,7 +23,12 @@ #define GNULIB_NAMESPACE gnulib +#include "diagnostics.h" + +DIAGNOSTIC_PUSH +DIAGNOSTIC_IGNORE_USER_DEFINED_WARNINGS #include "defs.h" +DIAGNOSTIC_POP #include "gdbsupport/selftest.h" #include "gdbsupport/gdb_string_view.h" From patchwork Thu Sep 22 08:25:47 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tsukasa OI X-Patchwork-Id: 57886 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id A25413851AAC for ; Thu, 22 Sep 2022 08:27:57 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org A25413851AAC DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1663835277; bh=sSVeey+uK0xnd3PD+rg1jZ8jg1wdKLsBKxBJ9um9syQ=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=qZSz0y7khfND4AczVgOGXLI7rzAPb2B1mxEonAr97C/E6F98pQWVOnSfXuvw64mE6 9pbTKVoZmzFBFFZy3LAGJWtziaaMazBRTcZkvev4Nsgi4xTQ6EuH2b51He6OIkDcwM 9oC9pqYNSH+UIn+tQFmdcQ1W34UfPvO4dJpTWRgo= X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org Received: from mail-sender-0.a4lg.com (mail-sender.a4lg.com [153.120.152.154]) by sourceware.org (Postfix) with ESMTPS id BCEA6385828E; Thu, 22 Sep 2022 08:26:33 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org BCEA6385828E Received: from [127.0.0.1] (localhost [127.0.0.1]) by mail-sender-0.a4lg.com (Postfix) with ESMTPSA id EE51F300089; Thu, 22 Sep 2022 08:26:31 +0000 (UTC) To: Tsukasa OI , Pedro Alves , Joel Brobecker , Enze Li Subject: [PATCH v2 4/4] gdb: Suppress "unused" variable warning on Clang Date: Thu, 22 Sep 2022 08:25:47 +0000 Message-Id: <189b22f1db46c1ffbb248aeca8b5753da4070f2c.1663835104.git.research_trasio@irq.a4lg.com> In-Reply-To: References: Mime-Version: 1.0 X-Spam-Status: No, score=-12.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, GIT_PATCH_0, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Tsukasa OI via Gdb-patches From: Tsukasa OI Reply-To: Tsukasa OI Cc: binutils@sourceware.org, gdb-patches@sourceware.org Errors-To: gdb-patches-bounces+patchwork=sourceware.org@sourceware.org Sender: "Gdb-patches" Clang generates a warning if there is a variable which is written but not read thereafter. By the default configuration (with "-Werror"), it causes a build failure (unless "--disable-werror" is specified). Because the cause of this error is in the Bison-generated code ($(srcdir)/gdb/cp-name-parser.y -> $(builddir)/gdb/cp-name-parser.c), this commit suppresses this warning ("-Wunused-but-set-variable") by placing the DIAGNOSTIC_IGNORE_UNUSED_BUT_SET_VARIABLE macro at the end of user prologue of cp-name-parser.y. gdb/ChangeLog: * cp-name-parser.y: Suppress -Wunused-but-set-variable warning on the Bison-generated code. --- gdb/cp-name-parser.y | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/gdb/cp-name-parser.y b/gdb/cp-name-parser.y index 34c691ddabb..21ba51679d3 100644 --- a/gdb/cp-name-parser.y +++ b/gdb/cp-name-parser.y @@ -248,6 +248,10 @@ cpname_state::make_name (const char *name, int len) static int yylex (YYSTYPE *, cpname_state *); static void yyerror (cpname_state *, const char *); + +#include "diagnostics.h" +DIAGNOSTIC_IGNORE_UNUSED_BUT_SET_VARIABLE + %} %type exp exp1 type start start_opt oper colon_name