]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
PR ld/13468
authorAlan Modra <amodra@gmail.com>
Sat, 3 Dec 2011 10:29:18 +0000 (10:29 +0000)
committerAlan Modra <amodra@gmail.com>
Sat, 3 Dec 2011 10:29:18 +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 932a8ca799d6d2c48d04de47baa5879fd57eedec..02f279e34ea7535da1671c6868c91c88a5378b8c 100644 (file)
@@ -1,3 +1,9 @@
+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
index fc4266b36d218d7e91697831c52579a81099da5d..8556cec953265ca5053653957b34e6e3810f53ec 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)