[binutils-gdb] Suppress compile time warning message when compiling coff-rs6000.c with gcc v8.

Nick Clifton nickc@sourceware.org
Wed Aug 1 13:47:00 GMT 2018


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=c25179e71fee952ace322ce26b3fe6b722ec77f9

commit c25179e71fee952ace322ce26b3fe6b722ec77f9
Author: Nick Clifton <nickc@redhat.com>
Date:   Wed Aug 1 14:46:43 2018 +0100

    Suppress compile time warning message when compiling coff-rs6000.c with gcc v8.
    
    	* coff-rs6000.c (_bfd_xcoff_put_ldsymbol_name): Suppress warnings
    	about potentially truncated strncpy operations.
    	(_bfd_xcoff_put_symbol_name): Likewise.

Diff:
---
 bfd/ChangeLog     |  4 ++++
 bfd/coff-rs6000.c | 20 ++++++++++++++++++++
 2 files changed, 24 insertions(+)

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 59b7266..1751cbc 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,5 +1,9 @@
 2018-08-01  Nick Clifton  <nickc@redhat.com>
 
+	* coff-rs6000.c (_bfd_xcoff_put_ldsymbol_name): Suppress warnings
+	about potentially truncated strncpy operations.
+	(_bfd_xcoff_put_symbol_name): Likewise.
+
 	* elf32-avr.c (avr_stub_name): Check for a NULL return from
 	bfd_malloc.
 
diff --git a/bfd/coff-rs6000.c b/bfd/coff-rs6000.c
index 053ab18..ab282df 100644
--- a/bfd/coff-rs6000.c
+++ b/bfd/coff-rs6000.c
@@ -3506,6 +3506,23 @@ xcoff_ppc_relocate_section (bfd *output_bfd,
   return TRUE;
 }
 
+/* gcc-8 warns (*) on all the strncpy calls in this function about
+   possible string truncation.  The "truncation" is not a bug.  We
+   have an external representation of structs with fields that are not
+   necessarily NULL terminated and corresponding internal
+   representation fields that are one larger so that they can always
+   be NULL terminated.
+   gcc versions between 4.2 and 4.6 do not allow pragma control of
+   diagnostics inside functions, giving a hard error if you try to use
+   the finer control available with later versions.
+   gcc prior to 4.2 warns about diagnostic push and pop.
+   gcc-5, gcc-6 and gcc-7 warn that -Wstringop-truncation is unknown,
+   unless you also add #pragma GCC diagnostic ignored "-Wpragma".
+   (*) Depending on your system header files!  */
+#if GCC_VERSION >= 8000
+# pragma GCC diagnostic push
+# pragma GCC diagnostic ignored "-Wstringop-truncation"
+#endif
 static bfd_boolean
 _bfd_xcoff_put_ldsymbol_name (bfd *abfd ATTRIBUTE_UNUSED,
 			      struct xcoff_loader_info *ldinfo,
@@ -3575,6 +3592,9 @@ _bfd_xcoff_put_symbol_name (struct bfd_link_info *info,
     }
   return TRUE;
 }
+#if GCC_VERSION >= 8000
+# pragma GCC diagnostic pop
+#endif
 
 static asection *
 xcoff_create_csect_from_smclas (bfd *abfd,



More information about the Binutils-cvs mailing list