From patchwork Wed Dec 11 19:28:23 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: "Simon Marchi (Code Review)" X-Patchwork-Id: 36723 Received: (qmail 14029 invoked by alias); 11 Dec 2019 19:28:32 -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 14018 invoked by uid 89); 11 Dec 2019 19:28:31 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-26.9 required=5.0 tests=BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_SHORT autolearn=ham version=3.3.1 spammy= X-HELO: mx1.osci.io Received: from polly.osci.io (HELO mx1.osci.io) (8.43.85.229) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 11 Dec 2019 19:28:30 +0000 Received: by mx1.osci.io (Postfix, from userid 994) id CD3DC2039A; Wed, 11 Dec 2019 14:28:28 -0500 (EST) Received: from gnutoolchain-gerrit.osci.io (gnutoolchain-gerrit.osci.io [IPv6:2620:52:3:1:5054:ff:fe06:16ca]) by mx1.osci.io (Postfix) with ESMTP id D7CD720266; Wed, 11 Dec 2019 14:28:23 -0500 (EST) Received: from localhost (localhost [127.0.0.1]) by gnutoolchain-gerrit.osci.io (Postfix) with ESMTP id B6DA620AF6; Wed, 11 Dec 2019 14:28:23 -0500 (EST) X-Gerrit-PatchSet: 5 Date: Wed, 11 Dec 2019 14:28:23 -0500 From: "Luis Machado (Code Review)" To: gdb-patches@sourceware.org Cc: Pedro Alves , Christian Biesinger Auto-Submitted: auto-generated X-Gerrit-MessageType: newpatchset Subject: [review v5] Fix unused function error X-Gerrit-Change-Id: Iad6123d61d76d111e3ef8d24aa8c60112304c749 X-Gerrit-Change-Number: 753 X-Gerrit-ChangeURL: X-Gerrit-Commit: 443b5cfecfae1540a2d62c4da44314afe38825ab In-Reply-To: References: Reply-To: luis.machado@linaro.org, palves@redhat.com, cbiesinger@google.com, gdb-patches@sourceware.org MIME-Version: 1.0 Content-Disposition: inline User-Agent: Gerrit/3.0.3-79-g83ff7f88f1 Message-Id: <20191211192823.B6DA620AF6@gnutoolchain-gerrit.osci.io> Change URL: https://gnutoolchain-gerrit.osci.io/r/c/binutils-gdb/+/753 ...................................................................... Fix unused function error Attempting to build GDB in Ubuntu 16.04.6 LTS on x86_64, I ran into warnings that caused the build to fail: binutils-gdb/gdb/gdbsupport/safe-strerror.c:44:1: error: ‘char* select_strerror_r(char*, char*)’ defined but not used [-Werror=unused-function] select_strerror_r (char *res, char *) The diagnostic macro DIAGNOSTIC_IGNORE_UNUSED_FUNCTION seems to expand correctly to its respective pragma, but this doesn't seem to have an effect on the warning. I tried to use the pragma explicitly and got the same result. ATTRIBUTE_UNUSED works fine in this case if you put it in both functions, which should fix warnings for both gdb and gdbserver builds. The compiler version is gcc (Ubuntu 5.4.0-6ubuntu1~16.04.11) 5.4.0 20160609. This is likely the result of PR64079 in GCC, which was fixed by commit 9e96f1e1b9731c4e1ef4fbbbf0997319973f0537. To prevent other developers from attempting to use this macro, only to get confused by it not working as expected, it seems better to not define this particular macro when the compiler is GCC. gdb/ChangeLog: 2019-12-11 Luis Machado * gdbsupport/safe-strerror.c: Don't include diagnostics.h. (select_strerror_r): Use ATTRIBUTE_UNUSED instead of the diagnostics macros. ChangeLog: 2019-12-11 Luis Machado * include/diagnostics.h (DIAGNOSTIC_IGNORE_UNUSED_FUNCTION). Remove definition and add comment explaining why. Change-Id: Iad6123d61d76d111e3ef8d24aa8c60112304c749 --- M gdb/gdbsupport/safe-strerror.c M include/diagnostics.h 2 files changed, 7 insertions(+), 12 deletions(-) diff --git a/gdb/gdbsupport/safe-strerror.c b/gdb/gdbsupport/safe-strerror.c index 9973fa6..a5ddf74 100644 --- a/gdb/gdbsupport/safe-strerror.c +++ b/gdb/gdbsupport/safe-strerror.c @@ -18,7 +18,6 @@ along with this program. If not, see . */ #include "common-defs.h" -#include "diagnostics.h" #include /* There are two different versions of strerror_r; one is GNU-specific, the @@ -27,27 +26,20 @@ to solve this for us because IPA does not use Gnulib but uses this function. */ -/* We only ever use one of the two overloads, so suppress the warning for - an unused function. */ -DIAGNOSTIC_PUSH -DIAGNOSTIC_IGNORE_UNUSED_FUNCTION - /* Called if we have a XSI-compliant strerror_r. */ -static char * +ATTRIBUTE_UNUSED static char * select_strerror_r (int res, char *buf) { return res == 0 ? buf : nullptr; } /* Called if we have a GNU strerror_r. */ -static char * +ATTRIBUTE_UNUSED static char * select_strerror_r (char *res, char *) { return res; } -DIAGNOSTIC_POP - /* Implementation of safe_strerror as defined in common-utils.h. */ const char * diff --git a/include/diagnostics.h b/include/diagnostics.h index 2adaa4d..503eaae 100644 --- a/include/diagnostics.h +++ b/include/diagnostics.h @@ -65,8 +65,11 @@ #elif defined (__GNUC__) /* GCC */ -# define DIAGNOSTIC_IGNORE_UNUSED_FUNCTION \ - DIAGNOSTIC_IGNORE ("-Wunused-function") +/* Before commit 9e96f1e1b9731c4e1ef4fbbbf0997319973f0537, GCC did not + silence the -Wunused-function warning through the GCC diagnostic push/pop + pragma as it should have. Therefore we do not define a + DIAGNOSTIC_IGNORE_UNUSED_FUNCTION macro here and use ATTRIBUTE_UNUSED + locally instead. */ # define DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION \ DIAGNOSTIC_IGNORE ("-Wstringop-truncation")