* elfxx-mips.c (mips_elf_create_dynamic_relocation): Don't access
authorThiemo Seufer <ths@networkno.de>
Sat, 28 Apr 2007 22:31:45 +0000 (22:31 +0000)
committerThiemo Seufer <ths@networkno.de>
Sat, 28 Apr 2007 22:31:45 +0000 (22:31 +0000)
memory which we might not own.

bfd/ChangeLog
bfd/elfxx-mips.c

index fb5af0bc686887fe961ac579d62d1648173bf67f..17109feb09fbd846478d70576dd2a64a824fe409 100644 (file)
@@ -1,3 +1,8 @@
+2007-04-28  Sergey Rogozhkin  <rogozhkin@niisi.msk.ru>
+
+       * elfxx-mips.c (mips_elf_create_dynamic_relocation): Don't access
+       memory which we might not own.
+
 2007-04-27  Bob Wilson  <bob.wilson@acm.org>
 
        * elf32-xtensa.c (elf_xtensa_make_sym_local): Restore deleted function.
index 5b93d1be2cfaf6b906b0abe55ce47be82a031d6a..d01b3e980cf2c03362062d8070b5c4109e582be9 100644 (file)
@@ -4786,10 +4786,13 @@ mips_elf_create_dynamic_relocation (bfd *output_bfd,
 
   outrel[0].r_offset =
     _bfd_elf_section_offset (output_bfd, info, input_section, rel[0].r_offset);
-  outrel[1].r_offset =
-    _bfd_elf_section_offset (output_bfd, info, input_section, rel[1].r_offset);
-  outrel[2].r_offset =
-    _bfd_elf_section_offset (output_bfd, info, input_section, rel[2].r_offset);
+  if (ABI_64_P (output_bfd))
+    {
+      outrel[1].r_offset =
+       _bfd_elf_section_offset (output_bfd, info, input_section, rel[1].r_offset);
+      outrel[2].r_offset =
+       _bfd_elf_section_offset (output_bfd, info, input_section, rel[2].r_offset);
+    }
 
   if (outrel[0].r_offset == MINUS_ONE)
     /* The relocation field has been deleted.  */