summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bfd/ChangeLog3
-rw-r--r--bfd/elf-bfd.h2
-rw-r--r--bfd/elf.c8
-rw-r--r--bfd/elf32-ppc.c2
-rw-r--r--bfd/elf64-ppc.c6
-rw-r--r--bfd/elflink.c2
6 files changed, 13 insertions, 10 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 8b700386c6..fe1087411b 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,6 +1,7 @@
2004-12-10 Alan Modra <amodra@bigpond.net.au>
- * 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 ae6de15fb7..9302af231e 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 a136102fdb..31cd1eb5fd 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 f17b89b403..38f8d09bf5 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 cf94a42752..9c975c8a47 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 05bd21a90c..d46bf41878 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