From 0e2a616bacb8c61d4702ce645f9a989034ad1ccb Mon Sep 17 00:00:00 2001 From: nickc Date: Fri, 18 Feb 2000 18:22:10 +0000 Subject: [PATCH] Prevent emission of "a.lign 0" directives git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@32052 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 8 ++++++++ gcc/config/arm/elf.h | 12 +++++++++--- gcc/config/arm/thumb.h | 19 ++++++++++++------- 3 files changed, 29 insertions(+), 10 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ec117801c98..db5b0a851ce 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2000-02-18 Nick Clifton + + * 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 * gcc.texi (Bug Reporting): Refer to bugs.html. diff --git a/gcc/config/arm/elf.h b/gcc/config/arm/elf.h index 71b36d2b8bf..9b620206da6 100644 --- a/gcc/config/arm/elf.h +++ b/gcc/config/arm/elf.h @@ -356,8 +356,14 @@ dtors_section () \ 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" diff --git a/gcc/config/arm/thumb.h b/gcc/config/arm/thumb.h index ab89828a6e1..2366e14c356 100644 --- a/gcc/config/arm/thumb.h +++ b/gcc/config/arm/thumb.h @@ -139,13 +139,18 @@ extern int target_flags; #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) \ -- 2.11.4.GIT