* elf-bfd.h (struct elf_backend_data): Add want_dynbss.
authorRichard Henderson <rth@redhat.com>
Tue, 13 Jul 1999 18:31:17 +0000 (18:31 +0000)
committerRichard Henderson <rth@redhat.com>
Tue, 13 Jul 1999 18:31:17 +0000 (18:31 +0000)
        * elflink.c (_bfd_elf_create_dynamic_sections): Only create
        .dynbss and .rel[a].bss if want_dynbss.
        * elfxx-target.h (elf_backend_want_dynbss): Provide default.

bfd/ChangeLog
bfd/elf-bfd.h
bfd/elflink.c
bfd/elfxx-target.h

index e3d3275d345b04b2f5f340a8e88b089fd6f58152..f359ff7746e8d48b0598c16364944fcbb2c2e4a5 100644 (file)
@@ -1,7 +1,16 @@
+1999-07-13  Richard Henderson  <rth@cygnus.com>
+
+       * elf-bfd.h (struct elf_backend_data): Add want_dynbss.
+       * elflink.c (_bfd_elf_create_dynamic_sections): Only create
+       .dynbss and .rel[a].bss if want_dynbss.
+       * elfxx-target.h (elf_backend_want_dynbss): Provide default.
+
 1999-07-13  Richard Henderson  <rth@cygnus.com>
 
        * elf.c (assign_file_positions_for_segments): Don't overwrite p_flags.
 
+1999-07-13  Richard Henderson  <rth@cygnus.com>
+
        * elf-bfd.h (struct elf_link_local_dynamic_entry): New.
        (struct elf_link_hash_table): Add dynlocal.
        (_bfd_elf_link_lookup_local_dynindx): Prototype.
index 6c20b06033d3111c6c8d86efed4ac62c2cab7d0d..577823b8257f0abbc195b43306365328de7dac29 100644 (file)
@@ -623,6 +623,7 @@ struct elf_backend_data
   unsigned plt_not_loaded : 1;
   unsigned plt_alignment : 4;
   unsigned can_gc_sections : 1;
+  unsigned want_dynbss : 1;
 };
 
 /* Information stored for each BFD section in an ELF file.  This
index 93155b11af79a45b47e5254697eb4e821183103c..c30915be5db36a97f83d024e6c8906fb244eafbf 100644 (file)
@@ -157,18 +157,20 @@ _bfd_elf_create_dynamic_sections (abfd, info)
   if (! _bfd_elf_create_got_section (abfd, info))
     return false;
 
-  /* The .dynbss section is a place to put symbols which are defined
-     by dynamic objects, are referenced by regular objects, and are
-     not functions.  We must allocate space for them in the process
-     image and use a R_*_COPY reloc to tell the dynamic linker to
-     initialize them at run time.  The linker script puts the .dynbss
-     section into the .bss section of the final image.  */
-  s = bfd_make_section (abfd, ".dynbss");
-  if (s == NULL
-      || ! bfd_set_section_flags (abfd, s, SEC_ALLOC))
-    return false;
+  if (bed->want_dynbss)
+    {
+      /* The .dynbss section is a place to put symbols which are defined
+        by dynamic objects, are referenced by regular objects, and are
+        not functions.  We must allocate space for them in the process
+        image and use a R_*_COPY reloc to tell the dynamic linker to
+        initialize them at run time.  The linker script puts the .dynbss
+        section into the .bss section of the final image.  */
+      s = bfd_make_section (abfd, ".dynbss");
+      if (s == NULL
+         || ! bfd_set_section_flags (abfd, s, SEC_ALLOC))
+       return false;
 
-  /* The .rel[a].bss section holds copy relocs.  This section is not
+      /* The .rel[a].bss section holds copy relocs.  This section is not
      normally needed.  We need to create it here, though, so that the
      linker will map it to an output section.  We can't just create it
      only if we need it, because we will not know whether we need it
@@ -179,15 +181,16 @@ _bfd_elf_create_dynamic_sections (abfd, info)
      be needed, we can discard it later.  We will never need this
      section when generating a shared object, since they do not use
      copy relocs.  */
-  if (! info->shared)
-    {
-      s = bfd_make_section (abfd, 
-                           (bed->default_use_rela_p 
-                            ? ".rela.bss" : ".rel.bss")); 
-      if (s == NULL
-         || ! bfd_set_section_flags (abfd, s, flags | SEC_READONLY)
-         || ! bfd_set_section_alignment (abfd, s, ptralign))
-       return false;
+      if (! info->shared)
+       {
+         s = bfd_make_section (abfd, 
+                               (bed->default_use_rela_p 
+                                ? ".rela.bss" : ".rel.bss")); 
+         if (s == NULL
+             || ! bfd_set_section_flags (abfd, s, flags | SEC_READONLY)
+             || ! bfd_set_section_alignment (abfd, s, ptralign))
+           return false;
+       }
     }
 
   return true;
index 735d95e4644c08f896f774ec5afd97c617e799f8..40d686d0ee524c5def4a307ad26051aa8a81e111 100644 (file)
@@ -80,6 +80,9 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 #ifndef elf_backend_plt_alignment
 #define elf_backend_plt_alignment 2
 #endif
+#ifndef elf_backend_want_dynbss
+#define elf_backend_want_dynbss 1
+#endif
 
 #define bfd_elfNN_bfd_debug_info_start bfd_void
 #define bfd_elfNN_bfd_debug_info_end   bfd_void