OSDN Git Service

* elf.c (assign_file_positions_for_segments): Make sure the .dynamic section
authorNick Clifton <nickc@redhat.com>
Fri, 9 Jul 2004 16:06:20 +0000 (16:06 +0000)
committerNick Clifton <nickc@redhat.com>
Fri, 9 Jul 2004 16:06:20 +0000 (16:06 +0000)
is the first section in the PT_DYNAMIC segment

bfd/ChangeLog
bfd/elf.c

index d7bbfe1..7d8efdd 100644 (file)
@@ -1,3 +1,8 @@
+2004-07-09  Jie Zhang  <zhangjie@magima.com.cn>
+
+       * elf.c (assign_file_positions_for_segments): Make sure the
+       .dynamic section is the first section in the PT_DYNAMIC segment.
+
 2004-07-09  Nick Clifton  <nickc@redhat.com>
 
        * config.bfd: Change sh-sybmian-elf to sh-*-symbianelf.
index 1525fa5..1cf2dc0 100644 (file)
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -3826,6 +3826,18 @@ assign_file_positions_for_segments (bfd *abfd, struct bfd_link_info *link_info)
                                            1 << align);
            }
        }
+      /* Make sure the .dynamic section is the first section in the
+        PT_DYNAMIC segment.  */
+      else if (p->p_type == PT_DYNAMIC
+              && m->count > 1
+              && strcmp (m->sections[0]->name, ".dynamic") != 0)
+       {
+         _bfd_error_handler
+           (_("%s: The first section in the PT_DYNAMIC segment is not the .dynamic section"),
+            bfd_get_filename (abfd));
+         bfd_set_error (bfd_error_bad_value);
+         return FALSE;
+       }
 
       if (m->count == 0)
        p->p_vaddr = 0;