diff options
-rw-r--r-- | bfd/ChangeLog | 8 | ||||
-rw-r--r-- | bfd/elf32-tilepro.c | 18 | ||||
-rw-r--r-- | bfd/elfxx-tilegx.c | 18 |
3 files changed, 16 insertions, 28 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 74e1619..50ea6fd 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,5 +1,13 @@ 2011-06-14 Alan Modra <amodra@gmail.com> + * elf32-tilepro.c (tilepro_elf_size_dynamic_sections): Don't use PTR. + (allocate_dynrelocs, readonly_dynrelocs): Replace PTR with void *. + Don't handle warning symbols here. + * elfxx-tilegx.c (tilegx_elf_size_dynamic_sections): As above. + (allocate_dynrelocs, readonly_dynrelocs): As above. + +2011-06-14 Alan Modra <amodra@gmail.com> + PR ld/12851 * elflink.c (_bfd_elf_gc_mark_extra_sections): New function. (elf_gc_sweep): Don't treat debug and sections like .comment diff --git a/bfd/elf32-tilepro.c b/bfd/elf32-tilepro.c index 154db75..f2aed9c 100644 --- a/bfd/elf32-tilepro.c +++ b/bfd/elf32-tilepro.c @@ -1969,7 +1969,7 @@ tilepro_elf_adjust_dynamic_symbol (struct bfd_link_info *info, dynamic relocs. */ static bfd_boolean -allocate_dynrelocs (struct elf_link_hash_entry *h, PTR inf) +allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf) { struct bfd_link_info *info; struct tilepro_elf_link_hash_table *htab; @@ -1979,12 +1979,6 @@ allocate_dynrelocs (struct elf_link_hash_entry *h, PTR inf) if (h->root.type == bfd_link_hash_indirect) return TRUE; - if (h->root.type == bfd_link_hash_warning) - /* When warning symbols are created, they **replace** the "real" - entry in the hash table, thus we never get to see the real - symbol in a hash traversal. So look at it now. */ - h = (struct elf_link_hash_entry *) h->root.u.i.link; - info = (struct bfd_link_info *) inf; htab = tilepro_elf_hash_table (info); BFD_ASSERT (htab != NULL); @@ -2170,14 +2164,11 @@ allocate_dynrelocs (struct elf_link_hash_entry *h, PTR inf) /* Find any dynamic relocs that apply to read-only sections. */ static bfd_boolean -readonly_dynrelocs (struct elf_link_hash_entry *h, PTR inf) +readonly_dynrelocs (struct elf_link_hash_entry *h, void *inf) { struct tilepro_elf_link_hash_entry *eh; struct tilepro_elf_dyn_relocs *p; - if (h->root.type == bfd_link_hash_warning) - h = (struct elf_link_hash_entry *) h->root.u.i.link; - eh = (struct tilepro_elf_link_hash_entry *) h; for (p = eh->dyn_relocs; p != NULL; p = p->next) { @@ -2313,7 +2304,7 @@ tilepro_elf_size_dynamic_sections (bfd *output_bfd, /* Allocate global sym .plt and .got entries, and space for global sym dynamic relocs. */ - elf_link_hash_traverse (&htab->elf, allocate_dynrelocs, (PTR) info); + elf_link_hash_traverse (&htab->elf, allocate_dynrelocs, info); if (elf_hash_table (info)->dynamic_sections_created) { @@ -2436,8 +2427,7 @@ tilepro_elf_size_dynamic_sections (bfd *output_bfd, /* If any dynamic relocs apply to a read-only section, then we need a DT_TEXTREL entry. */ if ((info->flags & DF_TEXTREL) == 0) - elf_link_hash_traverse (&htab->elf, readonly_dynrelocs, - (PTR) info); + elf_link_hash_traverse (&htab->elf, readonly_dynrelocs, info); if (info->flags & DF_TEXTREL) { diff --git a/bfd/elfxx-tilegx.c b/bfd/elfxx-tilegx.c index 3ec2d3f..c484562 100644 --- a/bfd/elfxx-tilegx.c +++ b/bfd/elfxx-tilegx.c @@ -2290,7 +2290,7 @@ tilegx_elf_adjust_dynamic_symbol (struct bfd_link_info *info, dynamic relocs. */ static bfd_boolean -allocate_dynrelocs (struct elf_link_hash_entry *h, PTR inf) +allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf) { struct bfd_link_info *info; struct tilegx_elf_link_hash_table *htab; @@ -2300,12 +2300,6 @@ allocate_dynrelocs (struct elf_link_hash_entry *h, PTR inf) if (h->root.type == bfd_link_hash_indirect) return TRUE; - if (h->root.type == bfd_link_hash_warning) - /* When warning symbols are created, they **replace** the "real" - entry in the hash table, thus we never get to see the real - symbol in a hash traversal. So look at it now. */ - h = (struct elf_link_hash_entry *) h->root.u.i.link; - info = (struct bfd_link_info *) inf; htab = tilegx_elf_hash_table (info); BFD_ASSERT (htab != NULL); @@ -2490,14 +2484,11 @@ allocate_dynrelocs (struct elf_link_hash_entry *h, PTR inf) /* Find any dynamic relocs that apply to read-only sections. */ static bfd_boolean -readonly_dynrelocs (struct elf_link_hash_entry *h, PTR inf) +readonly_dynrelocs (struct elf_link_hash_entry *h, void *inf) { struct tilegx_elf_link_hash_entry *eh; struct tilegx_elf_dyn_relocs *p; - if (h->root.type == bfd_link_hash_warning) - h = (struct elf_link_hash_entry *) h->root.u.i.link; - eh = (struct tilegx_elf_link_hash_entry *) h; for (p = eh->dyn_relocs; p != NULL; p = p->next) { @@ -2627,7 +2618,7 @@ tilegx_elf_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED, /* Allocate global sym .plt and .got entries, and space for global sym dynamic relocs. */ - elf_link_hash_traverse (&htab->elf, allocate_dynrelocs, (PTR) info); + elf_link_hash_traverse (&htab->elf, allocate_dynrelocs, info); if (elf_hash_table (info)->dynamic_sections_created) { @@ -2750,8 +2741,7 @@ tilegx_elf_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED, /* If any dynamic relocs apply to a read-only section, then we need a DT_TEXTREL entry. */ if ((info->flags & DF_TEXTREL) == 0) - elf_link_hash_traverse (&htab->elf, readonly_dynrelocs, - (PTR) info); + elf_link_hash_traverse (&htab->elf, readonly_dynrelocs, info); if (info->flags & DF_TEXTREL) { |