V850/BFD: Fix uninitialized `insn[4]' with R_V850_LONGJUMP warning
authorMaciej W. Rozycki <macro@wdc.com>
Thu, 6 Feb 2020 13:38:31 +0000 (13:38 +0000)
committerMaciej W. Rozycki <macro@wdc.com>
Thu, 6 Feb 2020 13:38:31 +0000 (13:38 +0000)
Correctly point at `insn[2]' rather than `insn[4]' in determining that
the third instruction from where an R_V850_LONGJUMP relocation points at
is not a recognized one, fixing a problem with commit 86aba9dbfa7e ("Add
linker relaxation to v850 toolchain") resulting in a build failure like:

.../bfd/elf32-v850.c: In function 'v850_elf_relax_section':
.../bfd/elf32-v850.c:3854:5: error: 'insn[4]' may be used uninitialized in this function [-Werror=maybe-uninitialized]
 3854 |     _bfd_error_handler
      |     ^~~~~~~~~~~~~~~~~~
 3855 |       /* xgettext:c-format */
      |       ~~~~~~~~~~~~~~~~~~~~~~~
 3856 |       (_("%pB: %#" PRIx64 ": warning: %s points to "
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 3857 |          "unrecognized insn %#x"),
      |          ~~~~~~~~~~~~~~~~~~~~~~~~~
 3858 |        abfd,
      |        ~~~~~
 3859 |        (uint64_t) (irel->r_offset + no_match),
      |        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 3860 |        "R_V850_LONGJUMP",
      |        ~~~~~~~~~~~~~~~~~~
 3861 |        insn[no_match]);
      |        ~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
Makefile:1608: recipe for target 'elf32-v850.lo' failed
make[4]: *** [elf32-v850.lo] Error 1

with GCC 10.

bfd/
* elf32-v850.c (v850_elf_relax_section): Fix the index used for
reporting an unrecognized instruction with R_V850_LONGJUMP.

bfd/ChangeLog
bfd/elf32-v850.c

index 25b6387dfc3729915ead0c92ca4447e949356b6c..95152add849b6fe87c85a77e75aadc04a7f33530 100644 (file)
@@ -1,3 +1,8 @@
+2020-02-06  Maciej W. Rozycki  <macro@wdc.com>
+
+       * elf32-v850.c (v850_elf_relax_section): Fix the index used for
+       reporting an unrecognized instruction with R_V850_LONGJUMP.
+
 2020-02-05  Alan Modra  <amodra@gmail.com>
 
        * elf64-ppc.c (ppc_stub_plt_branch): Match comment with reality.
index 667c4677958d9b2a7b97e677b59a51c40d8f07cc..21cd4f29375fbfe464aaef078f4a2a8de95be27f 100644 (file)
@@ -3837,7 +3837,7 @@ v850_elf_relax_section (bfd *abfd,
                  if (no_match < 0
                      && ((insn[2] & JMP_R_MASK) != JMP_R
                           || MOVEA_R2 (insn[1]) != JMP_R1 (insn[2])))
-                   no_match = 4;
+                   no_match = 2;
                }
              else
                {