forked from Imagelibrary/binutils-gdb
H8 ld -r fix, and trunk 2000-04-03 patch.
This commit is contained in:
@@ -1,3 +1,11 @@
|
|||||||
|
2000-11-07 Alan Modra <alan@linuxcare.com.au>
|
||||||
|
|
||||||
|
* coff-h8300.c (special): Adjust reloc address.
|
||||||
|
|
||||||
|
From mainline 2000-04-03 Kazu Hirata <kazu@hxi.com>
|
||||||
|
* coff-h8300.c (h8300_reloc16_extra_cases): Add bsr:16 -> bsr:8 to
|
||||||
|
the R_PCRWORD_B case.
|
||||||
|
|
||||||
2000-11-05 Philip Blundell <philb@gnu.org>
|
2000-11-05 Philip Blundell <philb@gnu.org>
|
||||||
|
|
||||||
* elf32-arm.h (elf32_arm_merge_private_bfd_data): Always permit
|
* elf32-arm.h (elf32_arm_merge_private_bfd_data): Always permit
|
||||||
|
|||||||
@@ -192,14 +192,14 @@ h8300_coff_link_hash_table_create (abfd)
|
|||||||
return &ret->root.root;
|
return &ret->root.root;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* special handling for H8/300 relocs.
|
/* Special handling for H8/300 relocs.
|
||||||
We only come here for pcrel stuff and return normally if not an -r link.
|
We only come here for pcrel stuff and return normally if not an -r link.
|
||||||
When doing -r, we can't do any arithmetic for the pcrel stuff, because
|
When doing -r, we can't do any arithmetic for the pcrel stuff, because
|
||||||
the code in reloc.c assumes that we can manipulate the targets of
|
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,
|
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
|
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 */
|
the addend until the final link. */
|
||||||
|
|
||||||
static bfd_reloc_status_type
|
static bfd_reloc_status_type
|
||||||
special (abfd, reloc_entry, symbol, data, input_section, output_bfd,
|
special (abfd, reloc_entry, symbol, data, input_section, output_bfd,
|
||||||
@@ -215,6 +215,8 @@ special (abfd, reloc_entry, symbol, data, input_section, output_bfd,
|
|||||||
if (output_bfd == (bfd *) NULL)
|
if (output_bfd == (bfd *) NULL)
|
||||||
return bfd_reloc_continue;
|
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;
|
return bfd_reloc_ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -902,6 +904,11 @@ h8300_reloc16_extra_cases (abfd, link_info, link_order, reloc, data, src_ptr,
|
|||||||
bfd_put_8 (abfd, tmp, data + dst_address - 2);
|
bfd_put_8 (abfd, tmp, data + dst_address - 2);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 0x5c:
|
||||||
|
/* bsr:16 -> bsr:8 */
|
||||||
|
bfd_put_8 (abfd, 0x55, data + dst_address - 2);
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
abort ();
|
abort ();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user