From 95da9854466ada2572b42f5528711a06a2d42db1 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Mon, 4 Jun 2018 10:01:34 -0700 Subject: [PATCH] Use DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION to silence GCC 8.1 GCC 8.1 warns about destination size with -Wstringop-truncation: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85643 Use DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION to silence it. bfd/ PR binutils/23146 * bfd-in.h: Include "diagnostics.h". * bfd-in2.h: Regenerated. * elf32-arm.c (elf32_arm_nabi_write_core_note): Use DIAGNOSTIC_PUSH, DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION and DIAGNOSTIC_POP to silence GCC 8.1 warnings with -Wstringop-truncation. * elf32-ppc.c (ppc_elf_write_core_note): Likewse. * elf32-s390.c (elf_s390_write_core_note): Likewse. * elf64-ppc.c (ppc64_elf_write_core_note): Likewse. * elf64-s390.c (elf_s390_write_core_note): Likewse. * elfxx-aarch64.c (_bfd_aarch64_elf_write_core_note): Likewse. include/ * diagnostics.h (DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION): Always define for GCC. --- bfd/ChangeLog | 15 +++++++++++++++ bfd/bfd-in.h | 1 + bfd/bfd-in2.h | 1 + bfd/elf32-arm.c | 9 +++++++++ bfd/elf32-ppc.c | 9 +++++++++ bfd/elf32-s390.c | 9 +++++++++ bfd/elf64-ppc.c | 9 +++++++++ bfd/elf64-s390.c | 9 +++++++++ bfd/elfxx-aarch64.c | 9 +++++++++ include/ChangeLog | 5 +++++ include/diagnostics.h | 4 +--- 11 files changed, 77 insertions(+), 3 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index a8f4688005..b36cdabef9 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,18 @@ +2018-06-04 H.J. Lu + + PR binutils/23146 + * bfd-in.h: Include "diagnostics.h". + * bfd-in2.h: Regenerated. + * elf32-arm.c (elf32_arm_nabi_write_core_note): Use + DIAGNOSTIC_PUSH, DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION and + DIAGNOSTIC_POP to silence GCC 8.1 warnings with + -Wstringop-truncation. + * elf32-ppc.c (ppc_elf_write_core_note): Likewse. + * elf32-s390.c (elf_s390_write_core_note): Likewse. + * elf64-ppc.c (ppc64_elf_write_core_note): Likewse. + * elf64-s390.c (elf_s390_write_core_note): Likewse. + * elfxx-aarch64.c (_bfd_aarch64_elf_write_core_note): Likewse. + 2018-06-03 Jim Wilson PR ld/23244 diff --git a/bfd/bfd-in.h b/bfd/bfd-in.h index 481587e458..1d477c3f5f 100644 --- a/bfd/bfd-in.h +++ b/bfd/bfd-in.h @@ -34,6 +34,7 @@ extern "C" { #include "ansidecl.h" #include "symcat.h" +#include "diagnostics.h" #include #include diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h index ef62f31953..65735f026e 100644 --- a/bfd/bfd-in2.h +++ b/bfd/bfd-in2.h @@ -41,6 +41,7 @@ extern "C" { #include "ansidecl.h" #include "symcat.h" +#include "diagnostics.h" #include #include diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c index dbfd838fbe..870111b5ed 100644 --- a/bfd/elf32-arm.c +++ b/bfd/elf32-arm.c @@ -2174,7 +2174,16 @@ elf32_arm_nabi_write_core_note (bfd *abfd, char *buf, int *bufsiz, va_start (ap, note_type); memset (data, 0, sizeof (data)); strncpy (data + 28, va_arg (ap, const char *), 16); + DIAGNOSTIC_PUSH; + /* GCC 8.1 warns about 80 equals destination size with + -Wstringop-truncation: + https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85643 + */ +#if GCC_VERSION == 8001 + DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION; +#endif strncpy (data + 44, va_arg (ap, const char *), 80); + DIAGNOSTIC_POP; va_end (ap); return elfcore_write_note (abfd, buf, bufsiz, diff --git a/bfd/elf32-ppc.c b/bfd/elf32-ppc.c index 3482baca20..ea8dbed981 100644 --- a/bfd/elf32-ppc.c +++ b/bfd/elf32-ppc.c @@ -2411,7 +2411,16 @@ ppc_elf_write_core_note (bfd *abfd, char *buf, int *bufsiz, int note_type, ...) va_start (ap, note_type); memset (data, 0, sizeof (data)); strncpy (data + 32, va_arg (ap, const char *), 16); + DIAGNOSTIC_PUSH; + /* GCC 8.1 warns about 80 equals destination size with + -Wstringop-truncation: + https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85643 + */ +#if GCC_VERSION == 8001 + DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION; +#endif strncpy (data + 48, va_arg (ap, const char *), 80); + DIAGNOSTIC_POP; va_end (ap); return elfcore_write_note (abfd, buf, bufsiz, "CORE", note_type, data, sizeof (data)); diff --git a/bfd/elf32-s390.c b/bfd/elf32-s390.c index 99ceb76d3d..ebda1dacdc 100644 --- a/bfd/elf32-s390.c +++ b/bfd/elf32-s390.c @@ -3951,7 +3951,16 @@ elf_s390_write_core_note (bfd *abfd, char *buf, int *bufsiz, va_end (ap); strncpy (data + 28, fname, 16); + DIAGNOSTIC_PUSH; + /* GCC 8.1 warns about 80 equals destination size with + -Wstringop-truncation: + https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85643 + */ +#if GCC_VERSION == 8001 + DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION; +#endif strncpy (data + 44, psargs, 80); + DIAGNOSTIC_POP; return elfcore_write_note (abfd, buf, bufsiz, "CORE", note_type, &data, sizeof (data)); } diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c index f543cb0288..16199fbe3e 100644 --- a/bfd/elf64-ppc.c +++ b/bfd/elf64-ppc.c @@ -3041,7 +3041,16 @@ ppc64_elf_write_core_note (bfd *abfd, char *buf, int *bufsiz, int note_type, va_start (ap, note_type); memset (data, 0, sizeof (data)); strncpy (data + 40, va_arg (ap, const char *), 16); + DIAGNOSTIC_PUSH; + /* GCC 8.1 warns about 80 equals destination size with + -Wstringop-truncation: + https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85643 + */ +#if GCC_VERSION == 8001 + DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION; +#endif strncpy (data + 56, va_arg (ap, const char *), 80); + DIAGNOSTIC_POP; va_end (ap); return elfcore_write_note (abfd, buf, bufsiz, "CORE", note_type, data, sizeof (data)); diff --git a/bfd/elf64-s390.c b/bfd/elf64-s390.c index 612557fa74..93a3c7c22a 100644 --- a/bfd/elf64-s390.c +++ b/bfd/elf64-s390.c @@ -3760,7 +3760,16 @@ elf_s390_write_core_note (bfd *abfd, char *buf, int *bufsiz, va_end (ap); strncpy (data + 40, fname, 16); + DIAGNOSTIC_PUSH; + /* GCC 8.1 warns about 80 equals destination size with + -Wstringop-truncation: + https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85643 + */ +#if GCC_VERSION == 8001 + DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION; +#endif strncpy (data + 56, psargs, 80); + DIAGNOSTIC_POP; return elfcore_write_note (abfd, buf, bufsiz, "CORE", note_type, &data, sizeof (data)); } diff --git a/bfd/elfxx-aarch64.c b/bfd/elfxx-aarch64.c index af37f828d5..3ea8dadf6d 100644 --- a/bfd/elfxx-aarch64.c +++ b/bfd/elfxx-aarch64.c @@ -640,7 +640,16 @@ _bfd_aarch64_elf_write_core_note (bfd *abfd, char *buf, int *bufsiz, int note_ty va_start (ap, note_type); memset (data, 0, sizeof (data)); strncpy (data + 40, va_arg (ap, const char *), 16); + DIAGNOSTIC_PUSH; + /* GCC 8.1 warns about 80 equals destination size with + -Wstringop-truncation: + https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85643 + */ +#if GCC_VERSION == 8001 + DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION; +#endif strncpy (data + 56, va_arg (ap, const char *), 80); + DIAGNOSTIC_POP; va_end (ap); return elfcore_write_note (abfd, buf, bufsiz, "CORE", diff --git a/include/ChangeLog b/include/ChangeLog index 74be7787dc..76a312a0dd 100644 --- a/include/ChangeLog +++ b/include/ChangeLog @@ -1,3 +1,8 @@ +2018-06-04 H.J. Lu + + * diagnostics.h (DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION): Always + define for GCC. + 2018-06-04 H.J. Lu * diagnostics.h (DIAGNOSTIC_STRINGIFY_1): New. diff --git a/include/diagnostics.h b/include/diagnostics.h index f7412d4a38..4a674106dc 100644 --- a/include/diagnostics.h +++ b/include/diagnostics.h @@ -48,10 +48,8 @@ # define DIAGNOSTIC_IGNORE_UNUSED_FUNCTION \ DIAGNOSTIC_IGNORE ("-Wunused-function") -# if __GNUC__ == 8 && __GNUC_MINOR__ < 2 -# define DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION \ +# define DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION \ DIAGNOSTIC_IGNORE ("-Wstringop-truncation") -# endif #endif #ifndef DIAGNOSTIC_IGNORE_SELF_MOVE -- 2.34.1