From 177eefabe4af6d0dded063a3b2690ce0b8379d51 Mon Sep 17 00:00:00 2001 From: Eric Christopher Date: Thu, 24 Mar 2005 22:47:51 +0000 Subject: [PATCH] 2005-03-24 Eric Christopher * elfxx-mips.c: Revert previous patch. 2005-03-24 Eric Christopher * ld-mips-elf/rel32-n32.d: Revert changes. * ld-mips-elf/rel32-o32.d: Ditto. * ld-mips-elf/rel64.d: Ditto. --- bfd/ChangeLog | 4 ++++ bfd/elfxx-mips.c | 40 ++++++++++++++++++++-------------------- 2 files changed, 24 insertions(+), 20 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 7d83b6de38..c6cf9a058d 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,7 @@ +2005-03-24 Eric Christopher + + * elfxx-mips.c: Revert previous patch. + 2005-03-24 Nick Clifton * targets.c (_bfd_target_vector): Only include the diff --git a/bfd/elfxx-mips.c b/bfd/elfxx-mips.c index 951d1a72f3..a4baea9513 100644 --- a/bfd/elfxx-mips.c +++ b/bfd/elfxx-mips.c @@ -478,11 +478,6 @@ static bfd *reldyn_sorting_bfd; #define MIPS_ELF_OPTIONS_SECTION_NAME(abfd) \ (NEWABI_P (abfd) ? ".MIPS.options" : ".options") -/* Whether the section is readonly. */ -#define MIPS_ELF_READONLY_SECTION(sec) \ - ((sec->flags & (SEC_ALLOC | SEC_LOAD | SEC_READONLY)) \ - == (SEC_ALLOC | SEC_LOAD | SEC_READONLY)) - /* The name of the stub section. */ #define MIPS_ELF_STUB_SECTION_NAME(abfd) ".MIPS.stubs" @@ -4010,10 +4005,6 @@ mips_elf_calculate_relocation (bfd *abfd, bfd *input_bfd, &value, input_section)) return bfd_reloc_undefined; - - /* If we've written this we need to set DF_TEXTREL here. */ - if (MIPS_ELF_READONLY_SECTION (input_section)) - info->flags |= DF_TEXTREL; } else { @@ -6110,21 +6101,33 @@ _bfd_mips_elf_check_relocs (bfd *abfd, struct bfd_link_info *info, if (sreloc == NULL) return FALSE; } - +#define MIPS_READONLY_SECTION (SEC_ALLOC | SEC_LOAD | SEC_READONLY) if (info->shared) - /* When creating a shared object, we must copy these - reloc types into the output file as R_MIPS_REL32 - relocs. We make room for this reloc in the - .rel.dyn reloc section. */ - mips_elf_allocate_dynamic_relocations (dynobj, 1); + { + /* When creating a shared object, we must copy these + reloc types into the output file as R_MIPS_REL32 + relocs. We make room for this reloc in the + .rel.dyn reloc section. */ + mips_elf_allocate_dynamic_relocations (dynobj, 1); + if ((sec->flags & MIPS_READONLY_SECTION) + == MIPS_READONLY_SECTION) + /* We tell the dynamic linker that there are + relocations against the text segment. */ + info->flags |= DF_TEXTREL; + } else { struct mips_elf_link_hash_entry *hmips; - + /* We only need to copy this reloc if the symbol is defined in a dynamic object. */ hmips = (struct mips_elf_link_hash_entry *) h; ++hmips->possibly_dynamic_relocs; + if ((sec->flags & MIPS_READONLY_SECTION) + == MIPS_READONLY_SECTION) + /* We need it to tell the dynamic linker if there + are relocations against the text segment. */ + hmips->readonly_reloc = TRUE; } /* Even though we don't directly need a GOT entry for @@ -6420,12 +6423,9 @@ _bfd_mips_elf_adjust_dynamic_symbol (struct bfd_link_info *info, && (h->root.type == bfd_link_hash_defweak || !h->def_regular)) { - asection *sec; - sec = mips_elf_rel_dyn_section (dynobj, FALSE); mips_elf_allocate_dynamic_relocations (dynobj, hmips->possibly_dynamic_relocs); - - if (MIPS_ELF_READONLY_SECTION (sec)) + if (hmips->readonly_reloc) /* We tell the dynamic linker that there are relocations against the text segment. */ info->flags |= DF_TEXTREL; -- 2.11.0