diff options
author | Alan Modra <amodra@gmail.com> | 2006-09-28 13:27:33 +0000 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2006-09-28 13:27:33 +0000 |
commit | 07adf1816db141e2cc9c0cd5d9a6aa1a712bc979 (patch) | |
tree | 4541ebcbccb2a18eacf746119e3f2b13cfc0359e /bfd/elf32-iq2000.c | |
parent | d8ad03e99d4018acd2e20787cf9b772bf80966f0 (diff) | |
download | fsf-binutils-gdb-07adf1816db141e2cc9c0cd5d9a6aa1a712bc979.zip fsf-binutils-gdb-07adf1816db141e2cc9c0cd5d9a6aa1a712bc979.tar.gz fsf-binutils-gdb-07adf1816db141e2cc9c0cd5d9a6aa1a712bc979.tar.bz2 |
* elflink.c (_bfd_elf_gc_mark_hook): New function.
* elf-bfd.h (_bfd_elf_gc_mark_hook): Declare.
* elfxx-target.h (elf_backend_gc_mark_hook): Default to above.
* elf-m10300.c (mn10300_elf_gc_mark_hook): Use _bfd_elf_gc_mark_hook.
* elf32-arm.c (elf32_arm_gc_mark_hook): Likewise.
* elf32-cris.c (cris_elf_gc_mark_hook): Likewise.
* elf32-hppa.c (elf32_hppa_gc_mark_hook): Likewise.
* elf32-i386.c (elf_i386_gc_mark_hook): Likewise.
* elf32-m32r.c (m32r_elf_gc_mark_hook): Likewise.
* elf32-m68k.c (elf_m68k_gc_mark_hook): Likewise.
* elf32-mcore.c (mcore_elf_gc_mark_hook): Likewise.
* elf32-ppc.c (ppc_elf_gc_mark_hook): Likewise.
* elf32-s390.c (elf_s390_gc_mark_hook): Likewise.
* elf32-score.c (_bfd_score_elf_gc_mark_hook): Likewise.
* elf32-sh.c (sh_elf_gc_mark_hook): Likewise.
* elf32-vax.c (elf_vax_gc_mark_hook): Likewise.
* elf32-xtensa.c (elf_xtensa_gc_mark_hook): Likewise.
* elf64-mmix.c (mmix_elf_gc_mark_hook): Likewise.
* elf64-s390.c (elf_s390_gc_mark_hook): Likewise.
* elf64-x86-64.c (elf64_x86_64_gc_mark_hook): Likewise.
* elfxx-mips.c (_bfd_mips_elf_gc_mark_hook): Likewise.
* elfxx-sparc.c (_bfd_sparc_elf_gc_mark_hook): Likewise.
* elf32-bfin.c (bfin_gc_mark_hook): Likewise.
(bfinfdpic_gc_sweep_hook): Delete.
(elf_backend_gc_sweep_hook): Don't define for elf32-bfinfdpic.
* elf32-d10v.c (elf32_d10v_gc_mark_hook): Use _bfd_elf_gc_mark_hook.
(elf32_d10v_gc_sweep_hook): Delete.
(elf_backend_gc_sweep_hook): Don't define.
* elf32-fr30.c (fr30_elf_gc_mark_hook): Use _bfd_elf_gc_mark_hook.
(fr30_elf_gc_sweep_hook): Delete.
(elf_backend_gc_sweep_hook): Don't define.
* elf32-frv.c (elf32_frv_gc_mark_hook): Use _bfd_elf_gc_mark_hook.
(elf32_frv_gc_sweep_hook): Delete.
(elf_backend_gc_sweep_hook): Don't define.
* elf32-iq2000.c (iq2000_elf_gc_mark_hook): Use _bfd_elf_gc_mark_hook.
(iq2000_elf_gc_sweep_hook): Delete.
(elf_backend_gc_sweep_hook): Don't define.
* elf32-openrisc.c (openrisc_elf_gc_mark_hook): Use
_bfd_elf_gc_mark_hook.
(openrisc_elf_gc_sweep_hook): Delete.
(elf_backend_gc_sweep_hook): Don't define.
* elf32-v850.c (v850_elf_gc_mark_hook): Use _bfd_elf_gc_mark_hook.
(v850_elf_gc_sweep_hook): Delete.
(elf_backend_gc_sweep_hook): Don't define.
* elf32-xstormy16.c (xstormy16_elf_gc_mark_hook): Use
_bfd_elf_gc_mark_hook.
(xstormy16_elf_gc_sweep_hook): Delete.
(elf_backend_gc_sweep_hook): Don't define.
* elf64-sh64.c (sh_elf64_gc_mark_hook): Use _bfd_elf_gc_mark_hook.
(sh_elf64_gc_sweep_hook): Delete.
(elf_backend_gc_sweep_hook): Don't define.
* elf32-avr.c (elf32_avr_gc_mark_hook): Delete.
(elf32_avr_gc_sweep_hook): Delete.
(elf_backend_gc_mark_hook, elf_backend_gc_mark_hook): Don't define.
* elf32-cr16c.c (elf32_cr16c_gc_mark_hook): Delete.
(elf32_cr16c_gc_sweep_hook): Delete.
(elf_backend_gc_mark_hook, elf_backend_gc_mark_hook): Don't define.
* elf32-crx.c (elf32_crx_gc_mark_hook): Delete.
(elf32_crx_gc_sweep_hook): Delete.
(elf_backend_gc_mark_hook, elf_backend_gc_mark_hook): Don't define.
* elf32-h8300.c (elf32_h8_gc_mark_hook): Delete.
(elf32_h8_gc_sweep_hook): Delete.
(elf_backend_gc_mark_hook, elf_backend_gc_mark_hook): Don't define.
* elf32-ip2k.c (ip2k_elf_gc_mark_hook): Delete.
(ip2k_elf_gc_sweep_hook): Delete.
(elf_backend_gc_mark_hook, elf_backend_gc_mark_hook): Don't define.
* elf32-m32c.c (m32c_elf_gc_mark_hook, m32c_elf_gc_sweep_hook): Delete.
(elf_backend_gc_mark_hook, elf_backend_gc_mark_hook): Don't define.
* elf32-m68hc11.c (elf_backend_gc_mark_hook): Don't define.
(elf_backend_gc_sweep_hook): Don't define.
* elf32-m68hc12.c (elf_backend_gc_mark_hook): Don't define.
(elf_backend_gc_sweep_hook): Don't define.
* elf32-m68hc1x.c (elf32_m68hc11_gc_mark_hook): Delete.
(elf32_m68hc11_gc_sweep_hook): Delete.
* elf32-m68hc1x.h (elf32_m68hc11_gc_mark_hook): Delete.
(elf32_m68hc11_gc_sweep_hook): Delete.
* elf32-msp430.c (elf32_msp430_gc_mark_hook): Delete.
(elf32_msp430_gc_sweep_hook): Delete.
(elf_backend_gc_mark_hook, elf_backend_gc_mark_hook): Don't define.
* elf32-mt.c (mt_elf_gc_mark_hook, mt_elf_gc_sweep_hook): Delete.
(elf_backend_gc_mark_hook, elf_backend_gc_mark_hook): Don't define.
Diffstat (limited to 'bfd/elf32-iq2000.c')
-rw-r--r-- | bfd/elf32-iq2000.c | 57 |
1 files changed, 14 insertions, 43 deletions
diff --git a/bfd/elf32-iq2000.c b/bfd/elf32-iq2000.c index f51ca07..731b320 100644 --- a/bfd/elf32-iq2000.c +++ b/bfd/elf32-iq2000.c @@ -642,53 +642,25 @@ iq2000_elf_relocate_section (bfd * output_bfd ATTRIBUTE_UNUSED, } -/* Update the got entry reference counts for the section being - removed. */ - -static bfd_boolean -iq2000_elf_gc_sweep_hook (bfd * abfd ATTRIBUTE_UNUSED, - struct bfd_link_info * info ATTRIBUTE_UNUSED, - asection * sec ATTRIBUTE_UNUSED, - const Elf_Internal_Rela * relocs ATTRIBUTE_UNUSED) -{ - return TRUE; -} - /* Return the section that should be marked against GC for a given relocation. */ static asection * -iq2000_elf_gc_mark_hook (asection * sec, - struct bfd_link_info * info ATTRIBUTE_UNUSED, - Elf_Internal_Rela * rel, - struct elf_link_hash_entry * h, - Elf_Internal_Sym * sym) +iq2000_elf_gc_mark_hook (asection *sec, + struct bfd_link_info *info, + Elf_Internal_Rela *rel, + struct elf_link_hash_entry *h, + Elf_Internal_Sym *sym) { - if (h == NULL) - return bfd_section_from_elf_index (sec->owner, sym->st_shndx); - - switch (ELF32_R_TYPE (rel->r_info)) - { - case R_IQ2000_GNU_VTINHERIT: - case R_IQ2000_GNU_VTENTRY: - break; - - default: - 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; - } - } - - return NULL; + if (h != NULL) + switch (ELF32_R_TYPE (rel->r_info)) + { + case R_IQ2000_GNU_VTINHERIT: + case R_IQ2000_GNU_VTENTRY: + return NULL; + } + + return _bfd_elf_gc_mark_hook (sec, info, rel, h, sym); } @@ -874,7 +846,6 @@ iq2000_elf_object_p (bfd *abfd) #define elf_info_to_howto iq2000_info_to_howto_rela #define elf_backend_relocate_section iq2000_elf_relocate_section #define elf_backend_gc_mark_hook iq2000_elf_gc_mark_hook -#define elf_backend_gc_sweep_hook iq2000_elf_gc_sweep_hook #define elf_backend_check_relocs iq2000_elf_check_relocs #define elf_backend_object_p iq2000_elf_object_p #define elf_backend_rela_normal 1 |