This is the mail archive of the binutils-cvs@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] MIPS/BFD: Don't stop processing on a cross-mode jump conversion error


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

commit 5f68df25f869d74f0235276a81536392fd376e6d
Author: Maciej W. Rozycki <macro@imgtec.com>
Date:   Tue Jun 21 14:06:27 2016 +0100

    MIPS/BFD: Don't stop processing on a cross-mode jump conversion error
    
    As with commit ed53407eec9e ("MIPS/BFD: Don't stop processing on
    `bfd_reloc_outofrange'") don't bail out right away and instead continue
    processing on a cross-mode jump conversion error, so that any further
    issues are also reported.  Adjust message formatting accordingly, using
    `%X' to abort processing at conclusion.  Remove the full stop from the
    end of the message, for consistency across error reporting.
    
    Adjust the corresponding test case accordingly and make it trigger the
    error twice.
    
    	bfd/
    	* elfxx-mips.c (mips_elf_perform_relocation): Call
    	`info->callbacks->einfo' rather than `*_bfd_error_handler' and
    	use the `%X%H' format for the cross-mode jump conversion error
    	message.  Remove the full stop from the end of the message.
    	Continue processing rather than returning failure.
    
    	ld/
    	* testsuite/ld-mips-elf/mode-change-error-1a.s: Trigger an error
    	twice rather than once.
    	* testsuite/ld-mips-elf/mode-change-error-1.d: Adjust
    	accordingly.  Remove the full stop from the end of the message.

Diff:
---
 bfd/ChangeLog                                   |  8 ++++++++
 bfd/elfxx-mips.c                                | 12 +++++-------
 ld/ChangeLog                                    |  7 +++++++
 ld/testsuite/ld-mips-elf/mode-change-error-1.d  |  5 ++++-
 ld/testsuite/ld-mips-elf/mode-change-error-1a.s |  3 +++
 5 files changed, 27 insertions(+), 8 deletions(-)

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 2b87660..fe19a01 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,11 @@
+2016-06-21  Maciej W. Rozycki  <macro@imgtec.com>
+
+	* elfxx-mips.c (mips_elf_perform_relocation): Call
+	`info->callbacks->einfo' rather than `*_bfd_error_handler' and
+	use the `%X%H' format for the cross-mode jump conversion error
+	message.  Remove the full stop from the end of the message.
+	Continue processing rather than returning failure.
+
 2016-06-21  Graham Markall  <graham.markall@embecosm.com>
 
 	* archures.c: Remove bfd_mach_arc_nps400.
diff --git a/bfd/elfxx-mips.c b/bfd/elfxx-mips.c
index e2f4749..3b7723e 100644
--- a/bfd/elfxx-mips.c
+++ b/bfd/elfxx-mips.c
@@ -6273,13 +6273,11 @@ mips_elf_perform_relocation (struct bfd_link_info *info,
          convert J or JALS to JALX.  */
       if (!ok)
 	{
-	  (*_bfd_error_handler)
-	    (_("%B: %A+0x%lx: Unsupported jump between ISA modes; consider recompiling with interlinking enabled."),
-	     input_bfd,
-	     input_section,
-	     (unsigned long) relocation->r_offset);
-	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  info->callbacks->einfo
+	    (_("%X%H: Unsupported jump between ISA modes; "
+	       "consider recompiling with interlinking enabled\n"),
+	     input_bfd, input_section, relocation->r_offset);
+	  return TRUE;
 	}
 
       /* Make this the JALX opcode.  */
diff --git a/ld/ChangeLog b/ld/ChangeLog
index f1c1fe7..7a2d781 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,10 @@
+2016-06-21  Maciej W. Rozycki  <macro@imgtec.com>
+
+	* testsuite/ld-mips-elf/mode-change-error-1a.s: Trigger an error
+	twice rather than once.
+	* testsuite/ld-mips-elf/mode-change-error-1.d: Adjust
+	accordingly.  Remove the full stop from the end of the message.
+
 2016-06-21  Graham Markall  <graham.markall@embecosm.com>
 
 	* testsuite/ld-arc/nps-1a.d: Use -mcpu=arc700 -mnps400.
diff --git a/ld/testsuite/ld-mips-elf/mode-change-error-1.d b/ld/testsuite/ld-mips-elf/mode-change-error-1.d
index 885c628..cab1ddb 100644
--- a/ld/testsuite/ld-mips-elf/mode-change-error-1.d
+++ b/ld/testsuite/ld-mips-elf/mode-change-error-1.d
@@ -2,4 +2,7 @@
 #source: mode-change-error-1a.s
 #source: mode-change-error-1b.s
 #ld: -e 0x8000000
-#error: .*: Unsupported jump between ISA modes; consider recompiling with interlinking enabled.
+#error: \A[^\n]*: In function `main':\n
+#error:   \(\.text\+0x0\): Unsupported jump between ISA modes; consider recompiling with interlinking enabled\n
+#error:   [^\n]*: In function `main':\n
+#error:   \(\.text\+0x8\): Unsupported jump between ISA modes; consider recompiling with interlinking enabled\Z
diff --git a/ld/testsuite/ld-mips-elf/mode-change-error-1a.s b/ld/testsuite/ld-mips-elf/mode-change-error-1a.s
index 44bdb1f..d52caf5 100644
--- a/ld/testsuite/ld-mips-elf/mode-change-error-1a.s
+++ b/ld/testsuite/ld-mips-elf/mode-change-error-1a.s
@@ -13,5 +13,8 @@ main:
 	j	doit
 	nop
 
+	j	doit
+	nop
+
 	.end	main
 	.size	main, .-main


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]