0
0
mirror of https://github.com/netwide-assembler/nasm.git synced 2025-10-10 00:25:06 -04:00
Commit Graph

4550 Commits

Author SHA1 Message Date
H. Peter Anvin
848b1657fd NASM 2.15.03rc8 nasm-2.15.03rc8 2020-07-16 23:13:24 -07:00
H. Peter Anvin
d081f0db5d fp: support bfloat16 constants
Support generating bfloat16 constants. This is a bit awkward, as "DW"
already generates IEEE half precision constants; therefore there is no
longer a single floating-point format for each size. This requires
some replumbing.

Fortunately bfloat16 fits in 64 bits, so support generating them with
a macro that uses __?bfloat16?__() to convert to integers first before
passing them to DW.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2020-07-16 23:11:03 -07:00
H. Peter Anvin
e830e92b77 preproc: when printing errors, don't descent into unlisted macros
If macros are nolisted, *or* they don't have any filename associated
with them, it is absolutely pointless to try to descend into them for
error messages, so just don't, even if -Lb is provided.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2020-07-16 22:50:33 -07:00
H. Peter Anvin
b31a4c9906 Add support for new instructions from ISE June 2020
Add support for new instructions as defined in the Instruction Set
Extensions manual as of June 2020.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2020-07-16 21:52:15 -07:00
H. Peter Anvin
36814f1fc8 autoconf: look for _Decltype as yet another alias for typeof().
If the past is any indication, the final standardization of typeof()
probably will be _Decltype().

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2020-07-16 20:28:35 -07:00
H. Peter Anvin (Intel)
271dc7a7f7 NASM 2.15.03rc7 nasm-2.15.03rc7 2020-07-15 16:21:08 -07:00
H. Peter Anvin (Intel)
4c0bd9e736 preproc: BR 2292698: fix handling of whitespace around %+
The previous code to fix whitespace around and multiple %+ symbols in
a row (checkin 122c5fb759) had some
seriously broken pointer handling when zapping tokens. This could
cause paste_tokens() to go into an infinite loop because it would
attach %+ to another token and then immediately break them apart
again, over and over.

Reported-by: <alexfru@gmail.com>
Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-15 16:16:57 -07:00
Cyrill Gorcunov
f1cf95480d travis: weirdpaste -- add nil dereference test
To address BR 3392696

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2020-07-12 06:01:51 -07:00
Cyrill Gorcunov
65c6ba8716 BR 3392696: nasm_quote -- fixup callers
In 41e9682efe we've
changed the nasm_quote arguments still not all callers
were converted which could lead to nil dereference.

[hpa: no need to call strlen() for the asm/preproc.c chunk]

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2020-07-12 06:00:51 -07:00
H. Peter Anvin (Intel)
bc5fc72d5b NASM 2.15.03rc6 nasm-2.15.03rc6 2020-07-10 18:46:12 -07:00
H. Peter Anvin (Intel)
d9ea17fb47 preproc: saner handling of cpp-style line directives
NASM now supports a proper superset of cpp line number markers, so
there is no need to hack around them using the
"prepreprocessor". Instead, just put a quick test in do_directive()
treating it just like %line, except convert a "-quoted string into a
`-quoted string.

(This can break if there is a ` or \" sequence in the string... fix
that at some point. This is still much better than what there is now.)

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-10 18:44:15 -07:00
H. Peter Anvin (Intel)
42a73b776a test/winalign.asm: simple test for COFF alignment
Simple test case based on debugging BR 3392692.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-10 18:14:54 -07:00
H. Peter Anvin (Intel)
baaa5ca441 outcoff: don't drop align= option alone on a section line
If the section/segment directive *only* contained an align= directive,
it would get lost. Fix that.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-10 18:14:09 -07:00
H. Peter Anvin (Intel)
bb3156533b ppindirect.asm: make it possible to assemble to a binary
Add a couple of dd/db directives to ppindirect.asm to make it possible
to actually run it through the assembler.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-10 17:24:43 -07:00
H. Peter Anvin (Intel)
fcd3cb8861 preproc: preserve %[...] in listings
When generating list output, preserve %[...] in the output if we list
a TOK_INDIRECT. The tokenization process removes these deliminators,
so we have to explicitly put them back.

This doesn't affect assembly output, which will only ever be generated
after all TOK_INDIRECT tokens have been removed, but it does affect
some of the listing modes.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-10 17:22:47 -07:00
H. Peter Anvin (Intel)
a79a700208 preproc: add a %null directive for the masm macro package
Instead of %pragma ignore, use a new %null directive which ignores the
rest of the line, without bothering to expand it.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-10 02:55:50 -07:00
H. Peter Anvin (Intel)
015ddc1b33 NASM 2.15.03rc5 nasm-2.15.03rc5 2020-07-10 02:50:51 -07:00
H. Peter Anvin (Intel)
861f2cf269 changes.src: document LEA fix
Document fix of LEA without square brackets.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-10 02:49:14 -07:00
H. Peter Anvin (Intel)
be1be3f627 %use masm: much better documentation
Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-10 02:46:23 -07:00
H. Peter Anvin (Intel)
254a56acca assemble: use proper rel/abs state for lea reg,imm
When using the LEA instruction with immediate syntax instead of memory
operand syntax, the IP_REL flag will not have made it into the operand
type. Make it do so.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-10 02:44:33 -07:00
H. Peter Anvin (Intel)
543069acec NASM 2.15.03rc4 nasm-2.15.03rc4 2020-07-10 02:00:31 -07:00
H. Peter Anvin (Intel)
22a3f567c0 changes.src: document %00 fix
Add %00 fix to release note.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-10 01:59:53 -07:00
H. Peter Anvin (Intel)
b3c5545556 test/Makefile: fix command line for .obj format
The command line for .obj had a stray -F.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-10 01:54:38 -07:00
H. Peter Anvin (Intel)
23abe9fe88 preproc: correctly handle %00 capturing a label
defining->dstk.mmac should point back to "defining" when the topmost
definition block is a %macro block.

Otherwise %00 will not inhibit label emission.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-10 01:52:49 -07:00
H. Peter Anvin (Intel)
174c8ccbad NASM 2.15.03rc3 nasm-2.15.03rc3 2020-07-09 21:15:16 -07:00
H. Peter Anvin (Intel)
0d4ce8d739 debug: don't call dfmt->linenum without a filename
With -Lb, it is possible that we don't have a filename for the current
code expansion. In that case, suppress calling dfmt->linenum as some
debug backends *really* aren't equipped to handle that case.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-09 21:10:42 -07:00
H. Peter Anvin (Intel)
2f171ddeec debug: invoke dfmt->linenum when the segment number changes
If the segment number changes, we also need to invoke dfmt->linenum(),
as a .nolist macro may end up emitting to more than one section.

This also adds the source location explicitly to the output data
structure; the cost for that is minimal, and will enable a more
sophisticated debug backend to receive the entire data structure in
the future.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-09 20:06:18 -07:00
H. Peter Anvin (Intel)
771e714c71 changes.src: update 2.15.03 release notes
Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-09 19:41:12 -07:00
H. Peter Anvin (Intel)
3eba084173 NASM 2.15.03rc2 nasm-2.15.03rc2 2020-07-09 19:35:22 -07:00
H. Peter Anvin (Intel)
e1f0b35af0 configure.ac: also try -std=c99
If -std=c17 and -std=c11 don't work, try -std=c99 as well.
-std=c90 is unlikely to work because of the requirement for "long
long" on L32 platforms, which isn't likely to be supported on a pure
C90 compiler.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-09 19:33:26 -07:00
H. Peter Anvin (Intel)
1b9c8ec434 pa_c_typedef.m4: also test for __typeof and __decltype
Some vendors prefer to put underscores just at the beginning.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-09 19:28:12 -07:00
H. Peter Anvin (Intel)
5c90a7c237 autoconf: use -std=c17 or -std=c11 if available
If the compiler supports it, use -std=c17 or -std=c11. Hopefully, this
will give us more predictable behavior in some cases.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-09 19:26:27 -07:00
H. Peter Anvin (Intel)
89563d78b2 autoconf: add success/failure code options to PA_ADD_*FLAGS
Allow code to be executed in the success or failure scenatios of
PA_ADD_*FLAGS.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-09 19:25:41 -07:00
H. Peter Anvin (Intel)
e8d6bbacd4 configure.ac: if we have a C17/C11-compatible compiler, use it
Enable -std=c17 or -std=c11 for compilers that handle them.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-09 19:12:25 -07:00
H. Peter Anvin (Intel)
abcdf8356a configure.ac: better tests for typeof, snprintf, vsnprintf
With some combinations of options tests for typeof, snprintf, and
vsnprintf end up with warnings promoted to errors, which then trigger
incorrect results for these tests. Move the typeof test to the end,
and write specific tests for snprintf and vsnprintf.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-09 19:04:28 -07:00
H. Peter Anvin (Intel)
2850da733d vsnprintf.c: fix printing of a size_t variable
printf("%d", <size_t>) is invalid. As this is for legacy compilers,
don't rely on %zu but rather cast to unsigned long long.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-09 17:44:21 -07:00
H. Peter Anvin (Intel)
91bc518895 asm: fix pass_type()
Update the table used by pass_type() to give the name of the pass
type. It was not updated properly after PASS_PREPROC was added.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-08 09:14:58 -07:00
H. Peter Anvin (Intel)
422c8c4f1e k_test.asm: comment out %pragma list options
Disable the %pragma list options in k_test.asm to avoid nasty
surprises. LISTOPT is -L+ by default and can be overridden on the
command line, so the %pragma is not just unnecessary but problematic.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-08 09:03:08 -07:00
H. Peter Anvin (Intel)
dacee5a5f5 config/unconfig.h: still needs to be in the repository
config/unconfig.h is build from config/config.h.in, but the latter
doesn't exist in the repository either. config/unconfig.h is cleaner,
so check it back into the repository, to let non-Unix-sh people be
able to build from the repo.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-08 08:53:28 -07:00
H. Peter Anvin (Intel)
8f385ec6a0 test/Makefile: allow overriding -L+
Add a LISTOPT to make it possible to override -L+ without a bunch
of painful additional options.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-08 08:52:49 -07:00
H. Peter Anvin (Intel)
6f52ecfa49 changes.src: update with current state of 2.15.03
Add release notes for 2.15.03 as it currently exists.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-07 09:33:42 -07:00
H. Peter Anvin (Intel)
47f8399667 NASM 2.15.03rc1 nasm-2.15.03rc1 2020-07-06 21:51:40 -07:00
H. Peter Anvin (Intel)
cd87431424 BR 3392692: outcoff: allow user to reduce the default alignment
NASM would incorrectly only allow for the alignment to be increased,
even when overridden by the user. Allow the user to specify any
alignment value and have it override the partition type default.

The user can increade their own alignment value specification later,
of course, and the sectalign directive will present a floor for either
kind of specification.

Reported-by: Dale Curtis <dalecurtis@chromium.org>
Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-06 21:46:43 -07:00
H. Peter Anvin (Intel)
178148c876 compiler.h: safer/more portable version of offsetin()
Still technically not defined behavior, but this *should* work on all
reasonable or semi-reasonable systems.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-06 17:13:02 -07:00
sezero
c0ab5a8be9 rdflib.c (main): change incorrect break statement to /* fall through */
Commit 6d36d8684 added a wrong break statement to case 'x'
in rdflib.c::main() at line235.  That case 'x' must "fall
through" into case 't' which re-checks the argument.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-06 13:20:09 -07:00
sezero
741967033e rdflib.c: add back timestamp size to header in library creation.
Commit 8dc965347 removed writing of the timestamp size to library
header. (Accidentally, I guess??) The attached patch adds it back.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-06 13:17:42 -07:00
sezero
1969dab9c6 portability: Watcom C portability updates
- config/watcom.h: update.
- Mkfiles/openwcom.mak: -wcd=124 to silence "Comparison result always 0"
  warnings from error.h::debug_level()

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-06 13:02:26 -07:00
H. Peter Anvin (Intel)
1348627b72 compiler.h: add missing #endif
Embarrassing: missing #endif

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-06 12:50:12 -07:00
H. Peter Anvin (Intel)
30844a4c62 offsetin(): use typeof() if the compiler supports it
If the C compiler has typeof(), we can use a safer implementation of
the offsetin() macro by using typeof(). Since typeof() isn't standard
(yet?) autoconf has to test for it.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-06 12:39:14 -07:00
H. Peter Anvin (Intel)
70f0d04ee5 configure.ac: -enable-... breaks other compilers, so hope for clang 10
The -enable-... option to enable -ftrivial-auto-var-init=zero breaks
linking not just on clang but on other compilers (gcc) too. Drop it;
this feature is enabled by default in clang 10.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-06 11:30:22 -07:00