+2000-02-18 Nick Clifton <nickc@cygnus.com>
+
+ * config/arm/elf.h (ASM_OUTPUT_ALIGN): Do not generate
+ anything for an alignment of zero.
+
+ * config/arm/thumb.h (ASM_OUTPUT_ALIGN): Do not generate
+ anything for an alignment of zero.
+
2000-02-18 Martin von Loewis <loewis@informatik.hu-berlin.de>
* gcc.texi (Bug Reporting): Refer to bugs.html.
not defined, the default value is `BIGGEST_ALIGNMENT'. */
#define MAX_OFILE_ALIGNMENT (32768 * 8)
-/* Align output to a power of two. */
-#define ASM_OUTPUT_ALIGN(STREAM, POWER) \
- fprintf (STREAM, "\t.align\t%d\n", POWER)
+/* Align output to a power of two. Note ".align 0" is redundant,
+ and also GAS will treat it as ".align 2" which we do not want. */
+#define ASM_OUTPUT_ALIGN(STREAM, POWER) \
+ do \
+ { \
+ if ((POWER) > 0) \
+ fprintf (STREAM, "\t.align\t%d\n", POWER); \
+ } \
+ while (0)
#include "arm/aout.h"
#define ASM_OUTPUT_SKIP(STREAM, NBYTES) \
fprintf ((STREAM), "\t.space\t%u\n", (NBYTES))
-/* This is how to output an assembler line
- that says to advance the location counter
- to a multiple of 2**LOG bytes. */
-#define ASM_OUTPUT_ALIGN(STREAM,LOG) \
-{ \
- fprintf (STREAM, "\t.align\t%d\n", (LOG)); \
-}
+/* This is how to output an assembler line that says to advance the
+ location counter to a multiple of 2**LOG bytes. Advancing to the
+ nearest 1 byte boundary is redundant, and anyway the assembler would
+ treat it as meaning "advance to nearest 4 byte boundary", which we do
+ not want. */
+#define ASM_OUTPUT_ALIGN(STREAM,LOG) \
+ do \
+ { \
+ if ((LOG) > 0) \
+ fprintf (STREAM, "\t.align\t%d\n", LOG); \
+ } \
+ while (0)
/* Output a common block */
#define ASM_OUTPUT_COMMON(STREAM, NAME, SIZE, ROUNDED) \