MIPS/BFD: Don't stop processing on a cross-mode jump conversion error
authorMaciej W. Rozycki <macro@imgtec.com>
Tue, 21 Jun 2016 13:06:27 +0000 (14:06 +0100)
committerMaciej W. Rozycki <macro@imgtec.com>
Tue, 21 Jun 2016 13:18:23 +0000 (14:18 +0100)
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.

bfd/ChangeLog
bfd/elfxx-mips.c
ld/ChangeLog
ld/testsuite/ld-mips-elf/mode-change-error-1.d
ld/testsuite/ld-mips-elf/mode-change-error-1a.s

index 2b87660..fe19a01 100644 (file)
@@ -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.
index e2f4749..3b7723e 100644 (file)
@@ -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.  */
index f1c1fe7..7a2d781 100644 (file)
@@ -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.
index 885c628..cab1ddb 100644 (file)
@@ -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
index 44bdb1f..d52caf5 100644 (file)
@@ -13,5 +13,8 @@ main:
        j       doit
        nop
 
+       j       doit
+       nop
+
        .end    main
        .size   main, .-main