diff options
author | Eric Christopher <echristo@gmail.com> | 2005-03-24 22:47:52 +0000 |
---|---|---|
committer | Eric Christopher <echristo@gmail.com> | 2005-03-24 22:47:52 +0000 |
commit | 82f0cfbdccfe0aaf9c59df5491bc78c6886f5d39 (patch) | |
tree | 3d3143d97e15b25e792f28ba181f24095e5da46e /bfd/elfxx-mips.c | |
parent | bcfb5d778fc726dc7b75a402dba027fb4b88f02a (diff) | |
download | gdb-82f0cfbdccfe0aaf9c59df5491bc78c6886f5d39.zip gdb-82f0cfbdccfe0aaf9c59df5491bc78c6886f5d39.tar.gz gdb-82f0cfbdccfe0aaf9c59df5491bc78c6886f5d39.tar.bz2 |
2005-03-24 Eric Christopher <echristo@redhat.com>
* elfxx-mips.c: Revert previous patch.
2005-03-24 Eric Christopher <echristo@redhat.com>
* ld-mips-elf/rel32-n32.d: Revert changes.
* ld-mips-elf/rel32-o32.d: Ditto.
* ld-mips-elf/rel64.d: Ditto.
Diffstat (limited to 'bfd/elfxx-mips.c')
-rw-r--r-- | bfd/elfxx-mips.c | 40 |
1 files changed, 20 insertions, 20 deletions
diff --git a/bfd/elfxx-mips.c b/bfd/elfxx-mips.c index 951d1a7..a4baea9 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; |