[binutils-gdb] V850/BFD: Fix uninitialized `insn[4]' with R_V850_LONGJUMP warning

Maciej W.Rozycki macro@sourceware.org
Thu Feb 6 13:39:00 GMT 2020


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

commit b93a662bcf1eaebac6af70684fbc5bd510fcadcf
Author: Maciej W. Rozycki <macro@wdc.com>
Date:   Thu Feb 6 13:38:31 2020 +0000

    V850/BFD: Fix uninitialized `insn[4]' with R_V850_LONGJUMP warning
    
    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.

Diff:
---
 bfd/ChangeLog    | 5 +++++
 bfd/elf32-v850.c | 2 +-
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 25b6387..95152ad 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -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.
diff --git a/bfd/elf32-v850.c b/bfd/elf32-v850.c
index 667c467..21cd4f2 100644
--- a/bfd/elf32-v850.c
+++ b/bfd/elf32-v850.c
@@ -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
 		{



More information about the Binutils-cvs mailing list