* exec.c (add_to_section_table): Do not discard empty sections.
authorJoel Brobecker <brobecker@gnat.com>
Fri, 9 Feb 2007 20:11:47 +0000 (20:11 +0000)
committerJoel Brobecker <brobecker@gnat.com>
Fri, 9 Feb 2007 20:11:47 +0000 (20:11 +0000)
gdb/ChangeLog
gdb/exec.c

index 6ec59a485fdbb08bf67ad0fc2b02c409991c7bd2..e91174874b8ca57f222ae634b15e01b5337f9ea2 100644 (file)
@@ -1,3 +1,7 @@
+2007-02-09  Joel Brobecker  <brobecker@adacore.com>
+
+       * exec.c (add_to_section_table): Do not discard empty sections.
+
 2007-02-08  Daniel Jacobowitz  <dan@codesourcery.com>
 
        * features/Makefile, features/arm-with-iwmmxt.xml,
index fde35eb92ebeb696c97fd6816b7df4e65a8b95b8..e2d6b995c90f13d4693a18eba3c181394996e8c4 100644 (file)
@@ -345,11 +345,15 @@ add_to_section_table (bfd *abfd, struct bfd_section *asect,
   struct section_table **table_pp = (struct section_table **) table_pp_char;
   flagword aflag;
 
+  /* Check the section flags, but do not discard zero-length sections, since
+     some symbols may still be attached to this section.  For instance, we
+     encountered on sparc-solaris 2.10 a shared library with an empty .bss
+     section to which a symbol named "_end" was attached.  The address
+     of this symbol still needs to be relocated.  */
   aflag = bfd_get_section_flags (abfd, asect);
   if (!(aflag & SEC_ALLOC))
     return;
-  if (0 == bfd_section_size (abfd, asect))
-    return;
+
   (*table_pp)->bfd = abfd;
   (*table_pp)->the_bfd_section = asect;
   (*table_pp)->addr = bfd_section_vma (abfd, asect);