* aoutx.h (translate_to_native_sym_flags): Catch the case where
authorDavid MacKenzie <djm@cygnus>
Thu, 6 Jan 1994 22:26:18 +0000 (22:26 +0000)
committerDavid MacKenzie <djm@cygnus>
Thu, 6 Jan 1994 22:26:18 +0000 (22:26 +0000)
there is no output section.

bfd/ChangeLog
bfd/aoutx.h

index 47e06fedd0104c061f0c206cf831cf77b0afb558..14122dac71033e456d892dd0cd75da8110ffd4b9 100644 (file)
@@ -1,3 +1,8 @@
+Thu Jan  6 14:24:44 1994  David J. Mackenzie  (djm@thepub.cygnus.com)
+
+       * aoutx.h (translate_to_native_sym_flags): Catch the case where
+       there is no output section.
+
 Thu Jan  6 14:37:42 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)
 
        * hp300hpux.c (ARCH_SIZE): Define before including aoutx.h.
index 1d0fa1bf5f23ec85f9fc208831ca16dca76211d3..1e2daa27c65ddc26670306a13c3c4960c1e79763 100644 (file)
@@ -1283,7 +1283,6 @@ DEFUN(translate_to_native_sym_flags,(sym_pointer, cache_ptr, abfd),
      to another */
   sym_pointer->e_type[0] &= ~N_TYPE;
 
-
   /* We attempt to order these tests by decreasing frequency of success,
      according to tcov when linking the linker.  */
   if (bfd_get_output_section(cache_ptr) == &bfd_abs_section) {
@@ -1298,14 +1297,18 @@ DEFUN(translate_to_native_sym_flags,(sym_pointer, cache_ptr, abfd),
   else if (bfd_get_output_section(cache_ptr) == obj_bsssec (abfd)) {
     sym_pointer->e_type[0] |= N_BSS;
   }
-  else if (bfd_get_output_section(cache_ptr) == &bfd_und_section)
-    {
-      sym_pointer->e_type[0] = (N_UNDF | N_EXT);
-    }
-  else if (bfd_get_output_section(cache_ptr) == &bfd_ind_section)
-    {
-      sym_pointer->e_type[0] = N_INDR;
-    }
+  else if (bfd_get_output_section(cache_ptr) == &bfd_und_section) {
+    sym_pointer->e_type[0] = (N_UNDF | N_EXT);
+  }
+  else if (bfd_get_output_section(cache_ptr) == &bfd_ind_section) {
+    sym_pointer->e_type[0] = N_INDR;
+  }
+  else if (bfd_get_output_section(cache_ptr) == NULL) {
+    /* Protect the bfd_is_com_section call.
+       This case occurs, e.g., for the *DEBUG* section of a COFF file.  */
+    bfd_error = bfd_error_nonrepresentable_section;
+    return false;
+  }
   else if (bfd_is_com_section (bfd_get_output_section (cache_ptr))) {
     sym_pointer->e_type[0] = (N_UNDF | N_EXT);
   }
@@ -1313,6 +1316,7 @@ DEFUN(translate_to_native_sym_flags,(sym_pointer, cache_ptr, abfd),
     bfd_error = bfd_error_nonrepresentable_section;
     return false;
   }
+
   /* Turn the symbol from section relative to absolute again */
 
   value +=  cache_ptr->section->output_section->vma  + cache_ptr->section->output_offset ;