aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Chamberlain <sac@cygnus>1995-09-19 21:04:02 +0000
committerSteve Chamberlain <sac@cygnus>1995-09-19 21:04:02 +0000
commit500d7394cf3658c2917329a326b4e6d08633355a (patch)
tree69136779edbf023b04f9b793bd7278f8faae917c
parentf74b6b5f53cfe32b038eb6cd089021d6893aa5b2 (diff)
downloadgdb-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/ChangeLog5
-rw-r--r--bfd/peicode.h34
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);