gas warning fixes
authorAlan Modra <amodra@gmail.com>
Tue, 25 Aug 2020 00:27:58 +0000 (09:57 +0930)
committerAlan Modra <amodra@gmail.com>
Tue, 25 Aug 2020 13:36:50 +0000 (23:06 +0930)
Some versions of gcc with -Werror=format-overflow complain about using
a perfectly good 7 char buffer for "r%dr%d" when the int is between 0
and 64, apparently not seeing the value range.

note: __builtin___sprintf_chk output between 5 and 24 bytes into a destination of size 7

* config/tc-arc.c (declare_register_set): Avoid false positive
format-overflow warning.
* config/tc-epiphany.c (md_assemble): Likewise.
* config/tc-mips.c (md_begin): Likewise.
* config/tc-mmix.c (mmix_md_begin): Likewise.
* config/tc-nds32.c (nds32_elf_append_relax_relocs): Avoid false
positive "may be used uninitialized" warning.

gas/ChangeLog
gas/config/tc-arc.c
gas/config/tc-epiphany.c
gas/config/tc-mips.c
gas/config/tc-mmix.c
gas/config/tc-nds32.c

index b6f4eddaa091b0a3d15a623d20642a0bf6a71e71..f8d049bb8d40dc579e6d981070b319f534a07669 100644 (file)
@@ -1,3 +1,13 @@
+2020-08-25  Alan Modra  <amodra@gmail.com>
+
+       * config/tc-arc.c (declare_register_set): Avoid false positive
+       format-overflow warning.
+       * config/tc-epiphany.c (md_assemble): Likewise.
+       * config/tc-mips.c (md_begin): Likewise.
+       * config/tc-mmix.c (mmix_md_begin): Likewise.
+       * config/tc-nds32.c (nds32_elf_append_relax_relocs): Avoid false
+       positive "may be used uninitialized" warning.
+
 2020-08-24  Cooper Qu  <cooper.qu@linux.alibaba.com>
 
        * config/tc-csky.c (csky_archs): Add item for CK860,
index 32369a56a1762acd5b0807b377cb59963ada33cd..bafa2a5eec9908831b382acdcd5d4392ae56ec3c 100644 (file)
@@ -2562,7 +2562,7 @@ declare_register_set (void)
   int i;
   for (i = 0; i < 64; ++i)
     {
-      char name[7];
+      char name[32];
 
       sprintf (name, "r%d", i);
       declare_register (name, i);
index 836b23b710305f54098326dfc35a518614148a54..552f7dac1500280a9a96631364ed6158ca166209 100644 (file)
@@ -550,7 +550,7 @@ md_assemble (char *str)
 
   if (push && regmask)
     {
-      char buff[20];
+      char buff[32];
       int i,p ATTRIBUTE_UNUSED;
 
       epiphany_assemble ("mov r15,4");
@@ -570,7 +570,7 @@ md_assemble (char *str)
     }
   else if (pop && regmask)
     {
-      char buff[20];
+      char buff[32];
       int i,p;
 
       epiphany_assemble ("mov r15,4");
index b1786824f99899abcc1c3e8b9d80600305acdc92..00e9eceef15ea68ddda3ad981fbac318c5f9218b 100644 (file)
@@ -3806,7 +3806,7 @@ md_begin (void)
 
   for (i = 0; i < 32; i++)
     {
-      char regname[6];
+      char regname[16];
 
       /* R5900 VU0 floating-point register.  */
       sprintf (regname, "$vf%d", i);
index c469a62f0ecf476181b128a7ed4126c62361c5b7..82a9f8318b950c8de4eeab17fd2d43662f49bbad 100644 (file)
@@ -780,7 +780,7 @@ mmix_md_begin (void)
   /* We always insert the ordinary registers 0..255 as registers.  */
   for (i = 0; i < 256; i++)
     {
-      char buf[5];
+      char buf[16];
 
       /* Alternatively, we could diddle with '$' and the following number,
         but keeping the registers as symbols helps keep parsing simple.  */
index 62bbad7409297076e93752918ca7fb9806ad954f..b23f32676c59ad1302a26aea4d5f4dc0b3488861 100644 (file)
@@ -6053,6 +6053,7 @@ nds32_elf_append_relax_relocs (const char *key, const void *value)
       fixup_size = fixup_now->size;
 
       /* Insert all fixup.  */
+      pcrel = 0;
       while (fixup_size != 0 && fixup_now->offset == offset)
        {
          /* Set the real instruction size in element.  */