diff --git a/gdb/debuginfod-support.c b/gdb/debuginfod-support.c
index dffcd782e7d..f2a31ea1952 100644
--- a/gdb/debuginfod-support.c
+++ b/gdb/debuginfod-support.c
@@ -17,6 +17,7 @@
along with this program. If not, see . */
#include "defs.h"
+#include "diagnostics.h"
#include
#include "gdbsupport/scoped_fd.h"
#include "debuginfod-support.h"
@@ -192,7 +193,17 @@ debuginfod_is_enabled ()
if (off == gdb::string_view::npos)
break;
url_view = url_view.substr (off);
+#if defined (__s390x__)
+ /* g++ 11.2.1 on s390x seems convinced url_view might be of
+ SIZE_MAX length. And so complains because the length of
+ an array can only be PTRDIFF_MAX. */
+ DIAGNOSTIC_PUSH
+ DIAGNOSTIC_IGNORE_STRINGOP_OVERREAD
+#endif
off = url_view.find_first_of (' ');
+#if defined (__s390x__)
+ DIAGNOSTIC_POP
+#endif
gdb_printf
(_(" <%ps>\n"),
styled_string (file_name_style.style (),
diff --git a/include/diagnostics.h b/include/diagnostics.h
index f10d066150a..8bf5a3c3d9b 100644
--- a/include/diagnostics.h
+++ b/include/diagnostics.h
@@ -76,6 +76,9 @@
# define DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION \
DIAGNOSTIC_IGNORE ("-Wstringop-truncation")
+# define DIAGNOSTIC_IGNORE_STRINGOP_OVERREAD \
+ DIAGNOSTIC_IGNORE ("-Wstringop-overread")
+
# define DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL \
DIAGNOSTIC_IGNORE ("-Wformat-nonliteral")
@@ -108,6 +111,10 @@
# define DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION
#endif
+#ifndef DIAGNOSTIC_IGNORE_STRINGOP_OVERREAD
+# define DIAGNOSTIC_IGNORE_STRINGOP_OVERREAD
+#endif
+
#ifndef DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
# define DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
#endif