diff options
author | Ian Lance Taylor <ian@airs.com> | 1999-09-11 22:52:20 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@airs.com> | 1999-09-11 22:52:20 +0000 |
commit | f46926e705ace61a63075f5b836c2b1ef8adc1e0 (patch) | |
tree | 8b63b8ae3adb2b9f0441efca7f68eb6c5dfcbdf6 /bfd/peicode.h | |
parent | b8ba86ed0bb26e09322ffc6f50083bd7f0500868 (diff) | |
download | gdb-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.h | 18 |
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. */ } } |