diff --git a/ld/ChangeLog b/ld/ChangeLog
index 576118d9b30..2913ea74b7b 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,5 +1,10 @@
 Fri May 13 13:00:38 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)
 
+	* ldlang.c (print_output_section_statement): Change ``no attached
+	output section'' message slightly.
+	(lang_do_assignments): Don't recurse down if there is no real
+	section.
+
 	* config/i386-linux.mt (OTHER_EMULATIONS): Change em_ to e to
 	match corresponding change in emulation templates.
 	* config/i386-lynx.mt, config/m68k-lynx.mt: Likewise.
diff --git a/ld/ldlang.c b/ld/ldlang.c
index 98a0e8d0043..a639fd12037 100644
--- a/ld/ldlang.c
+++ b/ld/ldlang.c
@@ -1135,7 +1135,7 @@ print_output_section_statement (output_section_statement)
   }
   else
   {
-    fprintf (config.map_file, "No attached output section");
+    fprintf (config.map_file, " (no attached output section)");
   }
   print_nl ();
   if (output_section_statement->load_base)
@@ -1912,11 +1912,15 @@ lang_do_assignments (s, output_section_statement, fill, dot)
 	case lang_output_section_statement_enum:
 	  {
 	    lang_output_section_statement_type *os =
-	    &(s->output_section_statement);
+	      &(s->output_section_statement);
 
-	    dot = os->bfd_section->vma;
-	    (void) lang_do_assignments (os->children.head, os, os->fill, dot);
-	    dot = os->bfd_section->vma + os->bfd_section->_raw_size;
+	    if (os->bfd_section != NULL)
+	      {
+		dot = os->bfd_section->vma;
+		(void) lang_do_assignments (os->children.head, os,
+					    os->fill, dot);
+		dot = os->bfd_section->vma + os->bfd_section->_raw_size;
+	      }
 	  }
 	  break;
 	case lang_wild_statement_enum: