aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Merge remote-tracking branch 'origin/nasm-2.15.xx'HEADmasterH. Peter Anvin (Intel)2020-06-278-30/+88
|\ | | | | | | | | | | | | Resolved Conflicts: version Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
| * doc: some more cleanups and detailed specificationsH. Peter Anvin (Intel)2020-06-271-10/+19
| | | | | | | | | | | | Some more mostly editorial changes. Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
| * doc: editorial cleanupsH. Peter Anvin (Intel)2020-06-271-15/+37
| | | | | | | | | | | | | | Clean up the language of a few sections, add a few examples, and better document %pragma limit. Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
| * NASM 2.15.01nasm-2.15.01H. Peter Anvin (Intel)2020-06-271-1/+1
| |
| * changes.src: update for 2.15.01H. Peter Anvin (Intel)2020-06-271-0/+9
| | | | | | | | Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
| * insns.dat: Add Intel Control-Flow Enforcement Technology (CET) instructionsHenrik Gramner2020-06-272-0/+17
| | | | | | | | | | | | | | Add instructions for Intel Control Flow Enforcement Technology (CET). Signed-off-by: Henrik Gramner <henrik@gramner.com> Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
| * Makefile: add warnings.src to perlreq; longer list of binary filesH. Peter Anvin (Intel)2020-06-274-5/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add warnings.src to PERLREQ. If this isn't done, warnings.src ends up in the xdoc tarball rather than the release tarball, which means that unless the user can "make warnings" manually (which requires Perl) then they can't build the documentation. As this only affects the documentation build, it probably does not warrant a point release. Add a few more extensions to the list of recognized binary extensions for the purpose of generating a .zip file with DOS line ending conventions. Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
* | Merge tag 'nasm-2.15'H. Peter Anvin (Intel)2020-06-2718-142/+382
|\| | | | | | | | | | | | | NASM 2.15 Resolved Conflicts: version
| * NASM 2.15nasm-2.15H. Peter Anvin (Intel)2020-06-271-1/+1
| |
| * NASM 2.15rc12nasm-2.15rc12H. Peter Anvin (Intel)2020-06-261-1/+1
| |
| * DWARF: consistent version information; drop .debug_loc sectionH. Peter Anvin (Intel)2020-06-261-23/+111
| | | | | | | | | | | | | | | | | | Fix the version information for various sections and generalize their implementation. Drop issuing an empty .debug_pubnames section; like other sections DWARF parsers seem to be unhappy about a section with null content. Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
| * test: add Makefile target for elfx32H. Peter Anvin (Intel)2020-06-261-0/+3
| | | | | | | | | | | | Add an .ox Makefile target for an ELFx32 object. Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
| * dwarf: don't emit a dummy .debug_loc sectionH. Peter Anvin (Intel)2020-06-261-14/+16
| | | | | | | | | | | | | | | | It seems DWARF parsers get really snippy about a section which only contains an end token. Instead, leave unused sections empty. Already did that with .debug_frame, do it with .debug_loc too. Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
| * BR 3392650: Codeview truncates symbol table length to 16 bitsH. Peter Anvin (Intel)2020-06-261-9/+9
| | | | | | | | | | | | | | | | | | | | If the source code is large, it is very reasonable for the symbol table length to exceed 2^16 bits. Use uint32_t to keep track of lengths, even where not necessary... there is no real reason to use uint16_t anywhere. Reported-by: <michael@mehlich.com> Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
| * test: enable debugging outputH. Peter Anvin (Intel)2020-06-261-8/+8
| | | | | | | | | | | | | | There is no reason why we should not emit debugging output when compiling test files for manual analysis, quite the contrary. Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
| * doc: document operator and Dx changesH. Peter Anvin (Intel)2020-06-253-45/+170
| | | | | | | | | | | | | | Document new operators, removal of special casing for %if, and the MASM-like enhancements to the Dx directives. Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
| * NASM 2.15rc11nasm-2.15rc11H. Peter Anvin (Intel)2020-06-251-1/+1
| |
| * BR 3392651: fix the .debug$T section in Codeview output formatH. Peter Anvin (Intel)2020-06-251-24/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The cv8 output format would generate an invalid .debug$T section, containing repeated invalid records, none of which are actually used (which is probably the only reason it actually worked.) Just in case, generate a *single* type record for void func(void); Furthermore, the argument list record should come before the procedure type record (forward references are at least normatively prohibited.) Reported-by: Alexandre Ganea <alexandre.ganea@ubisoft.com> Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
| * NASM 2.15rc10nasm-2.15rc10H. Peter Anvin (Intel)2020-06-221-1/+1
| |
| * BR 3392681: handle a64 instruction patters correctlyH. Peter Anvin (Intel)2020-06-223-4/+25
| | | | | | | | | | | | | | | | | | | | The a64 instruction patterns would incorrectly force REX to zero at a point where REX prefixes have already been assigned. This is not only incorrect in case of instructions which can use high registers, but it causes an assertion failure. It happened to work for J*CXZ and LOOP*. Reported-by: Philip Lantz <philip.lantz@intel.com> Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
| * BR 3392648: rename float.[ch] to floats.[ch]H. Peter Anvin (Intel)2020-06-149-13/+13
| | | | | | | | | | | | | | | | | | Haiku apparently wants to include <float.h> rather than "float.h". Rename float.[ch] to floats.[ch] to avoid unnecessary namespace confusion. Reported-by: <alaviss0+nasm@gmail.com> Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
| * NASM 2.15rc9nasm-2.15rc9H. Peter Anvin (Intel)2020-06-141-1/+1
| |
| * BR 3392657: dwarf: leave .debug_frame emptyH. Peter Anvin (Intel)2020-06-141-3/+8
| | | | | | | | | | | | | | | | Until such time that we have a CFI code generator, leave .debug_frame empty. Reported-by: Philip Craig <philipjcraig@gmail.com> Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
* | version: this is now the 2.16 development branchH. Peter Anvin (Intel)2020-06-141-1/+1
| |
* | Merge tag 'nasm-2.15rc8'H. Peter Anvin (Intel)2020-06-1417-982/+1525
|\| | | | | | | NASM 2.15rc8
| * NASM 2.15rc8nasm-2.15rc8H. Peter Anvin (Intel)2020-06-141-1/+1
| |
| * doc: various documentation updatesH. Peter Anvin (Intel)2020-06-142-106/+265
| |
| * %line: quote filenames with double spaces, use unsigned char checkH. Peter Anvin (Intel)2020-06-141-3/+8
| | | | | | | | | | | | | | | | | | | | Filenames with double spaces need to be quoted; the preprocessor will otherwise collapse spaces into one. When comparing for control characters and spaces, use an unsigned compare. Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
| * preproc, srcfile: much saner handling of %line directivesH. Peter Anvin (Intel)2020-06-145-160/+235
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | %line directives really need to be preprocessed early, before normal directive processing. In particular, they are *not* affected by such thing as smacro expansion, or deferred into an mmacro expansion. The %line directive is special because it is explicitly indented to be inserted by an external preprocessor, which can happen at any point. For mmacro and rep expansions, store the current file and line for each expansion line. Similarly, let each istk entry contain such information. Don't emit empty lines in preprocessing-only mode when we are already required to issue a %line directive anyway. This cuts down on clutter a fair bit. Quote filenames in %line directives (and accept quoted filenames in %line directives) if and only if it is necessary for disambiguation. This is required if: 1. The filename contains control characters; 2. The filename begins or ends with whitespace or a quotation mark; 3. The filename is empty. Otherwise issue the filename as-is, for backwards compatibility. Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
| * preproc.c: make extra sure we always have a null-terminated tokenH. Peter Anvin (Intel)2020-06-141-7/+13
| | | | | | | | | | | | | | | | | | | | | | tok_set_text() and tok_set_text_free() take a length argument, which could at least theoretically mean that we don't have a null-terminated string. Directly enforce a null-terminated string in all cases. In the future this means that it is legal to intentionally use these functions to tokenize a substring. Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
| * preproc.c: make extra sure tokens are always null-terminatedH. Peter Anvin (Intel)2020-06-141-7/+10
| | | | | | | | | | | | | | In tok_set_text() and tok_set_text_free(), don't trust that the caller has given us a zero-terminated string. Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
| * preproc: even more handling of backwards compatibility for mmacrosH. Peter Anvin (Intel)2020-06-142-99/+162
| | | | | | | | | | | | | | | | | | Legacy multi-line macro argument expansion really is very complicated. With these changes, all legacy tests seem to pass, and the only differences with NASM 2.14.xx are that some macros which should have been expanded and were not now are. Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
| * NASM 2.15rc7nasm-2.15rc7H. Peter Anvin (Intel)2020-06-081-1/+1
| |
| * preproc: %clear options, backwards compatibility hack for x264H. Peter Anvin (Intel)2020-06-081-107/+341
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
| * hashtbl.c: don't call nasm_free() for a null pointerH. Peter Anvin (Intel)2020-06-081-2/+3
| | | | | | | | | | | | | | There really isn't much point in calling nasm_free() everywhere, even with a null pointer... Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
| * preproc: need to look at mmac->in_progress not mstk->in_progressH. Peter Anvin (Intel)2020-06-081-2/+3
| | | | | | | | | | | | | | | | | | | | mstk.mstk reflects %rep conditions as well as actual expanded macros. However, in_progress is undefined for %rep loops; we instead want to look at the underlying mmacro, if there is one. Discovered trying to compile x264. Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
| * NASM 2.15rc6nasm-2.15rc6H. Peter Anvin (Intel)2020-06-051-1/+1
| |
| * travis: utf-error.stderr: remove unnecessary error messageH. Peter Anvin (Intel)2020-06-051-3/+0
| | | | | | | | | | | | | | The error message "comma expected after operand 2" no longer occurs in this program, this is an acceptable divergence, however. Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
| * .gitignore: add *.pdf.xzH. Peter Anvin (Intel)2020-06-051-0/+1
| | | | | | | | | | | | Add *.pdf.xz to the gitignore file. Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
| * Fix missing "here" from error messagesH. Peter Anvin (Intel)2020-06-051-0/+4
| | | | | | | | | | | | | | The "here" or "in an unknown location" suffix was inadvertently dropped. Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
| * travis: test avx512f should now passH. Peter Anvin (Intel)2020-06-053-574/+1
| | | | | | | | Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
| * avx512: remove bogus imm8 for specific VCMP and VPCMP operationsH. Peter Anvin (Intel)2020-06-051-584/+584
| | | | | | | | | | | | | | When using VCMP and VPCMP operations with the condition in the opcode, we should not have an immediate operand! Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
| * avx512: implement shorthand forms of VCMP and VPCMP opcodesH. Peter Anvin (Intel)2020-06-051-25/+585
| | | | | | | | | | | | | | The VCMP and VPCMP pseudo-op forms where the destination is a mask were simply broken. Fix them. Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
| * preproc: %ifdef needs to accept any argument countH. Peter Anvin (Intel)2020-06-051-1/+1
| | | | | | | | | | | | | | | | %ifdef should accept any argument count. However, requiring a macro structure return means we have to use the wildcard argument number (-1), not 0 meaning exactly 0 arguments. Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
| * test/ifdef.asm: test for simple %ifdefH. Peter Anvin (Intel)2020-06-051-0/+7
| | | | | | | | | | | | For some reason, %ifdef is failing now?! Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
* | preproc: add %require directiveH. Peter Anvin (Intel)2020-06-053-17/+73
|/ | | | | | | | | Most programming languages these days have a "require" directive, which is analogous to %include except that it automatically guards against multiple inclusion. This is useful enough to add, since with nasm_realpath() we can now to this (mostly) reliably. Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
* preproc: commas inside parens don't break macro argumentsH. Peter Anvin2020-06-041-2/+2
| | | | | | | | | Legacy NASM behavior is (quite frankly the sane one) that a comma inside a set of parentheses do not split smacro arguments, unless explicitly using braces to enforce this behavior. Revert to legacy behavior, which again, is arguably the more correct. Signed-off-by: H. Peter Anvin <hpa@zytor.com>
* BR 3392676: fix cmpxchg8b/16b with explicit sizeH. Peter Anvin (Intel)2020-06-041-2/+2
| | | | | | | CMPXCHG8b/16b should be legitimate with an explicit operand size. Reported-by: Xusheng Li <xushengli@protonmail.com> Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
* NASM 2.15rc5nasm-2.15rc5H. Peter Anvin (Intel)2020-06-041-1/+1
|
* Makefile.in: always_everything needs to depend on dirsH. Peter Anvin (Intel)2020-06-041-1/+2
| | | | | | If the directories don't exist, we could get serious weirdness. Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>