From 6ece8836a6da593ddc29e0e9a9d79a39bb784206 Mon Sep 17 00:00:00 2001 From: Thiemo Seufer Date: Thu, 3 Nov 2005 11:45:14 +0000 Subject: [PATCH] * elfxx-mips.c (mips_elf_calculate_relocation): Handle only forced local symbols here. (mips_elf_create_dynamic_relocation): Likewise. (_bfd_mips_elf_finish_dynamic_symbol): Fix typo in comment. --- bfd/ChangeLog | 7 +++++++ bfd/elfxx-mips.c | 10 ++++------ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 53a2538e8bc..052f18a7ea9 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,10 @@ +2005-11-03 Thiemo Seufer + + * elfxx-mips.c (mips_elf_calculate_relocation): Handle only + forced local symbols here. + (mips_elf_create_dynamic_relocation): Likewise. + (_bfd_mips_elf_finish_dynamic_symbol): Fix typo in comment. + 2005-11-03 Alan Modra * elf.c (elf_fake_sections): When calculating tbss size, just use diff --git a/bfd/elfxx-mips.c b/bfd/elfxx-mips.c index 685f1d22e3f..a3448491eb9 100644 --- a/bfd/elfxx-mips.c +++ b/bfd/elfxx-mips.c @@ -3918,7 +3918,7 @@ mips_elf_calculate_relocation (bfd *abfd, bfd *input_bfd, if (h->tls_type == GOT_NORMAL && (! elf_hash_table(info)->dynamic_sections_created || (info->shared - && (info->symbolic || h->root.dynindx == -1) + && (info->symbolic || h->root.forced_local) && h->root.def_regular))) { /* This is a static link or a -Bsymbolic link. The @@ -4483,10 +4483,8 @@ mips_elf_create_dynamic_relocation (bfd *output_bfd, /* We must now calculate the dynamic symbol table index to use in the relocation. */ if (h != NULL - && (! info->symbolic || !h->root.def_regular) - /* h->root.dynindx may be -1 if this symbol was marked to - become local. */ - && h->root.dynindx != -1) + && (!h->root.def_regular + || (info->shared && !info->symbolic && !h->root.forced_local))) { indx = h->root.dynindx; if (SGI_COMPAT (output_bfd)) @@ -7379,7 +7377,7 @@ _bfd_mips_elf_finish_dynamic_symbol (bfd *output_bfd, MIPS_ELF_STUB_SECTION_NAME (dynobj)); BFD_ASSERT (s != NULL); - /* FIXME: Can h->dynindex be more than 64K? */ + /* FIXME: Can h->dynindx be more than 64K? */ if (h->dynindx & 0xffff0000) return FALSE; -- 2.30.2