PR ld/11133

* elf32-cr16.c (elf32_cr16_gc_mark_hook): Call _bfd_elf_gc_mark_hook.
	* elf32-microblaze.c (microblaze_elf_gc_mark_hook): Likewise.
	* elf64-ppc.c (ppc64_elf_gc_mark_hook): Likewise.
This commit is contained in:
Alan Modra 2010-01-08 05:55:10 +00:00
parent d023c380db
commit fb34365b48
4 changed files with 23 additions and 48 deletions

View File

@ -1,3 +1,10 @@
2010-01-08 Alan Modra <amodra@gmail.com>
PR ld/11133
* elf32-cr16.c (elf32_cr16_gc_mark_hook): Call _bfd_elf_gc_mark_hook.
* elf32-microblaze.c (microblaze_elf_gc_mark_hook): Likewise.
* elf64-ppc.c (ppc64_elf_gc_mark_hook): Likewise.
2010-01-07 H.J. Lu <hongjiu.lu@intel.com> 2010-01-07 H.J. Lu <hongjiu.lu@intel.com>
PR ld/11138 PR ld/11138

View File

@ -1,5 +1,5 @@
/* BFD back-end for National Semiconductor's CR16 ELF /* BFD back-end for National Semiconductor's CR16 ELF
Copyright 2007, 2008, 2009 Free Software Foundation, Inc. Copyright 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
Written by M R Swami Reddy. Written by M R Swami Reddy.
This file is part of BFD, the Binary File Descriptor library. This file is part of BFD, the Binary File Descriptor library.
@ -2287,26 +2287,12 @@ elf32_cr16_relax_section (bfd *abfd, asection *sec,
static asection * static asection *
elf32_cr16_gc_mark_hook (asection *sec, elf32_cr16_gc_mark_hook (asection *sec,
struct bfd_link_info *info ATTRIBUTE_UNUSED, struct bfd_link_info *info,
Elf_Internal_Rela *rel ATTRIBUTE_UNUSED, Elf_Internal_Rela *rel,
struct elf_link_hash_entry *h, struct elf_link_hash_entry *h,
Elf_Internal_Sym *sym) Elf_Internal_Sym *sym)
{ {
if (h == NULL) return _bfd_elf_gc_mark_hook (sec, info, rel, h, sym);
return bfd_section_from_elf_index (sec->owner, sym->st_shndx);
switch (h->root.type)
{
case bfd_link_hash_defined:
case bfd_link_hash_defweak:
return h->root.u.def.section;
case bfd_link_hash_common:
return h->root.u.c.p->section;
default:
return NULL;
}
} }
/* Update the got entry reference counts for the section being removed. */ /* Update the got entry reference counts for the section being removed. */

View File

@ -1,6 +1,6 @@
/* Xilinx MicroBlaze-specific support for 32-bit ELF /* Xilinx MicroBlaze-specific support for 32-bit ELF
Copyright 2009 Free Software Foundation, Inc. Copyright 2009, 2010 Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library. This file is part of BFD, the Binary File Descriptor library.
@ -1819,38 +1819,20 @@ microblaze_elf_relax_section (bfd *abfd,
static asection * static asection *
microblaze_elf_gc_mark_hook (asection *sec, microblaze_elf_gc_mark_hook (asection *sec,
struct bfd_link_info * info ATTRIBUTE_UNUSED, struct bfd_link_info * info,
Elf_Internal_Rela * rel, Elf_Internal_Rela * rel,
struct elf_link_hash_entry * h, struct elf_link_hash_entry * h,
Elf_Internal_Sym * sym) Elf_Internal_Sym * sym)
{ {
if (h != NULL) if (h != NULL)
{ switch (ELF32_R_TYPE (rel->r_info))
switch (ELF32_R_TYPE (rel->r_info)) {
{ case R_MICROBLAZE_GNU_VTINHERIT:
case R_MICROBLAZE_GNU_VTINHERIT: case R_MICROBLAZE_GNU_VTENTRY:
case R_MICROBLAZE_GNU_VTENTRY: return NULL;
break; }
default: return _bfd_elf_gc_mark_hook (sec, info, rel, h, sym);
switch (h->root.type)
{
case bfd_link_hash_defined:
case bfd_link_hash_defweak:
return h->root.u.def.section;
case bfd_link_hash_common:
return h->root.u.c.p->section;
default:
break;
}
}
}
else
return bfd_section_from_elf_index (sec->owner, sym->st_shndx);
return NULL;
} }
/* Update the got entry reference counts for the section being removed. */ /* Update the got entry reference counts for the section being removed. */

View File

@ -1,6 +1,6 @@
/* PowerPC64-specific support for 64-bit ELF. /* PowerPC64-specific support for 64-bit ELF.
Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
2009 Free Software Foundation, Inc. 2009, 2010 Free Software Foundation, Inc.
Written by Linus Nordberg, Swox AB <info@swox.com>, Written by Linus Nordberg, Swox AB <info@swox.com>,
based on elf32-ppc.c by Ian Lance Taylor. based on elf32-ppc.c by Ian Lance Taylor.
Largely rewritten by Alan Modra. Largely rewritten by Alan Modra.
@ -5624,7 +5624,7 @@ ppc64_elf_gc_mark_dynamic_ref (struct elf_link_hash_entry *h, void *inf)
static asection * static asection *
ppc64_elf_gc_mark_hook (asection *sec, ppc64_elf_gc_mark_hook (asection *sec,
struct bfd_link_info *info ATTRIBUTE_UNUSED, struct bfd_link_info *info,
Elf_Internal_Rela *rel, Elf_Internal_Rela *rel,
struct elf_link_hash_entry *h, struct elf_link_hash_entry *h,
Elf_Internal_Sym *sym) Elf_Internal_Sym *sym)
@ -5683,7 +5683,7 @@ ppc64_elf_gc_mark_hook (asection *sec,
break; break;
default: default:
break; return _bfd_elf_gc_mark_hook (sec, info, rel, h, sym);
} }
} }
} }