Fix for H8 ld problem.
authorAlan Modra <amodra@gmail.com>
Tue, 7 Nov 2000 05:04:04 +0000 (05:04 +0000)
committerAlan Modra <amodra@gmail.com>
Tue, 7 Nov 2000 05:04:04 +0000 (05:04 +0000)
bfd/ChangeLog
bfd/coff-h8300.c

index 6dc20e5484cbb3ba0d5b72a70ce97a0ecb4cd74a..be2098e234d18c77cfcf51df55a2d9946a526842 100644 (file)
@@ -1,3 +1,7 @@
+2000-11-07  Alan Modra  <alan@linuxcare.com.au>
+
+       * coff-h8300.c (special): Adjust reloc address.
+
 2000-11-06  Steve Ellcey <sje@cup.hp.com>
 
        * archures.c (bfd_mach_ia64_elf64, bfd_mach_ia64_elf32): Add defines
index 16d3aaed154bef84cde86b6c13abcbafc6c8ea87..acde6300a9652bd97d393d7e3fbac3af1649b190 100644 (file)
@@ -198,7 +198,7 @@ h8300_coff_link_hash_table_create (abfd)
    the code in reloc.c assumes that we can manipulate the targets of
    the pcrel branches.  This isn't so, since the H8/300 can do relaxing, 
    which means that the gap after the instruction may not be enough to
-   contain the offset required for the branch, so we have to use the only
+   contain the offset required for the branch, so we have to use only
    the addend until the final link.  */
 
 static bfd_reloc_status_type
@@ -215,6 +215,8 @@ special (abfd, reloc_entry, symbol, data, input_section, output_bfd,
   if (output_bfd == (bfd *) NULL)
     return bfd_reloc_continue;
 
+  /* Adjust the reloc address to that in the output section.  */
+  reloc_entry->address += input_section->output_offset;
   return bfd_reloc_ok;
 }
 
@@ -888,6 +890,7 @@ h8300_reloc16_extra_cases (abfd, link_info, link_order, reloc, data, src_ptr,
          /* Write it.  */
          bfd_put_8 (abfd, tmp, data + dst_address - 2);
          break;
+
        case 0x5c:
          /* bsr:16 -> bsr:8 */
          bfd_put_8 (abfd, 0x55, data + dst_address - 2);