1999-09-11 Donn Terry <donn@interix.com>
authorIan Lance Taylor <ian@airs.com>
Sat, 11 Sep 1999 22:52:20 +0000 (22:52 +0000)
committerIan Lance Taylor <ian@airs.com>
Sat, 11 Sep 1999 22:52:20 +0000 (22:52 +0000)
* peicode.h (coff_swap_scnhdr_in): Don't check for a special
section name of _BSS; check IMAGE_SCN_CNT_UNINITIALIZED_DATA
instead.  Don't clear the s_paddr field for an uninitialized data
section.

bfd/ChangeLog
bfd/peicode.h

index d6992ad92f3540d09a1fcd8ca973a7bc6a4f0257..d844da2d3200452148c7baffa4fbf8ef9cfbb3df 100644 (file)
@@ -7,6 +7,11 @@
 
 1999-09-11  Donn Terry  <donn@interix.com>
 
+       * peicode.h (coff_swap_scnhdr_in): Don't check for a special
+       section name of _BSS; check IMAGE_SCN_CNT_UNINITIALIZED_DATA
+       instead.  Don't clear the s_paddr field for an uninitialized data
+       section.
+
        * coffcode.h (coff_mkobject_hook): Set timestamp field in
        coff_data_type to f_timdat.
        * peicode.h (pe_mkobject_hook): Likewise.
index 7193add687f6e69cb4c8ac67a521d71f0bfc0c67..d284dd9cf6eb461d9950b18838450da3f61c343c 100644 (file)
@@ -1112,10 +1112,10 @@ coff_swap_aouthdr_out (abfd, in, out)
 }
 
 static void
-    coff_swap_scnhdr_in (abfd, ext, in)
-      bfd            *abfd;
-  PTR       ext;
-  PTR       in;
+coff_swap_scnhdr_in (abfd, ext, in)
+     bfd            *abfd;
+     PTR            ext;
+     PTR            in;
 {
   SCNHDR *scnhdr_ext = (SCNHDR *) ext;
   struct internal_scnhdr *scnhdr_int = (struct internal_scnhdr *) in;
@@ -1143,10 +1143,16 @@ static void
       scnhdr_int->s_vaddr += pe_data (abfd)->pe_opthdr.ImageBase;
       scnhdr_int->s_vaddr &= 0xffffffff;
     }
-  if (strcmp (scnhdr_int->s_name, _BSS) == 0) 
+
+  /* If this section holds uninitialized data, use the virtual size
+     (stored in s_paddr) instead of the physical size.  */
+  if ((scnhdr_int->s_flags & IMAGE_SCN_CNT_UNINITIALIZED_DATA) != 0)
     {
       scnhdr_int->s_size = scnhdr_int->s_paddr;
-      scnhdr_int->s_paddr = 0;
+      /* This code used to set scnhdr_int->s_paddr to 0.  However,
+         coff_set_alignment_hook stores s_paddr in virt_size, which
+         only works if it correctly holds the virtual size of the
+         section.  */
     }
 }