From be8dd2ca9e08391a139097982223cacf07a76697 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Fri, 10 Dec 2004 14:04:58 +0000 Subject: * elf.c (bfd_elf_sym_name): Add symtab_hdr param. (group_signature): Update call. * elf-bfd.h (bfd_elf_sym_name): Update. * elf32-ppc.c (ppc_elf_relocate_section): Update. * elf64-ppc.c (ppc64_elf_edit_opd, ppc64_elf_edit_toc) (ppc64_elf_relocate_section): Update * elflink.c (elf_link_input_bfd): Update. --- bfd/ChangeLog | 3 ++- bfd/elf-bfd.h | 2 +- bfd/elf.c | 8 +++++--- bfd/elf32-ppc.c | 2 +- bfd/elf64-ppc.c | 6 +++--- bfd/elflink.c | 2 +- 6 files changed, 13 insertions(+), 10 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 8b70038..fe10874 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,6 +1,7 @@ 2004-12-10 Alan Modra - * elf.c (bfd_elf_sym_name): Rename from bfd_elf_local_sym_name. + * elf.c (bfd_elf_sym_name): Rename from bfd_elf_local_sym_name and + add symtab_hdr param. (group_signature): Update calls. * elf-bfd.h (bfd_elf_sym_name): Update. * elf32-ppc.c (ppc_elf_relocate_section): Update. diff --git a/bfd/elf-bfd.h b/bfd/elf-bfd.h index ae6de15..9302af2 100644 --- a/bfd/elf-bfd.h +++ b/bfd/elf-bfd.h @@ -1358,7 +1358,7 @@ extern Elf_Internal_Sym *bfd_elf_get_elf_syms (bfd *, Elf_Internal_Shdr *, size_t, size_t, Elf_Internal_Sym *, void *, Elf_External_Sym_Shndx *); extern const char *bfd_elf_sym_name - (bfd *, Elf_Internal_Sym *); + (bfd *, Elf_Internal_Shdr *, Elf_Internal_Sym *); extern bfd_boolean _bfd_elf_copy_private_bfd_data (bfd *, bfd *); diff --git a/bfd/elf.c b/bfd/elf.c index a136102..31cd1eb 100644 --- a/bfd/elf.c +++ b/bfd/elf.c @@ -405,10 +405,12 @@ bfd_elf_get_elf_syms (bfd *ibfd, /* Look up a symbol name. */ const char * -bfd_elf_sym_name (bfd *abfd, Elf_Internal_Sym *isym) +bfd_elf_sym_name (bfd *abfd, + Elf_Internal_Shdr *symtab_hdr, + Elf_Internal_Sym *isym) { unsigned int iname = isym->st_name; - unsigned int shindex = elf_tdata (abfd)->symtab_hdr.sh_link; + unsigned int shindex = symtab_hdr->sh_link; if (iname == 0 && ELF_ST_TYPE (isym->st_info) == STT_SECTION /* Check for a bogus st_shndx to avoid crashing. */ && isym->st_shndx < elf_numsections (abfd) @@ -451,7 +453,7 @@ group_signature (bfd *abfd, Elf_Internal_Shdr *ghdr) &isym, esym, &eshndx) == NULL) return NULL; - return bfd_elf_sym_name (abfd, &isym); + return bfd_elf_sym_name (abfd, hdr, &isym); } /* Set next_in_group list pointer, and group name for NEWSECT. */ diff --git a/bfd/elf32-ppc.c b/bfd/elf32-ppc.c index f17b89b..38f8d09 100644 --- a/bfd/elf32-ppc.c +++ b/bfd/elf32-ppc.c @@ -4694,7 +4694,7 @@ ppc_elf_relocate_section (bfd *output_bfd, { sym = local_syms + r_symndx; sec = local_sections[r_symndx]; - sym_name = bfd_elf_sym_name (input_bfd, sym); + sym_name = bfd_elf_sym_name (input_bfd, symtab_hdr, sym); relocation = _bfd_elf_rela_local_sym (output_bfd, sym, &sec, rel); } diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c index cf94a42..9c975c8 100644 --- a/bfd/elf64-ppc.c +++ b/bfd/elf64-ppc.c @@ -6006,7 +6006,7 @@ ppc64_elf_edit_opd (bfd *obfd, struct bfd_link_info *info, if (h != NULL) sym_name = h->root.root.string; else - sym_name = bfd_elf_sym_name (ibfd, sym); + sym_name = bfd_elf_sym_name (ibfd, symtab_hdr, sym); (*_bfd_error_handler) (_("%B: undefined sym `%s' in .opd section"), @@ -7051,7 +7051,7 @@ ppc64_elf_edit_toc (bfd *obfd ATTRIBUTE_UNUSED, struct bfd_link_info *info) { (*_bfd_error_handler) (_("%s defined in removed toc entry"), - bfd_elf_sym_name (ibfd, sym)); + bfd_elf_sym_name (ibfd, symtab_hdr, sym)); sym->st_value = 0; sym->st_shndx = SHN_ABS; } @@ -9142,7 +9142,7 @@ ppc64_elf_relocate_section (bfd *output_bfd, sym = local_syms + r_symndx; sec = local_sections[r_symndx]; - sym_name = bfd_elf_sym_name (input_bfd, sym); + sym_name = bfd_elf_sym_name (input_bfd, symtab_hdr, sym); sym_type = ELF64_ST_TYPE (sym->st_info); relocation = _bfd_elf_rela_local_sym (output_bfd, sym, &sec, rel); opd_adjust = get_opd_info (sec); diff --git a/bfd/elflink.c b/bfd/elflink.c index 05bd21a..d46bf41 100644 --- a/bfd/elflink.c +++ b/bfd/elflink.c @@ -6819,7 +6819,7 @@ elf_link_input_bfd (struct elf_final_link_info *finfo, bfd *input_bfd) { Elf_Internal_Sym *sym = isymbuf + r_symndx; ps = &finfo->sections[r_symndx]; - sym_name = bfd_elf_sym_name (input_bfd, sym); + sym_name = bfd_elf_sym_name (input_bfd, symtab_hdr, sym); } /* Complain if the definition comes from a -- cgit v1.1