summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Wielaard <mark@klomp.org>2023-01-15 01:06:16 +0100
committerMark Wielaard <mark@klomp.org>2023-01-18 22:31:36 +0100
commitdc99828bcb126c1ce8751fe479b69b23ff5c75fa (patch)
tree96e21007ac6e574ca9368d87fa424e0aed194bd7
parentbd3014572d687e6d6e9d27a46d5b19a4a5528e85 (diff)
downloadbinutils-gdb-dc99828bcb126c1ce8751fe479b69b23ff5c75fa.tar.gz
gdb: Ignore some stringop-overflow and restrict warnings on sparc
For some reason g++ 11.2.1 on s390x produces a spurious warning for stringop-overread and restruct in fsb-tdep.c for some memcpy calls. Add new DIAGNOSTIC_IGNORE_STRINGOP_OVERFLOW and DIAGNOSTIC_IGNORE_RESTRICT macro to suppress these warning. include/ChangeLog: * diagnostics.h (DIAGNOSTIC_IGNORE_STRINGOP_OVERFLOW): New macro. (DIAGNOSTIC_IGNORE_RESTRICT): Likewise. gdb/ChangeLog: * fsb-tdep.c (fbsd_make_note_desc): Use DIAGNOSTIC_IGNORE_STRINGOP_OVERFLOW and DIAGNOSTIC_IGNORE_RESTRICT on sparc.
-rw-r--r--gdb/fbsd-tdep.c10
-rw-r--r--include/diagnostics.h10
2 files changed, 20 insertions, 0 deletions
diff --git a/gdb/fbsd-tdep.c b/gdb/fbsd-tdep.c
index 203390d9880..ee2a4b54e85 100644
--- a/gdb/fbsd-tdep.c
+++ b/gdb/fbsd-tdep.c
@@ -19,6 +19,7 @@
#include "defs.h"
#include "auxv.h"
+#include "diagnostics.h"
#include "gdbcore.h"
#include "inferior.h"
#include "objfiles.h"
@@ -663,7 +664,16 @@ fbsd_make_note_desc (enum target_object object, uint32_t structsize)
gdb::byte_vector desc (sizeof (structsize) + buf->size ());
memcpy (desc.data (), &structsize, sizeof (structsize));
+#if defined (__sparc__)
+ /* g++ 12.2.1 on sparc seems confused about the vector buf sizes. */
+ DIAGNOSTIC_PUSH
+ DIAGNOSTIC_IGNORE_STRINGOP_OVERFLOW
+ DIAGNOSTIC_IGNORE_RESTRICT
+#endif
memcpy (desc.data () + sizeof (structsize), buf->data (), buf->size ());
+#if defined (__sparc__)
+ DIAGNOSTIC_POP
+#endif
return desc;
}
diff --git a/include/diagnostics.h b/include/diagnostics.h
index d3ff27bc008..617943ae0d7 100644
--- a/include/diagnostics.h
+++ b/include/diagnostics.h
@@ -94,6 +94,11 @@
DIAGNOSTIC_IGNORE ("-Wstringop-overread")
#endif
+# if __GNUC__ >= 7
+# define DIAGNOSTIC_IGNORE_STRINGOP_OVERFLOW \
+ DIAGNOSTIC_IGNORE ("-Wstringop-overflow")
+#endif
+
# define DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL \
DIAGNOSTIC_IGNORE ("-Wformat-nonliteral")
@@ -113,6 +118,7 @@
# define DIAGNOSTIC_ERROR_SWITCH DIAGNOSTIC_ERROR ("-Wswitch")
# endif
+#define DIAGNOSTIC_IGNORE_RESTRICT DIAGNOSTIC_IGNORE ("-Wrestrict")
#endif
#ifndef DIAGNOSTIC_IGNORE_SELF_MOVE
@@ -139,6 +145,10 @@
# define DIAGNOSTIC_IGNORE_STRINGOP_OVERREAD
#endif
+#ifndef DIAGNOSTIC_IGNORE_STRINGOP_OVERFLOW
+# define DIAGNOSTIC_IGNORE_STRINGOP_OVERFLOW
+#endif
+
#ifndef DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
# define DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
#endif