Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: "Luis Machado (Code Review)" <gerrit@gnutoolchain-gerrit.osci.io>
To: gdb-patches@sourceware.org
Cc: Pedro Alves <palves@redhat.com>,
	Christian Biesinger <cbiesinger@google.com>
Subject: [review v5] Fix unused function error
Date: Wed, 11 Dec 2019 19:28:00 -0000	[thread overview]
Message-ID: <20191211192823.B6DA620AF6@gnutoolchain-gerrit.osci.io> (raw)
In-Reply-To: <gerrit.1576076440000.Iad6123d61d76d111e3ef8d24aa8c60112304c749@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  <luis.machado@linaro.org>

	* 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  <luis.machado@linaro.org>

	* 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 <http://www.gnu.org/licenses/>.  */
 
 #include "common-defs.h"
-#include "diagnostics.h"
 #include <string.h>
 
 /* 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")

-- 
Gerrit-Project: binutils-gdb
Gerrit-Branch: master
Gerrit-Change-Id: Iad6123d61d76d111e3ef8d24aa8c60112304c749
Gerrit-Change-Number: 753
Gerrit-PatchSet: 5
Gerrit-Owner: Luis Machado <luis.machado@linaro.org>
Gerrit-Reviewer: Luis Machado <luis.machado@linaro.org>
Gerrit-CC: Christian Biesinger <cbiesinger@google.com>
Gerrit-CC: Pedro Alves <palves@redhat.com>
Gerrit-MessageType: newpatchset


  parent reply	other threads:[~2019-12-11 19:28 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-12-11 15:00 [review] " Luis Machado (Code Review)
2019-12-11 15:17 ` [review v2] " Luis Machado (Code Review)
2019-12-11 16:05 ` Pedro Alves (Code Review)
2019-12-11 17:05 ` Luis Machado (Code Review)
2019-12-11 17:07 ` [review v3] " Luis Machado (Code Review)
2019-12-11 17:11 ` [review v4] " Luis Machado (Code Review)
2019-12-11 17:17 ` [review v3] " Pedro Alves (Code Review)
2019-12-11 17:26 ` [review v4] " Christian Biesinger (Code Review)
2019-12-11 17:58 ` Luis Machado (Code Review)
2019-12-11 18:03 ` Pedro Alves (Code Review)
2019-12-11 18:19 ` Luis Machado (Code Review)
2019-12-11 18:23 ` Pedro Alves (Code Review)
2019-12-11 18:25 ` Pedro Alves (Code Review)
2019-12-11 19:28 ` Luis Machado (Code Review) [this message]
2019-12-11 19:54 ` [review v5] " Pedro Alves (Code Review)
2019-12-12 11:14 ` [review v6] " Luis Machado (Code Review)
2019-12-12 11:15 ` Luis Machado (Code Review)
2019-12-12 11:20 ` Pedro Alves (Code Review)
2019-12-12 12:13 ` [pushed] " Sourceware to Gerrit sync (Code Review)
2019-12-12 12:13 ` Sourceware to Gerrit sync (Code Review)

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20191211192823.B6DA620AF6@gnutoolchain-gerrit.osci.io \
    --to=gerrit@gnutoolchain-gerrit.osci.io \
    --cc=cbiesinger@google.com \
    --cc=gdb-patches@sourceware.org \
    --cc=luis.machado@linaro.org \
    --cc=palves@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox