aboutsummaryrefslogtreecommitdiff
path: root/bfd
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2017-02-03 09:04:21 +0000
committerNick Clifton <nickc@redhat.com>2017-02-03 09:04:21 +0000
commit1b7e3d2fb7036ce6f9d74e32dc052518f5cd45b6 (patch)
treec688cc3b7f56099d9e92a92af400fd1cbccf920b /bfd
parent65c40c956fcd9443a5390d6cc36f84bd1bf77df4 (diff)
downloadgdb-1b7e3d2fb7036ce6f9d74e32dc052518f5cd45b6.zip
gdb-1b7e3d2fb7036ce6f9d74e32dc052518f5cd45b6.tar.gz
gdb-1b7e3d2fb7036ce6f9d74e32dc052518f5cd45b6.tar.bz2
Fix compile time warning messages when compiling binutils with gcc 7.0.1.
PR 21096 bfd * coffcode.h (coff_write_object_contents): Enlarge size of s_name_buf in order to avoid compile time warning about possible integer truncation. * elf32-nds32.c (nds32_elf_ex9_import_table): Mask off lower 32-bits of insn value before printing into buffer. opcodes * aarch64-opc.c (print_register_list): Ensure that the register list index will fir into the tb buffer. (print_register_offset_address): Likewise. * tic6x-dis.c (print_insn_tic6x): Increase size of func_unit_buf.
Diffstat (limited to 'bfd')
-rw-r--r--bfd/ChangeLog9
-rw-r--r--bfd/coffcode.h11
-rw-r--r--bfd/elf32-nds32.c4
3 files changed, 18 insertions, 6 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index bbd1200..3f9bbd1 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,12 @@
+2017-02-03 Nick Clifton <nickc@redhat.com>
+
+ PR 21096
+ * coffcode.h (coff_write_object_contents): Enlarge size of
+ s_name_buf in order to avoid compile time warning about possible
+ integer truncation.
+ * elf32-nds32.c (nds32_elf_ex9_import_table): Mask off lower
+ 32-bits of insn value before printing into buffer.
+
2017-02-02 Maciej W. Rozycki <macro@imgtec.com>
* elfxx-mips.c (mips_elf_hash_sort_data): Add
diff --git a/bfd/coffcode.h b/bfd/coffcode.h
index 2ef4e92..975d249 100644
--- a/bfd/coffcode.h
+++ b/bfd/coffcode.h
@@ -3755,7 +3755,9 @@ coff_write_object_contents (bfd * abfd)
NUL-terminated. We use a temporary buffer so that we can still
sprintf all eight chars without splatting a terminating NUL
over the first byte of the following member (s_paddr). */
- char s_name_buf[SCNNMLEN + 1];
+ /* PR 21096: The +20 is to stop a bogus warning from gcc7 about
+ a possible buffer overflow. */
+ char s_name_buf[SCNNMLEN + 1 + 20];
/* An inherent limitation of the /nnnnnnn notation used to indicate
the offset of the long name in the string table is that we
@@ -3770,9 +3772,10 @@ coff_write_object_contents (bfd * abfd)
return FALSE;
}
- /* snprintf not strictly necessary now we've verified the value
- has less than eight ASCII digits, but never mind. */
- snprintf (s_name_buf, SCNNMLEN + 1, "/%lu", (unsigned long) string_size);
+ /* We do not need to use snprintf here as we have already verfied
+ that string_size is not too big, plus we have an overlarge
+ buffer, just in case. */
+ sprintf (s_name_buf, "/%lu", (unsigned long) string_size);
/* Then strncpy takes care of any padding for us. */
strncpy (section.s_name, s_name_buf, SCNNMLEN);
string_size += len + 1;
diff --git a/bfd/elf32-nds32.c b/bfd/elf32-nds32.c
index a84a6fd..3d510a0 100644
--- a/bfd/elf32-nds32.c
+++ b/bfd/elf32-nds32.c
@@ -14949,7 +14949,6 @@ nds32_elf_ex9_import_table (struct bfd_link_info *info)
{
int num = 0;
bfd_byte *contents;
- unsigned long insn;
FILE *ex9_import_file;
int update_ex9_table;
struct elf_nds32_link_hash_table *table;
@@ -14963,6 +14962,7 @@ nds32_elf_ex9_import_table (struct bfd_link_info *info)
/* Read instructions from the input file and build the list. */
while (!feof (ex9_import_file))
{
+ unsigned long insn;
char *code;
struct elf_nds32_insn_times_entry *ptr;
size_t nread;
@@ -14973,7 +14973,7 @@ nds32_elf_ex9_import_table (struct bfd_link_info *info)
break;
insn = bfd_getb32 (contents);
code = bfd_malloc (sizeof (char) * 9);
- snprintf (code, 9, "%08lx", insn);
+ snprintf (code, 9, "%08lx", (insn & 0xffffffff));
ptr = bfd_malloc (sizeof (struct elf_nds32_insn_times_entry));
ptr->string = code;
ptr->order = num;