* elf32-i386.c (dtpoff_base, tpoff): Don't crash if tls_segment is
authorJakub Jelinek <jakub@redhat.com>
Thu, 12 Sep 2002 14:01:20 +0000 (14:01 +0000)
committerJakub Jelinek <jakub@redhat.com>
Thu, 12 Sep 2002 14:01:20 +0000 (14:01 +0000)
NULL.
(elf_i386_relocate_section): Return false after printing error about
unresolvable relocation.

bfd/ChangeLog
bfd/elf32-i386.c

index 5b825a2a3f9e74fd61ce5a39cefe4ff39c1baaa0..959c7c21c7e62f90d4499c2d5f128458cbafb3c2 100644 (file)
@@ -1,3 +1,10 @@
+2002-09-12  Jakub Jelinek  <jakub@redhat.com>
+
+       * elf32-i386.c (dtpoff_base, tpoff): Don't crash if tls_segment is
+       NULL.
+       (elf_i386_relocate_section): Return false after printing error about
+       unresolvable relocation.
+
 2002-09-12  Nick Clifton  <nickc@redhat.com>
 
        * elf32-arm.h (elf32_arm_final_link_relocate): Fix handling of
index edf06de43e0d8d9b11db73ebc485a6677b8bf218..492f0e031b229030fd340c3ed7fad1c75cd16fce 100644 (file)
@@ -1962,7 +1962,9 @@ static bfd_vma
 dtpoff_base (info)
      struct bfd_link_info *info;
 {
-  BFD_ASSERT (elf_hash_table (info)->tls_segment != NULL);
+  /* If tls_segment is NULL, we should have signalled an error already.  */
+  if (elf_hash_table (info)->tls_segment == NULL)
+    return 0;
   return elf_hash_table (info)->tls_segment->start;
 }
 
@@ -1977,7 +1979,9 @@ tpoff (info, address)
   struct elf_link_tls_segment *tls_segment
     = elf_hash_table (info)->tls_segment;
 
-  BFD_ASSERT (tls_segment != NULL);
+  /* If tls_segment is NULL, we should have signalled an error already.  */
+  if (tls_segment == NULL)
+    return 0;
   return (align_power (tls_segment->size, tls_segment->align)
          + tls_segment->start - address);
 }
@@ -2756,12 +2760,15 @@ elf_i386_relocate_section (output_bfd, info, input_bfd, input_section,
       if (unresolved_reloc
          && !((input_section->flags & SEC_DEBUGGING) != 0
               && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_DYNAMIC) != 0))
-       (*_bfd_error_handler)
-         (_("%s(%s+0x%lx): unresolvable relocation against symbol `%s'"),
-          bfd_archive_filename (input_bfd),
-          bfd_get_section_name (input_bfd, input_section),
-          (long) rel->r_offset,
-          h->root.root.string);
+       {
+         (*_bfd_error_handler)
+           (_("%s(%s+0x%lx): unresolvable relocation against symbol `%s'"),
+            bfd_archive_filename (input_bfd),
+            bfd_get_section_name (input_bfd, input_section),
+            (long) rel->r_offset,
+            h->root.root.string);
+         return false;
+       }
 
       r = _bfd_final_link_relocate (howto, input_bfd, input_section,
                                    contents, rel->r_offset,