summaryrefslogtreecommitdiffstats
path: root/bfd/elf32-spu.c
diff options
context:
space:
mode:
authorUlrich Weigand <uweigand@de.ibm.com>2009-05-14 14:42:36 +0000
committerUlrich Weigand <uweigand@de.ibm.com>2009-05-14 14:42:36 +0000
commitd342a8b15740545c4584db1957abaf12040ba646 (patch)
treeede1f671564ec4762c7f47774c3eee8117cb0180 /bfd/elf32-spu.c
parentcc210763ce675cfdc6bbf9fc1f98dd121cdf24ce (diff)
downloadppe42-binutils-d342a8b15740545c4584db1957abaf12040ba646.tar.gz
ppe42-binutils-d342a8b15740545c4584db1957abaf12040ba646.zip
* elf32-spu.c (spu_elf_relocate_section): Only encode overlay index
into addresses for relocation types that look at high bits. Remove special handling of relocation overflow warnings.
Diffstat (limited to 'bfd/elf32-spu.c')
-rw-r--r--bfd/elf32-spu.c10
1 files changed, 2 insertions, 8 deletions
diff --git a/bfd/elf32-spu.c b/bfd/elf32-spu.c
index 13bf5e2a5f..838f6fc44e 100644
--- a/bfd/elf32-spu.c
+++ b/bfd/elf32-spu.c
@@ -4705,7 +4705,6 @@ spu_elf_relocate_section (bfd *output_bfd,
bfd_reloc_status_type r;
bfd_boolean unresolved_reloc;
bfd_boolean warned;
- bfd_boolean overlay_encoded;
enum _stub_type stub_type;
r_symndx = ELF32_R_SYM (rel->r_info);
@@ -4790,7 +4789,6 @@ spu_elf_relocate_section (bfd *output_bfd,
is_ea_sym = (ea != NULL
&& sec != NULL
&& sec->output_section == ea);
- overlay_encoded = FALSE;
/* If this symbol is in an overlay area, we may need to relocate
to the overlay stub. */
@@ -4828,6 +4826,8 @@ spu_elf_relocate_section (bfd *output_bfd,
{
/* For soft icache, encode the overlay index into addresses. */
if (htab->params->ovly_flavour == ovly_soft_icache
+ && (r_type == R_SPU_ADDR16_HI
+ || r_type == R_SPU_ADDR32 || r_type == R_SPU_REL32)
&& !is_ea_sym)
{
unsigned int ovl = overlay_index (sec);
@@ -4835,7 +4835,6 @@ spu_elf_relocate_section (bfd *output_bfd,
{
unsigned int set_id = ((ovl - 1) >> htab->num_lines_log2) + 1;
relocation += set_id << 18;
- overlay_encoded = TRUE;
}
}
}
@@ -4888,11 +4887,6 @@ spu_elf_relocate_section (bfd *output_bfd,
switch (r)
{
case bfd_reloc_overflow:
- /* FIXME: We don't want to warn on most references
- within an overlay to itself, but this may silence a
- warning that should be reported. */
- if (overlay_encoded && sec == input_section)
- break;
if (!((*info->callbacks->reloc_overflow)
(info, (h ? &h->root : NULL), sym_name, howto->name,
(bfd_vma) 0, input_bfd, input_section, rel->r_offset)))
OpenPOWER on IntegriCloud