From 555cd47695349e40eb1fe06ac707d2f278d63021 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Fri, 26 Mar 2004 06:13:40 +0000 Subject: * elf64-ppc.c (elf_backend_add_symbol_hook): Define. (ppc64_elf_add_symbol_hook): New function. * elf-bfd.h (struct elf_backend_data ): Remove const from Elf_Internal_Sym param. * elflink.c (elf_link_add_object_symbols): Adjust. * elf-hppa.h (elf_hppa_add_symbol_hook): Adjust. * elf32-frv.c (elf32_frv_add_symbol_hook): Adjust. * elf32-i370.c (elf_backend_add_symbol_hook): Adjust. * elf32-m32r.c (m32r_elf_add_symbol_hook): Adjust. * elf32-m68hc1x.c (elf32_m68hc11_add_symbol_hook): Adjust. * elf32-m68hc1x.h (elf32_m68hc11_add_symbol_hook): Adjust. * elf32-ppc.c (ppc_elf_add_symbol_hook): Adjust. * elf32-sh64.c (sh64_elf_add_symbol_hook): Adjust. * elf32-v850.c (v850_elf_add_symbol_hook): Adjust. * elf64-alpha.c (elf64_alpha_add_symbol_hook): Adjust. * elf64-mmix.c (mmix_elf_add_symbol_hook): Adjust. * elf64-sh64.c (sh64_elf64_add_symbol_hook): Adjust. * elf64-sparc.c (sparc64_elf_add_symbol_hook): Adjust. * elfxx-ia64.c (elfNN_ia64_add_symbol_hook): Adjust. * elfxx-mips.c (_bfd_mips_elf_add_symbol_hook): Adjust. * elfxx-mips.h (_bfd_mips_elf_add_symbol_hook): Adjust. --- bfd/elf64-ppc.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'bfd/elf64-ppc.c') diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c index cf15f92..a2aebfe 100644 --- a/bfd/elf64-ppc.c +++ b/bfd/elf64-ppc.c @@ -82,6 +82,7 @@ static bfd_reloc_status_type ppc64_elf_unhandled_reloc #define elf_backend_grok_psinfo ppc64_elf_grok_psinfo #define elf_backend_create_dynamic_sections ppc64_elf_create_dynamic_sections #define elf_backend_copy_indirect_symbol ppc64_elf_copy_indirect_symbol +#define elf_backend_add_symbol_hook ppc64_elf_add_symbol_hook #define elf_backend_check_relocs ppc64_elf_check_relocs #define elf_backend_gc_mark_hook ppc64_elf_gc_mark_hook #define elf_backend_gc_sweep_hook ppc64_elf_gc_sweep_hook @@ -3474,6 +3475,22 @@ ppc64_elf_mark_entry_syms (struct bfd_link_info *info) return TRUE; } +/* Hack symbols defined in .opd sections to be function type. */ + +static bfd_boolean +ppc64_elf_add_symbol_hook (bfd *ibfd ATTRIBUTE_UNUSED, + struct bfd_link_info *info ATTRIBUTE_UNUSED, + Elf_Internal_Sym *isym, + const char **name ATTRIBUTE_UNUSED, + flagword *flags ATTRIBUTE_UNUSED, + asection **sec, + bfd_vma *value ATTRIBUTE_UNUSED) +{ + if (strcmp (bfd_get_section_name (ibfd, *sec), ".opd") == 0) + isym->st_info = ELF_ST_INFO (ELF_ST_BIND (isym->st_info), STT_FUNC); + return TRUE; +} + static bfd_boolean update_local_sym_info (bfd *abfd, Elf_Internal_Shdr *symtab_hdr, unsigned long r_symndx, bfd_vma r_addend, int tls_type) -- cgit v1.1