summaryrefslogtreecommitdiff
path: root/bfd/peicode.h
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@airs.com>1999-09-11 22:52:20 +0000
committerIan Lance Taylor <ian@airs.com>1999-09-11 22:52:20 +0000
commitf46926e705ace61a63075f5b836c2b1ef8adc1e0 (patch)
tree8b63b8ae3adb2b9f0441efca7f68eb6c5dfcbdf6 /bfd/peicode.h
parentb8ba86ed0bb26e09322ffc6f50083bd7f0500868 (diff)
downloadgdb-f46926e705ace61a63075f5b836c2b1ef8adc1e0.tar.gz
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.
Diffstat (limited to 'bfd/peicode.h')
-rw-r--r--bfd/peicode.h18
1 files changed, 12 insertions, 6 deletions
diff --git a/bfd/peicode.h b/bfd/peicode.h
index 7193add687f..d284dd9cf6e 100644
--- a/bfd/peicode.h
+++ b/bfd/peicode.h
@@ -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. */
}
}