Index: bfd/elf32-h8300.c =================================================================== RCS file: /cvs/src/src/bfd/elf32-h8300.c,v retrieving revision 1.28 diff -u -4 -r1.28 elf32-h8300.c --- bfd/elf32-h8300.c 25 Jun 2003 06:40:24 -0000 1.28 +++ bfd/elf32-h8300.c 1 Jul 2003 12:19:53 -0000 @@ -182,9 +182,9 @@ FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont,/* complain_on_overflow */ special, /* special_function */ - "R_H8_DIR32", /* name */ + "R_H8_DIR32A16", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ 0xffffffff, /* dst_mask */ FALSE), /* pcrel_offset */ @@ -1074,8 +1074,10 @@ /* Fix the relocation's type. */ irel->r_info = ELF32_R_INFO (ELF32_R_SYM (irel->r_info), R_H8_DIR8); + /* Move the relocation */ + irel->r_offset--; /* Delete two bytes of data. */ if (!elf32_h8_relax_delete_bytes (abfd, sec, irel->r_offset + 1, 2)) @@ -1186,9 +1188,9 @@ bfd_put_8 (abfd, code, contents + irel->r_offset - 1); /* Fix the relocation's type. */ irel->r_info = ELF32_R_INFO (ELF32_R_SYM (irel->r_info), - R_H8_DIR16A8); + R_H8_DIR16); /* Delete two bytes of data. */ if (!elf32_h8_relax_delete_bytes (abfd, sec, irel->r_offset + 1, 2))