* elf-m10300.c (mn10300_elf_relax_section): Extend previous fix to cover forward...
authorNick Clifton <nickc@redhat.com>
Wed, 28 Nov 2007 13:04:18 +0000 (13:04 +0000)
committerNick Clifton <nickc@redhat.com>
Wed, 28 Nov 2007 13:04:18 +0000 (13:04 +0000)
* ld-mn10300/i135409-5.s: New test case.  Check for relaxation to a 16-bit backward jump instruction.
* ld-mn10300/i135409-5.t: Linker script for the new test.
* ld-mn10300/i135409-5.d: Expected disassembly of new test.
* ld-mn10300/mn10300.exp: Run the new test.

bfd/ChangeLog
bfd/elf-m10300.c
ld/testsuite/ChangeLog
ld/testsuite/ld-mn10300/i135409-5.d [new file with mode: 0644]
ld/testsuite/ld-mn10300/i135409-5.s [new file with mode: 0644]
ld/testsuite/ld-mn10300/i135409-5.t [new file with mode: 0644]
ld/testsuite/ld-mn10300/mn10300.exp

index 8dc7003f3fe7e495cd441235771fd985e6540746..e78868e500e2607315b522b75bd77cb2b93348b9 100644 (file)
@@ -1,3 +1,8 @@
+2007-11-28  Nick Clifton  <nickc@redhat.com>
+
+       * elf-m10300.c (mn10300_elf_relax_section): Extend previous fix to
+       cover forward jumps.
+
 2007-11-21  Nick Clifton  <nickc@redhat.com>
 
        * elf-m10300.c (mn10300_elf_relax_section): Allow for alignment
index 2695217f4eb143ca921c84bcc9326f65f2b72490..af2fff3c140714b87470efdb973010458f4e48a2 100644 (file)
@@ -2736,7 +2736,7 @@ mn10300_elf_relax_section (bfd *abfd,
          bfd_vma aend = irel->r_offset;
 
          aend = BFD_ALIGN (aend, 1 << irel->r_addend);
-         adj = 2*adj - adj - 1;
+         adj = 2 * adj - adj - 1;
 
          /* Record the biggest adjustmnet.  Skip any alignment at the
             end of our section.  */
@@ -2963,7 +2963,7 @@ mn10300_elf_relax_section (bfd *abfd,
             able to relax.  */
          /* Account for jumps across alignment boundaries using
             align_gap_adjustment.  */
-         if (value < 0x8001 - align_gap_adjustment
+         if ((bfd_signed_vma) value < 0x8001 - (bfd_signed_vma) align_gap_adjustment
              && ((bfd_signed_vma) value > -0x8000 + (bfd_signed_vma) align_gap_adjustment))
            {
              unsigned char code;
index 7e8719ad93acd1898986d68a0ad30b96538aa2a6..fc7671ab82e6aa9793a90854298ec90b0f99c6db 100644 (file)
@@ -1,3 +1,11 @@
+2007-11-28  Nick Clifton  <nickc@redhat.com>
+
+       * ld-mn10300/i135409-5.s: New test case.  Check for relaxation to
+       a 16-bit backward jump instruction.
+       * ld-mn10300/i135409-5.t: Linker script for the new test.
+       * ld-mn10300/i135409-5.d: Expected disassembly of new test.
+       * ld-mn10300/mn10300.exp: Run the new test.
+
 2007-11-21  Nick Clifton  <nickc@redhat.com>
 
        * ld-mn10300/i135409-4.s: New test case.  Check for relaxation to
diff --git a/ld/testsuite/ld-mn10300/i135409-5.d b/ld/testsuite/ld-mn10300/i135409-5.d
new file mode 100644 (file)
index 0000000..dbff701
--- /dev/null
@@ -0,0 +1,7 @@
+
+tmpdir/i135409-5.x:     file format elf32-.*
+
+Disassembly of section .text:
+
+0+0700 <_start>:
+ 700:[         ]+cc 00 f9[     ]+jmp[  ]+0 \<L001\>
diff --git a/ld/testsuite/ld-mn10300/i135409-5.s b/ld/testsuite/ld-mn10300/i135409-5.s
new file mode 100644 (file)
index 0000000..23897e8
--- /dev/null
@@ -0,0 +1,8 @@
+       .text
+       .global _start
+_start:
+       jmp     L001
+
+       .section        .text1
+L001:
+       nop
diff --git a/ld/testsuite/ld-mn10300/i135409-5.t b/ld/testsuite/ld-mn10300/i135409-5.t
new file mode 100644 (file)
index 0000000..8b42814
--- /dev/null
@@ -0,0 +1,23 @@
+SECTIONS
+{
+       . = 0x0;
+       .text1 :
+       {
+               *(.text1)
+       }
+
+       . = 0x700;
+       .text :
+       {
+               *(.text)
+       }
+       . = 0x8100;
+       .bss :
+       {
+               *(.bss)
+       }
+       .data :
+       {
+               *(.data)
+       }
+}
index f67881f75afc488b5a71b807fe05f9c763cc86d7..edb1470db57fd074c253157e1c1fdb27c25da16a 100644 (file)
@@ -80,13 +80,21 @@ set mn10300_tests {
        "i135409-3.x"
     }
     {
-       "adjusting a 16 bit branch"
+       "adjusting a 16-bit forward branch"
        "-Ti135409-4.t -relax"
        ""
        { "i135409-4.s" }
        { {objdump -d i135409-4.d} }
        "i135409-4.x"
     }
+    {
+       "adjusting a 16-bit backward branch"
+       "-Ti135409-5.t -relax"
+       ""
+       { "i135409-5.s" }
+       { {objdump -d i135409-5.d} }
+       "i135409-5.x"
+    }
 }
 
 run_ld_link_tests $mn10300_tests