]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
* ecoff.c (ecoff_sizeof_headers): Align result to 16 byte
authorIan Lance Taylor <ian@airs.com>
Fri, 25 Feb 1994 19:42:43 +0000 (19:42 +0000)
committerIan Lance Taylor <ian@airs.com>
Fri, 25 Feb 1994 19:42:43 +0000 (19:42 +0000)
boundary.

bfd/ChangeLog
bfd/ecoff.c

index 3fc690ecb8db28ff56aac4ba934df12cdb82f6cb..a6b8961f2f353cec2c3f927ef7aa6a5e1617c086 100644 (file)
@@ -1,3 +1,14 @@
+Fri Feb 25 11:41:57 1994  Ian Lance Taylor  (ian@cygnus.com)
+
+       * ecoff.c (ecoff_sizeof_headers): Align result to 16 byte
+       boundary.
+
+Thu Feb 24 07:13:22 1994  Jeffrey A. Law  (law@snake.cs.utah.edu)
+
+       * som.c (som_bfd_derive_misc_symbol_info): Derive symbol_info
+       field for absolute symbols in the same manner as undefined
+       and common symbols.
+
 Thu Feb 24 04:29:19 1994  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)
 
        * elfcode.h (elf_core_file_p):  Check for core file e_machine match
index 1f74ca8ff00fa568a368a6a58a7f62054f1383f9..c99d72453d64d7edf6f6833b3cbd5aab19ee40d1 100644 (file)
@@ -2140,9 +2140,10 @@ ecoff_sizeof_headers (abfd, reloc)
     if (strcmp (current->name, REGINFO) != 0)
       ++c;
 
-  return (bfd_coff_filhsz (abfd)
-         + bfd_coff_aoutsz (abfd)
-         + c * bfd_coff_scnhsz (abfd));
+  ret = (bfd_coff_filhsz (abfd)
+        + bfd_coff_aoutsz (abfd)
+        + c * bfd_coff_scnhsz (abfd));
+  return BFD_ALIGN (ret, 16);
 }
 
 /* Get the contents of a section.  This is where we handle reading the
@@ -2831,24 +2832,28 @@ ecoff_write_object_contents (abfd)
              == false)
            return false;
        }
-      else if ((abfd->flags & EXEC_P) != 0
-              && (abfd->flags & D_PAGED) != 0)
-       {
-         char c;
+    }
 
-         /* A demand paged executable must occupy an even number of
-            pages.  */
-         if (bfd_seek (abfd, (file_ptr) ecoff_data (abfd)->sym_filepos - 1,
-                       SEEK_SET) != 0)
-           return false;
-         if (bfd_read (&c, 1, 1, abfd) == 0)
-           c = 0;
-         if (bfd_seek (abfd, (file_ptr) ecoff_data (abfd)->sym_filepos - 1,
-                       SEEK_SET) != 0)
-           return false;
-         if (bfd_write (&c, 1, 1, abfd) != 1)
-           return false;      
-       }
+  /* The .bss section of a demand paged executable must receive an
+     entire page.  If there are symbols, the symbols will start on the
+     next page.  If there are no symbols, we must fill out the page by
+     hand.  */
+  if (bfd_get_symcount (abfd) == 0
+      && (abfd->flags & EXEC_P) != 0
+      && (abfd->flags & D_PAGED) != 0)
+    {
+      char c;
+
+      if (bfd_seek (abfd, (file_ptr) ecoff_data (abfd)->sym_filepos - 1,
+                   SEEK_SET) != 0)
+       return false;
+      if (bfd_read (&c, 1, 1, abfd) == 0)
+       c = 0;
+      if (bfd_seek (abfd, (file_ptr) ecoff_data (abfd)->sym_filepos - 1,
+                   SEEK_SET) != 0)
+       return false;
+      if (bfd_write (&c, 1, 1, abfd) != 1)
+       return false;      
     }
 
   return true;
@@ -3932,7 +3937,6 @@ ecoff_bfd_final_link (abfd, info)
   /* We accumulate the debugging information counts in the symbolic
      header.  */
   symhdr = &debug->symbolic_header;
-  symhdr->magic = backend->debug_swap.sym_magic;
   symhdr->vstamp = 0;
   symhdr->ilineMax = 0;
   symhdr->cbLine = 0;