diff --git a/gas/ChangeLog b/gas/ChangeLog index 9044220ded..055983f8b6 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,12 @@ +2005-11-26 Arnold Metselaar + + * config/tc-z80.c (z80_start_line_hook): issue an error when + redefining a symbol with equ + * doc/as.texinfo(equ): mention difference with .equiv + * doc/as.texinfo(err): fix typo + * doc/c-z80.texi(equ): redefining a symbol with equ is no longer + allowed + 2005-11-24 John David Anglin Bug gas/1896 diff --git a/gas/config/tc-z80.c b/gas/config/tc-z80.c index 28f69b1d54..09fd1c3b40 100644 --- a/gas/config/tc-z80.c +++ b/gas/config/tc-z80.c @@ -267,6 +267,7 @@ z80_start_line_hook (void) { char c, *rest, *line_start; int len; + symbolS * symbolP; line_start = input_line_pointer; LISTING_NEWLINE (); @@ -293,10 +294,14 @@ z80_start_line_hook (void) if (line_start[-1] == '\n') bump_line_counters (); /* Most Z80 assemblers require the first definition of a - label to use "EQU" and redefinitions to have "DEFL". - That does not fit the way GNU as deals with labels, so - GNU as is more permissive. */ - equals (line_start, TRUE); + label to use "EQU" and redefinitions to have "DEFL". */ + if (len == 3 && (symbolP = symbol_find (line_start)) != NULL) + { + if (S_IS_DEFINED (symbolP) || symbol_equated_p (symbolP)) + as_bad (_("symbol `%s' is already defined"), line_start); + } + /* All symbols may be redefined. */ + equals (line_start, 1); return 1; } else diff --git a/gas/doc/as.texinfo b/gas/doc/as.texinfo index cb1c26b062..b6879e2770 100644 --- a/gas/doc/as.texinfo +++ b/gas/doc/as.texinfo @@ -4324,6 +4324,7 @@ The syntax for @code{equ} on the HPPA is The syntax for @code{equ} on the Z80 is @samp{@var{symbol} equ @var{expression}}. On the Z80 it is an eror if @var{symbol} is already defined, +but the symbol is not protected from later redefinition, compare @xref{Equiv}. @end ifset @@ -4357,7 +4358,7 @@ value is taken. @cindex @code{err} directive If @command{@value{AS}} assembles a @code{.err} directive, it will print an error message and, unless the @option{-Z} option was used, it will not generate an -object file. This can be used to signal error an conditionally compiled code. +object file. This can be used to signal an error in conditionally compiled code. @node Error @section @code{.error "@var{string}"} diff --git a/gas/doc/c-z80.texi b/gas/doc/c-z80.texi index f650581c0e..c3e64bf925 100644 --- a/gas/doc/c-z80.texi +++ b/gas/doc/c-z80.texi @@ -7,7 +7,6 @@ @chapter Z80 Dependent Features @end ifset -@c DO-NOT-COMMIT @ifclear GENERIC @node Machine Dependencies @@ -168,9 +167,9 @@ Fill @var{count} bytes in the object file with @var{value}, if @item @var{symbol} equ @var{expression} @itemx @var{symbol} defl @var{expression} -These directives set the value of @var{symbol} to @var{expression}. To -keep code portable to other assemblers it is best to use @samp{equ} for -the first definition and @samp{defl} for redefinitions. +These directives set the value of @var{symbol} to @var{expression}. If +@code{equ} is used, it is an error if @var{symbol} is already defined. +Symbols defined with @code{equ} are not protected from redefinition. @item set This is a normal instruction on Z80, and not an assembler directive.