+2014-08-01  Takashi Yoshii  <yoshii.takashi@renesas.com>
+
+       PR 10373
+       * elf32-sh.c (sh_elf_relax_section): Add jmp to bra relaxing.
+
 2014-07-29  Matthew Fortune  <matthew.fortune@imgtec.com>
 
        * elfxx-mips.c (ABI_O32_P, MIPS_ELF_ABIFLAGS_SECTION_NAME_P): New macro.
 
       elf_section_data (sec)->this_hdr.contents = contents;
       symtab_hdr->contents = (unsigned char *) isymbuf;
 
-      /* Replace the jsr with a bsr.  */
+      /* Replace the jmp/jsr with a bra/bsr.  */
 
       /* Change the R_SH_USES reloc into an R_SH_IND12W reloc, and
-        replace the jsr with a bsr.  */
+        replace the jmp/jsr with a bra/bsr.  */
       irel->r_info = ELF32_R_INFO (ELF32_R_SYM (irelfn->r_info), R_SH_IND12W);
       /* We used to test (ELF32_R_SYM (irelfn->r_info) < symtab_hdr->sh_info)
         here, but that only checks if the symbol is an external symbol,
       /* We can't fully resolve this yet, because the external
         symbol value may be changed by future relaxing.  We let
         the final link phase handle it.  */
-      bfd_put_16 (abfd, (bfd_vma) 0xb000, contents + irel->r_offset);
+      if (bfd_get_16 (abfd, contents + irel->r_offset) & 0x0020)
+       bfd_put_16 (abfd, (bfd_vma) 0xa000, contents + irel->r_offset);
+      else
+       bfd_put_16 (abfd, (bfd_vma) 0xb000, contents + irel->r_offset);
 
       irel->r_addend = -4;
 
 
+2014-08-01  Takashi Yoshii  <yoshii.takashi@renesas.com>
+
+       PR 10373
+       * ld-sh/sh1.s: Add jmp relaxing test.
+       * ld-sh/sh.exp: Likewise.
+
 2014-08-01  Takashi Yoshii  <yoshii.takashi@renesas.com>
 
        PR 10378
 
            verbose "bad output from nm"
            fail $testsimple
        } else {
-           if {$nm_output(bar) != $nm_output(foo) + 4} {
+           if {$nm_output(bar) != $nm_output(foo) + 0xc} {
                send_log "foo == $nm_output(foo)\n"
                verbose "foo == $nm_output(foo)"
                send_log "bar == $nm_output(bar)\n"
 }
 
 if {![ld_assemble $as "-relax tmpdir/start.s" tmpdir/start.o] \
-    || ![ld_compile $CC "-O -mrelax $srcdir/$subdir/sh2.c" tmpdir/sh2.o]} {
+    || ![ld_compile $CC "-O -mrelax -foptimize-sibling-calls $srcdir/$subdir/sh2.c" tmpdir/sh2.o]} {
     unresolved $testlink
     unresolved $testjsr
     unresolved $testrun
 send_log "$objdump -d tmpdir/sh2\n"
 verbose "$objdump -d tmpdir/sh2"
 catch "exec $objdump -d tmpdir/sh2" exec_output
-if [string match "*jsr*" $exec_output] {
+if {[string match "*jsr*" $exec_output]
+    || [string match "*jmp*" $exec_output]} {
     fail $testjsr
 } else {
     pass $testjsr