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")