2010-08-09 Catherine Moore <clm@codesourcery.com>
authorCatherine Moore <clm@redhat.com>
Mon, 9 Aug 2010 19:54:13 +0000 (19:54 +0000)
committerCatherine Moore <clm@redhat.com>
Mon, 9 Aug 2010 19:54:13 +0000 (19:54 +0000)
        * elfxx-mips.c (mips_elf_perform_relocation): Improve
        interlinking error message.

2010-08-09  Catherine Moore  <clm@codesourcery.com>

        * ld-mips-elf/mode-change-error-1.d: New.
        * ld-mips-elf/mode-change-error-1a.s: New.
        * ld-mips-elf/mode-change-error-1b.s: New.
        * ld-mips-elf/mips-elf.exp: Run new test.

bfd/ChangeLog
bfd/elfxx-mips.c
ld/testsuite/ChangeLog
ld/testsuite/ld-mips-elf/mips-elf.exp
ld/testsuite/ld-mips-elf/mode-change-error-1.d [new file with mode: 0644]
ld/testsuite/ld-mips-elf/mode-change-error-1a.s [new file with mode: 0644]
ld/testsuite/ld-mips-elf/mode-change-error-1b.s [new file with mode: 0644]

index e79fa19f891f89eb6abe256584387689efd9ca70..c1c9054c9501eeb11316eb863c02f813efc4f50d 100644 (file)
@@ -1,3 +1,8 @@
+2010-08-09  Catherine Moore  <clm@codesourcery.com>
+
+       * elfxx-mips.c (mips_elf_perform_relocation): Improve
+       interlinking error message.
+
 2010-08-06  Alan Modra  <amodra@gmail.com>
 
        * elf64-ppc.c (ha_reloc_match): Allow matches to other than r2.
index 7b89a83c615340e82bd0fef5716fb107d0a0bcc2..e9a9c27e100eccb27e222984f6b24168d0e1abbe 100644 (file)
@@ -5641,7 +5641,7 @@ mips_elf_perform_relocation (struct bfd_link_info *info,
       if (!ok)
        {
          (*_bfd_error_handler)
-           (_("%B: %A+0x%lx: jump to stub routine which is not jal"),
+           (_("%B: %A+0x%lx: Direct jumps between ISA modes are not allowed; consider recompiling with interlinking enabled."),
             input_bfd,
             input_section,
             (unsigned long) relocation->r_offset);
index f5b05fa3cc1a9c6719d9df667d04953bb8891646..b5250a5e71e4b48a64e16acc82c0ba538a6c474c 100644 (file)
@@ -1,3 +1,10 @@
+2010-08-09  Catherine Moore  <clm@codesourcery.com>
+
+       * ld-mips-elf/mode-change-error-1.d: New.
+       * ld-mips-elf/mode-change-error-1a.s: New.
+       * ld-mips-elf/mode-change-error-1b.s: New.
+       * ld-mips-elf/mips-elf.exp: Run new test.
+
 2010-08-06  Alan Modra  <amodra@gmail.com>
 
        * ld-powerpc/tocopt.s, * ld-powerpc/tocopt.d: New test.
index 7b1a57b76190388d4e084eaec98c56a952de16ad..6c283e206b19e80368f7dcee1f461d840eb8bc3d 100644 (file)
@@ -322,6 +322,8 @@ if {$has_newabi} {
     run_dump_test "jalbal"
 }
 
+run_dump_test "mode-change-error-1"
+
 run_dump_test "mips16-hilo"
 if {$has_newabi} {
     run_dump_test "mips16-hilo-n32"
diff --git a/ld/testsuite/ld-mips-elf/mode-change-error-1.d b/ld/testsuite/ld-mips-elf/mode-change-error-1.d
new file mode 100644 (file)
index 0000000..55e9027
--- /dev/null
@@ -0,0 +1,5 @@
+#name: Mode Change Error 1
+#source: mode-change-error-1a.s
+#source: mode-change-error-1b.s
+#ld: -e 0x8000000
+#error: .*: Direct jumps between ISA modes are not allowed; consider recompiling with interlinking enabled.
diff --git a/ld/testsuite/ld-mips-elf/mode-change-error-1a.s b/ld/testsuite/ld-mips-elf/mode-change-error-1a.s
new file mode 100644 (file)
index 0000000..44bdb1f
--- /dev/null
@@ -0,0 +1,17 @@
+       .option pic0
+       .text
+       .align  4
+       .globl  main
+       .set    nomips16
+       .ent    main
+       .type   main, @function
+main:
+       .mask   0x80000000,-4
+       .fmask  0x00000000,0
+       .set    noreorder
+       
+       j       doit
+       nop
+
+       .end    main
+       .size   main, .-main
diff --git a/ld/testsuite/ld-mips-elf/mode-change-error-1b.s b/ld/testsuite/ld-mips-elf/mode-change-error-1b.s
new file mode 100644 (file)
index 0000000..84e15d6
--- /dev/null
@@ -0,0 +1,18 @@
+       .text
+       .align  4
+       .globl  doit
+       .set    mips16
+       .ent    doit
+       .type   doit, @function
+doit:
+       .frame  $sp,0,$31
+       .mask   0x00000000,0
+       .fmask  0x00000000,0
+       sll     $2,$4,1
+       sll     $4,$4,3
+       .set    noreorder
+       .set    nomacro
+       j       $31
+       addu    $2,$2,$4
+       .end    doit
+       .size   doit, .-doit