mirror of
https://github.com/netwide-assembler/nasm.git
synced 2024-12-21 09:19:31 +08:00
e91f5cc132
Macro aliases can legitimately point to nonexistent macros. Furthermore, %undef should remove the pointed-at macro, not the alias. This led to an infinite loop in the existing code; fix that. Add an %ifdefalias directive to test for the existence of an alias. Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
103 lines
2.4 KiB
Plaintext
103 lines
2.4 KiB
Plaintext
## --------------------------------------------------------------------------
|
|
##
|
|
## Copyright 1996-2019 The NASM Authors - All Rights Reserved
|
|
## See the file AUTHORS included with the NASM distribution for
|
|
## the specific copyright holders.
|
|
##
|
|
## Redistribution and use in source and binary forms, with or without
|
|
## modification, are permitted provided that the following
|
|
## conditions are met:
|
|
##
|
|
## * Redistributions of source code must retain the above copyright
|
|
## notice, this list of conditions and the following disclaimer.
|
|
## * Redistributions in binary form must reproduce the above
|
|
## copyright notice, this list of conditions and the following
|
|
## disclaimer in the documentation and/or other materials provided
|
|
## with the distribution.
|
|
##
|
|
## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
|
|
## CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
|
## INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
## DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
|
## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
|
## NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
## LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
## HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
## CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
|
## OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
|
## EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
##
|
|
## --------------------------------------------------------------------------
|
|
|
|
#
|
|
# A * at the end indicates a condition; the list of conditions are
|
|
# on lines starting with *; the negatives are auto-generated
|
|
#
|
|
|
|
# Condition stems. %if MUST BE FIRST in this list.
|
|
%if*
|
|
%elif*
|
|
|
|
# Condition tests
|
|
*
|
|
*ctx
|
|
*def
|
|
*defalias
|
|
*empty
|
|
*env
|
|
*id
|
|
*idn
|
|
*idni
|
|
*macro
|
|
*num
|
|
*str
|
|
*token
|
|
*usable
|
|
*using
|
|
|
|
# Directives with -i- versions for case insensitive
|
|
%!assign
|
|
%!defalias
|
|
%!define
|
|
%!defstr
|
|
%!deftok
|
|
%!macro
|
|
%!pathsearch
|
|
%!rmacro
|
|
%!strcat
|
|
%!strlen
|
|
%!substr
|
|
%!xdefine
|
|
%un!macro
|
|
|
|
# Other directives
|
|
%aliases
|
|
%arg
|
|
%clear
|
|
%depend
|
|
%else
|
|
%endif
|
|
%endm
|
|
%endmacro
|
|
%endrep
|
|
%error
|
|
%exitmacro
|
|
%exitrep
|
|
%fatal
|
|
%include
|
|
%line
|
|
%local
|
|
%pop
|
|
%pragma
|
|
%push
|
|
%rep
|
|
%repl
|
|
%rotate
|
|
%stacksize
|
|
%undef
|
|
%undefalias
|
|
%use
|
|
%warning
|