From 82f0cfbdccfe0aaf9c59df5491bc78c6886f5d39 Mon Sep 17 00:00:00 2001 From: Eric Christopher Date: Thu, 24 Mar 2005 22:47:52 +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 ++++++++++++++-------------- ld/testsuite/ChangeLog | 6 +++++ ld/testsuite/ld-mips-elf/rel32-n32.d | 10 +++---- ld/testsuite/ld-mips-elf/rel32-o32.d | 2 +- ld/testsuite/ld-mips-elf/rel64.d | 10 +++---- 6 files changed, 41 insertions(+), 31 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 7d83b6de38e..c6cf9a058d9 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 951d1a72f30..a4baea95138 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; diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog index 8e8c09d6e3a..8b1c4971e16 100644 --- a/ld/testsuite/ChangeLog +++ b/ld/testsuite/ChangeLog @@ -1,3 +1,9 @@ +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. + 2005-03-23 Eric Christopher * ld-mips-elf/textrel-1.s, ld-mips-elf/textrel-1.d: New diff --git a/ld/testsuite/ld-mips-elf/rel32-n32.d b/ld/testsuite/ld-mips-elf/rel32-n32.d index 565742a816a..cff8b362761 100644 --- a/ld/testsuite/ld-mips-elf/rel32-n32.d +++ b/ld/testsuite/ld-mips-elf/rel32-n32.d @@ -4,12 +4,12 @@ #readelf: -x 5 -r #ld: -shared -melf32btsmipn32 -Relocation section '.rel.dyn' at offset 0x2fc contains 2 entries: +Relocation section '.rel.dyn' at offset 0x304 contains 2 entries: Offset Info Type Sym.Value Sym. Name 00000000 00000000 R_MIPS_NONE -00000320 00000003 R_MIPS_REL32 +00000330 00000003 R_MIPS_REL32 Hex dump of section '.text': - 0x00000310 00000000 00000000 00000000 00000000 ................ - 0x00000320 00000320 00000000 00000000 00000000 ................ - 0x00000330 00000000 00000000 00000000 00000000 ................ + 0x00000320 00000000 00000000 00000000 00000000 ................ + 0x00000330 00000330 00000000 00000000 00000000 ................ + 0x00000340 00000000 00000000 00000000 00000000 ................ diff --git a/ld/testsuite/ld-mips-elf/rel32-o32.d b/ld/testsuite/ld-mips-elf/rel32-o32.d index d89b87a2d7a..982758a0c7a 100644 --- a/ld/testsuite/ld-mips-elf/rel32-o32.d +++ b/ld/testsuite/ld-mips-elf/rel32-o32.d @@ -4,7 +4,7 @@ #readelf: -x 6 -r #ld: -shared -melf32btsmip -Relocation section '.rel.dyn' at offset 0x314 contains 2 entries: +Relocation section '.rel.dyn' at offset 0x31c contains 2 entries: Offset Info Type Sym.Value Sym. Name 00000000 00000000 R_MIPS_NONE 00000340 00000003 R_MIPS_REL32 diff --git a/ld/testsuite/ld-mips-elf/rel64.d b/ld/testsuite/ld-mips-elf/rel64.d index 8663f148d76..ead15f044c9 100644 --- a/ld/testsuite/ld-mips-elf/rel64.d +++ b/ld/testsuite/ld-mips-elf/rel64.d @@ -4,16 +4,16 @@ #readelf: -x 6 -r #ld: -shared -melf64btsmip -Relocation section '.rel.dyn' at offset 0x488 contains 2 entries: +Relocation section '.rel.dyn' at offset 0x498 contains 2 entries: Offset Info Type Sym. Value Sym. Name 000000000000 000000000000 R_MIPS_NONE Type2: R_MIPS_NONE Type3: R_MIPS_NONE -0000000004c0 000000001203 R_MIPS_REL32 +0000000004d0 000000001203 R_MIPS_REL32 Type2: R_MIPS_64 Type3: R_MIPS_NONE Hex dump of section '.text': - 0x000004b0 00000000 00000000 00000000 00000000 ................ - 0x000004c0 00000000 000004c0 00000000 00000000 ................ - 0x000004d0 00000000 00000000 00000000 00000000 ................ + 0x000004c0 00000000 00000000 00000000 00000000 ................ + 0x000004d0 00000000 000004d0 00000000 00000000 ................ + 0x000004e0 00000000 00000000 00000000 00000000 ................ -- 2.30.2