preproc: %clear options, backwards compatibility hack for x264
commitee0e3ec5a41f3524eb99dd8772cbbca12f7b4c29
authorH. Peter Anvin (Intel) <hpa@zytor.com>
Tue, 9 Jun 2020 02:01:48 +0000 (8 19:01 -0700)
committerH. Peter Anvin (Intel) <hpa@zytor.com>
Tue, 9 Jun 2020 02:01:48 +0000 (8 19:01 -0700)
tree04978fb67bb70ecd9e4d79763f1ff6994acb4aca
parentf9f37ddcfeb918420c2b019a56a2b97280f677a8
preproc: %clear options, backwards compatibility hack for x264

The handling of empty arguments in NASM 2.14 and below was at best
"interesting"; a single whitespace token expansion, which can happen
during macro expansion, would sometimes be counted as an argument and
sometimes not.

One really weird effect of this was that %0 doesn't always match the
permitted range in the macro specification!

Add some backwards compatibility code to make x264/ffmpeg compile.

Add override via:

    %pragma preproc sane_empty_expansion true

Add support for %clear to clear specific subsets of the macro
definitions. In particular:

    %clear defalias

... can be used to wipe the __FOO__ backwards macro compatibility
aliases which may interfere with the C namespace.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
asm/preproc.c