PR ld/13468
authorAlan Modra <amodra@gmail.com>
Sat, 3 Dec 2011 10:29:01 +0000 (10:29 +0000)
committerAlan Modra <amodra@gmail.com>
Sat, 3 Dec 2011 10:29:01 +0000 (10:29 +0000)
* elflink.c (bfd_elf_final_link): Don't segfault when checking
for DT_TEXTREL and .dynamic does not exist.

bfd/ChangeLog
bfd/elflink.c

index 12c332a..77d6ad8 100644 (file)
@@ -1,5 +1,11 @@
 2011-12-03  Alan Modra  <amodra@gmail.com>
 
+       PR ld/13468
+       * elflink.c (bfd_elf_final_link): Don't segfault when checking
+       for DT_TEXTREL and .dynamic does not exist.
+
+2011-12-03  Alan Modra  <amodra@gmail.com>
+
        PR ld/13470
        * elf32-ppc.c (ppc_elf_copy_indirect_symbol): Revert substantive
        change in 2011-07-01 commit.  Comment.
index 3448bfc..ac95c22 100644 (file)
@@ -11188,15 +11188,12 @@ bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info)
        goto error_return;
 
       /* Check for DT_TEXTREL (late, in case the backend removes it).  */
-      if ((info->warn_shared_textrel && info->shared)
-         || info->error_textrel)
+      if (((info->warn_shared_textrel && info->shared)
+          || info->error_textrel)
+         && (o = bfd_get_section_by_name (dynobj, ".dynamic")) != NULL)
        {
          bfd_byte *dyncon, *dynconend;
 
-         /* Fix up .dynamic entries.  */
-         o = bfd_get_section_by_name (dynobj, ".dynamic");
-         BFD_ASSERT (o != NULL);
-
          dyncon = o->contents;
          dynconend = o->contents + o->size;
          for (; dyncon < dynconend; dyncon += bed->s->sizeof_dyn)