aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2018-04-25 13:27:22 +0930
committerAlan Modra <amodra@gmail.com>2018-04-25 17:25:57 +0930
commitd99b4b92c8ed0f7ef98f370bbf65a360ed66ad7b (patch)
tree026e6a0c99205cb06226706bf85feaea264290b6
parent651d16203867f8013a0f78a2f2e24df8c02d1377 (diff)
downloadfsf-binutils-gdb-d99b4b92c8ed0f7ef98f370bbf65a360ed66ad7b.zip
fsf-binutils-gdb-d99b4b92c8ed0f7ef98f370bbf65a360ed66ad7b.tar.gz
fsf-binutils-gdb-d99b4b92c8ed0f7ef98f370bbf65a360ed66ad7b.tar.bz2
Silence gcc-8 warnings
This seems to work with gcc-8 and a bunch of prior gcc versions I tested. * elf-linux-core.h: Disable gcc-8 string truncation warning. * elf.c (elfcore_write_prpsinfo): Likewise.
-rw-r--r--bfd/ChangeLog7
-rw-r--r--bfd/elf-linux-core.h23
-rw-r--r--bfd/elf.c7
3 files changed, 36 insertions, 1 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index c48036f..91a41ae 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,4 +1,9 @@
-2018-04-35 Alan Modra <amodra@gmail.com>
+2018-04-25 Alan Modra <amodra@gmail.com>
+
+ * elf-linux-core.h: Disable gcc-8 string truncation warning.
+ * elf.c (elfcore_write_prpsinfo): Likewise.
+
+2018-04-25 Alan Modra <amodra@gmail.com>
* Makefile.am: Remove arm-aout and arm-coff support.
* config.bfd: Likewise.
diff --git a/bfd/elf-linux-core.h b/bfd/elf-linux-core.h
index 0a5d76f..fa06903 100644
--- a/bfd/elf-linux-core.h
+++ b/bfd/elf-linux-core.h
@@ -21,6 +21,25 @@
#ifndef ELF_LINUX_CORE_H
#define ELF_LINUX_CORE_H
+/* gcc-8 warns (*) on all the strncpy calls in this file 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
+
/* External 32-bit structure for PRPSINFO. This structure is
ABI-defined, thus we choose to use char arrays here in order to
avoid dealing with different types in different architectures.
@@ -231,4 +250,8 @@ swap_linux_prpsinfo64_ugid16_out
strncpy (to->pr_psargs, from->pr_psargs, sizeof (to->pr_psargs));
}
+#if GCC_VERSION >= 8000
+#pragma GCC diagnostic pop
+#endif
+
#endif
diff --git a/bfd/elf.c b/bfd/elf.c
index 092b275..bd9ffcc 100644
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -10508,6 +10508,10 @@ elfcore_write_note (bfd *abfd,
return buf;
}
+#if GCC_VERSION >= 8000
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wstringop-truncation"
+#endif
char *
elfcore_write_prpsinfo (bfd *abfd,
char *buf,
@@ -10566,6 +10570,9 @@ elfcore_write_prpsinfo (bfd *abfd,
free (buf);
return NULL;
}
+#if GCC_VERSION >= 8000
+#pragma GCC diagnostic pop
+#endif
char *
elfcore_write_linux_prpsinfo32