* config/tc-i386.c (md_section_align): If a.out and BFD, force
authorIan Lance Taylor <ian@airs.com>
Tue, 6 May 1997 16:19:04 +0000 (16:19 +0000)
committerIan Lance Taylor <ian@airs.com>
Tue, 6 May 1997 16:19:04 +0000 (16:19 +0000)
section size to be aligned.

gas/ChangeLog
gas/config/tc-i386.c

index 889e391..38add04 100644 (file)
@@ -1,3 +1,8 @@
+Tue May  6 12:18:09 1997  Ian Lance Taylor  <ian@cygnus.com>
+
+       * config/tc-i386.c (md_section_align): If a.out and BFD, force
+       section size to be aligned.
+
 Mon May  5 17:16:55 1997  Ian Lance Taylor  <ian@cygnus.com>
 
        * cond.c: Include "macro.h".
index 4a20a7e..1b4424d 100644 (file)
@@ -2981,7 +2981,21 @@ md_section_align (segment, size)
      segT segment;
      valueT size;
 {
-  return size;                 /* Byte alignment is fine */
+#ifdef OBJ_AOUT
+#ifdef BFD_ASSEMBLER
+  /* For a.out, force the section size to be aligned.  If we don't do
+     this, BFD will align it for us, but it will not write out the
+     final bytes of the section.  This may be a bug in BFD, but it is
+     easier to fix it here since that is how the other a.out targets
+     work.  */
+  int align;
+
+  align = bfd_get_section_alignment (stdoutput, segment);
+  size = ((size + (1 << align) - 1) & ((valueT) -1 << align));
+#endif
+#endif
+
+  return size;
 }
 
 /* Exactly what point is a PC-relative offset relative TO?  On the