* emultempl/elf32.em: For SEC_EXCLUDE sections, ensure that
authorAlan Modra <amodra@gmail.com>
Mon, 13 Aug 2001 14:28:57 +0000 (14:28 +0000)
committerAlan Modra <amodra@gmail.com>
Mon, 13 Aug 2001 14:28:57 +0000 (14:28 +0000)
output_section is set non-NULL.

ld/ChangeLog
ld/emultempl/elf32.em

index 45cb574..aa042b3 100644 (file)
@@ -1,5 +1,8 @@
 2001-08-13  Alan Modra  <amodra@bigpond.net.au>
 
+       * emultempl/elf32.em: For SEC_EXCLUDE sections, ensure that
+       output_section is set non-NULL.
+
        * emultempl/elf32.em (gld${EMULATION_NAME}_place_orphan): Return
        `true' for SEC_EXCLUDE sections so that the generic code doesn't
        needlessly create an output_section_statement.  Treat a correctly
 
 2001-07-14  Nick Clifton  <nickc@cambridge.redhat.com>
 
-       * Makefile.am (em32relf.c): Chnage dependencu from generic.em to
+       * Makefile.am (em32relf.c): Change dependency from generic.em to
        elf32.em.
        * Makefile.in: Regenerate.
 
        * ldlang.c (walk_wild): Only call walk_wild_file if
        lookup_name returns something.
        (lookup_name): If load_symbols fails, return NULL.
-       (load_symbols): Chnage to a boolean function.
+       (load_symbols): Change to a boolean function.
        (open_input_bfds): If load_symbols fails then do not make the
        executable.
 
index d6d4729..ce06310 100644 (file)
@@ -1084,7 +1084,7 @@ gld${EMULATION_NAME}_place_orphan (file, s)
                  & (SEC_LOAD | SEC_ALLOC)) == 0))
        {
          /* We already have an output section statement with this
-            name, and its bfd section has compatible flags.  */
+            name, and its bfd section, if any, has compatible flags.  */
          wild_doit (&os->children, s, os, file);
          return true;
        }
@@ -1113,7 +1113,11 @@ gld${EMULATION_NAME}_place_orphan (file, s)
 (hold.os != NULL || (hold.os = lang_output_section_find (name)) != NULL)
 
   if (s->flags & SEC_EXCLUDE)
-    return true;
+    {
+      if (s->output_section == NULL)
+       s->output_section = bfd_abs_section_ptr;
+      return true;
+    }
 
   place = NULL;
   if ((s->flags & SEC_ALLOC) == 0)