OSDN Git Service

bfd/
authorRichard Sandiford <rsandifo@nildram.co.uk>
Thu, 12 Apr 2007 19:26:08 +0000 (19:26 +0000)
committerRichard Sandiford <rsandifo@nildram.co.uk>
Thu, 12 Apr 2007 19:26:08 +0000 (19:26 +0000)
* elfxx-mips.c (mips_elf_calculate_relocation): Set DT_TEXTREL
when creating a __GOTT_BASE__ or __GOTT_INDEX__ relocation
in a read-only section.
(_bfd_mips_elf_check_relocs): Likewise.

ld/testsuite/
* ld-mips-elf/vxworks1-lib.td: New test.
* ld-mips-elf/mips-elf.exp: Run it.

bfd/ChangeLog
bfd/elfxx-mips.c

index d475ebf..962a288 100644 (file)
@@ -1,3 +1,10 @@
+2007-04-12  Richard Sandiford  <richard@codesourcery.com>
+
+       * elfxx-mips.c (mips_elf_calculate_relocation): Set DT_TEXTREL
+       when creating a __GOTT_BASE__ or __GOTT_INDEX__ relocation
+       in a read-only section.
+       (_bfd_mips_elf_check_relocs): Likewise.
+
 2007-04-12  Bob Wilson  <bob.wilson@acm.org>
 
        * elf32-xtensa.c (xtensa_is_insntable_section): New.
index ec65141..5c782de 100644 (file)
@@ -4275,6 +4275,13 @@ mips_elf_calculate_relocation (bfd *abfd, bfd *input_bfd,
       outrel.r_info = ELF32_R_INFO (h->root.dynindx, r_type);
       outrel.r_addend = addend;
       bfd_elf32_swap_reloca_out (abfd, &outrel, loc);
+
+      /* If we've written this relocation for a readonly section,
+        we need to set DF_TEXTREL again, so that we do not delete the
+        DT_TEXTREL tag.  */
+      if (MIPS_ELF_READONLY_SECTION (input_section))
+       info->flags |= DF_TEXTREL;
+
       *valuep = 0;
       return bfd_reloc_ok;
     }
@@ -6493,6 +6500,10 @@ _bfd_mips_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
                    return FALSE;
                }
              mips_elf_allocate_dynamic_relocations (dynobj, info, 1);
+             if (MIPS_ELF_READONLY_SECTION (sec))
+               /* We tell the dynamic linker that there are
+                  relocations against the text segment.  */
+               info->flags |= DF_TEXTREL;
            }
        }
       else if (r_type == R_MIPS_CALL_LO16