diff options
author | Steve Chamberlain <sac@cygnus> | 1995-09-19 21:04:02 +0000 |
---|---|---|
committer | Steve Chamberlain <sac@cygnus> | 1995-09-19 21:04:02 +0000 |
commit | 500d7394cf3658c2917329a326b4e6d08633355a (patch) | |
tree | 69136779edbf023b04f9b793bd7278f8faae917c | |
parent | f74b6b5f53cfe32b038eb6cd089021d6893aa5b2 (diff) | |
download | gdb-500d7394cf3658c2917329a326b4e6d08633355a.zip gdb-500d7394cf3658c2917329a326b4e6d08633355a.tar.gz gdb-500d7394cf3658c2917329a326b4e6d08633355a.tar.bz2 |
Tue Sep 19 14:02:21 1995 steve chamberlain <sac@slash.cygnus.com>
* peicode.h (coff_swap_scnhdr_out): Get sizes for BSS right.
(pr 8045)
-rw-r--r-- | bfd/ChangeLog | 5 | ||||
-rw-r--r-- | bfd/peicode.h | 34 |
2 files changed, 25 insertions, 14 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 4aac9b3..84f69dd 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +Tue Sep 19 14:02:21 1995 steve chamberlain <sac@slash.cygnus.com> + + * peicode.h (coff_swap_scnhdr_out): Get sizes for BSS right. + (pr 8045) + Mon Sep 18 14:35:01 1995 Arne H. Juul <arnej@pvv.unit.no> * config.bfd (mips-dec-netbsd*): New target. diff --git a/bfd/peicode.h b/bfd/peicode.h index 5b52a92..ab244e1 100644 --- a/bfd/peicode.h +++ b/bfd/peicode.h @@ -894,15 +894,16 @@ static void } static unsigned int - coff_swap_scnhdr_out (abfd, in, out) -bfd *abfd; -PTR in; -PTR out; +coff_swap_scnhdr_out (abfd, in, out) + bfd *abfd; + PTR in; + PTR out; { struct internal_scnhdr *scnhdr_int = (struct internal_scnhdr *)in; SCNHDR *scnhdr_ext = (SCNHDR *)out; unsigned int ret = sizeof (SCNHDR); - bfd_vma s; + bfd_vma ps; + bfd_vma ss; memcpy(scnhdr_ext->s_name, scnhdr_int->s_name, sizeof(scnhdr_int->s_name)); @@ -912,21 +913,26 @@ PTR out; - pe_data(abfd)->pe_opthdr.ImageBase), (bfd_byte *) scnhdr_ext->s_vaddr); - /* Note that we're really stuffing in the raw size into here. */ - - - PUT_SCNHDR_SIZE (abfd, scnhdr_int->s_size, - (bfd_byte *) scnhdr_ext->s_size); - /* NT wants the size data to be rounded up to the next NT_FILE_ALIGNMENT value except for the BSS section, its s_size should be 0 */ + if (strcmp (scnhdr_int->s_name, _BSS) == 0) - s = 0; + { + ps = scnhdr_int->s_size; + ss = 0; + } else - s = scnhdr_int->s_paddr; + { + ps = scnhdr_int->s_paddr; + ss = scnhdr_int->s_size; + } + + PUT_SCNHDR_SIZE (abfd, ss, + (bfd_byte *) scnhdr_ext->s_size); + - PUT_SCNHDR_PADDR (abfd, s, (bfd_byte *) scnhdr_ext->s_paddr); + PUT_SCNHDR_PADDR (abfd, ps, (bfd_byte *) scnhdr_ext->s_paddr); PUT_SCNHDR_SCNPTR (abfd, scnhdr_int->s_scnptr, (bfd_byte *) scnhdr_ext->s_scnptr); |