* bout.c (b_out_write_object_contents): Don't use sizeof on host
authorAlan Modra <amodra@gmail.com>
Tue, 1 Mar 2005 00:38:52 +0000 (00:38 +0000)
committerAlan Modra <amodra@gmail.com>
Tue, 1 Mar 2005 00:38:52 +0000 (00:38 +0000)
structs to size on-disk structures.
(b_out_set_section_contents): Size the external struct, not the
internal one for on-disk size.
(b_out_sizeof_headers): Likewise.

bfd/ChangeLog
bfd/bout.c

index 9be74e3e4aa34dc6809e275dff68df3fe4958077..ee38ffc924cd300593d12f3948f45c4cf2b096f3 100644 (file)
@@ -1,3 +1,11 @@
+2005-03-01  Alan Modra  <amodra@bigpond.net.au>
+
+       * bout.c (b_out_write_object_contents): Don't use sizeof on host
+       structs to size on-disk structures.
+       (b_out_set_section_contents): Size the external struct, not the
+       internal one for on-disk size.
+       (b_out_sizeof_headers): Likewise.
+
 2005-03-01  Alan Modra  <amodra@bigpond.net.au>
 
        * elf64-ppc.c (ppc64_elf_size_stubs): Override defined dot-sym
index fe0c867fc5861fb80f7e92f0af3820716ddc7a0b..e3ab1a6d7d90a174d4f37ce24bea83b50306db50 100644 (file)
@@ -297,12 +297,10 @@ b_out_write_object_contents (abfd)
   exec_hdr (abfd)->a_text = obj_textsec (abfd)->size;
   exec_hdr (abfd)->a_data = obj_datasec (abfd)->size;
   exec_hdr (abfd)->a_bss = obj_bsssec (abfd)->size;
-  exec_hdr (abfd)->a_syms = bfd_get_symcount (abfd) * sizeof (struct nlist);
+  exec_hdr (abfd)->a_syms = bfd_get_symcount (abfd) * 12;
   exec_hdr (abfd)->a_entry = bfd_get_start_address (abfd);
-  exec_hdr (abfd)->a_trsize = ((obj_textsec (abfd)->reloc_count) *
-                               sizeof (struct relocation_info));
-  exec_hdr (abfd)->a_drsize = ((obj_datasec (abfd)->reloc_count) *
-                               sizeof (struct relocation_info));
+  exec_hdr (abfd)->a_trsize = (obj_textsec (abfd)->reloc_count) * 8;
+  exec_hdr (abfd)->a_drsize = (obj_datasec (abfd)->reloc_count) * 8;
 
   exec_hdr (abfd)->a_talign = obj_textsec (abfd)->alignment_power;
   exec_hdr (abfd)->a_dalign = obj_datasec (abfd)->alignment_power;
@@ -993,7 +991,7 @@ b_out_set_section_contents (abfd, section, location, offset, count)
       if (! aout_32_make_sections (abfd))
        return FALSE;
 
-      obj_textsec (abfd)->filepos = sizeof (struct internal_exec);
+      obj_textsec (abfd)->filepos = sizeof (struct external_exec);
       obj_datasec(abfd)->filepos = obj_textsec(abfd)->filepos
        +  obj_textsec (abfd)->size;
     }
@@ -1044,7 +1042,7 @@ b_out_sizeof_headers (ignore_abfd, ignore)
      bfd *ignore_abfd ATTRIBUTE_UNUSED;
      bfd_boolean ignore ATTRIBUTE_UNUSED;
 {
-  return sizeof (struct internal_exec);
+  return sizeof (struct external_exec);
 }
 \f