+2005-11-26 Arnold Metselaar <arnoldm@sourceware.org>
+
+ * config/tc-z80.c (z80_start_line_hook): issue an error when
+ redefining a symbol with equ
+ * doc/as.texinfo(equ<z80>): 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 <dave.anglin@nrc-cnrc.gc.ca>
Bug gas/1896
{
char c, *rest, *line_start;
int len;
+ symbolS * symbolP;
line_start = input_line_pointer;
LISTING_NEWLINE ();
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
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
@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}"}
@chapter Z80 Dependent Features
@end ifset
-@c DO-NOT-COMMIT
@ifclear GENERIC
@node Machine Dependencies
@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.