diff options
author | Alan Modra <amodra@bigpond.net.au> | 2003-12-08 13:05:11 +0000 |
---|---|---|
committer | Alan Modra <amodra@bigpond.net.au> | 2003-12-08 13:05:11 +0000 |
commit | b3a0fd3b7cfeae87f5b3a3a739b3635a33e5fdd9 (patch) | |
tree | a63b80abc0c637e1a56a0be523919f5c92b4c335 /bfd/elf64-hppa.c | |
parent | 972f86ae8202aa5718975c61442592bb19daca81 (diff) | |
download | gdb-b3a0fd3b7cfeae87f5b3a3a739b3635a33e5fdd9.tar.gz |
* elf-bfd.h (struct elf_backend_data): Remove "bfd *" and add
"elflink_hash_entry *" param to elf_backend_link_output_symbol_hook.
Add "elflink_hash_entry *" param to elf_backend_output_arch_syms.
* elflink.h (elf_link_output_sym): Add "elflink_hash_entry *" param,
and pass to output_symbol_hook.
(elf_bfd_final_link): Adjust elf_link_output_sym calls.
(elf_link_output_extsym): Likewise.
(elf_link_input_bfd): Likewise.
* elf32-sh64.c (sh64_elf_link_output_symbol_hook): Adjust.
* elf32-v850.c (v850_elf_link_output_symbol_hook): Likewise.
* elf64-mmix.c (mmix_elf_link_output_symbol_hook): Likewise.
* elf64-sh64.c (sh64_elf64_link_output_symbol_hook): Likewise.
* elfxx-mips.c (_bfd_mips_elf_link_output_symbol_hook): Likewise.
* elfxx-mips.h (_bfd_mips_elf_link_output_symbol_hook): Likewise.
* elf64-sparc.c (sparc64_elf_output_arch_syms): Likewise.
* elf64-hppa.c (elf64_hppa_link_output_symbol_hook): Likewise.
Validate dynh->h against h.
* elf64-ppc.c (struct ppc_link_hash_entry): Add adjust_done bitfield.
(link_hash_newfunc): Init it.
(adjust_opd_syms): New function.
(ppc64_elf_edit_opd): Set adjust_done when global .opd sym adjusted.
Set opd.adjust for all .opd relocs. Call adjust_opd_syms.
(ppc64_elf_tls_optimize): Adjust possible .opd sym values here.
(ppc64_elf_relocate_section): Also adjust syms not a multiple of 24.
(ppc64_elf_output_symbol_hook): New function.
(elf_backend_link_output_symbol_hook): Define.
Diffstat (limited to 'bfd/elf64-hppa.c')
-rw-r--r-- | bfd/elf64-hppa.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/bfd/elf64-hppa.c b/bfd/elf64-hppa.c index 2dd2a361868..36c27c4b6f8 100644 --- a/bfd/elf64-hppa.c +++ b/bfd/elf64-hppa.c @@ -202,8 +202,8 @@ static bfd_boolean elf64_hppa_size_dynamic_sections PARAMS ((bfd *, struct bfd_link_info *)); static bfd_boolean elf64_hppa_link_output_symbol_hook - PARAMS ((bfd *abfd, struct bfd_link_info *, const char *, - Elf_Internal_Sym *, asection *input_sec)); + PARAMS ((struct bfd_link_info *, const char *, Elf_Internal_Sym *, + asection *, struct elf_link_hash_entry *)); static bfd_boolean elf64_hppa_finish_dynamic_symbol PARAMS ((bfd *, struct bfd_link_info *, @@ -1893,12 +1893,12 @@ elf64_hppa_size_dynamic_sections (output_bfd, info) table. Ick. */ static bfd_boolean -elf64_hppa_link_output_symbol_hook (abfd, info, name, sym, input_sec) - bfd *abfd ATTRIBUTE_UNUSED; +elf64_hppa_link_output_symbol_hook (info, name, sym, input_sec, h) struct bfd_link_info *info; const char *name; Elf_Internal_Sym *sym; asection *input_sec ATTRIBUTE_UNUSED; + struct elf_link_hash_entry *h; { struct elf64_hppa_link_hash_table *hppa_info; struct elf64_hppa_dyn_hash_entry *dyn_h; @@ -1912,6 +1912,8 @@ elf64_hppa_link_output_symbol_hook (abfd, info, name, sym, input_sec) hppa_info = elf64_hppa_hash_table (info); dyn_h = elf64_hppa_dyn_hash_lookup (&hppa_info->dyn_hash_table, name, FALSE, FALSE); + if (dyn_h->h != h) + return TRUE; /* Function symbols for which we created .opd entries *may* have been munged by finish_dynamic_symbol and have to be un-munged here. |