0
0
mirror of https://github.com/netwide-assembler/nasm.git synced 2025-07-24 10:25:42 -04:00

4217 Commits

Author SHA1 Message Date
Cyrill Gorcunov
a384068a04 doc: latex -- Initial import
It is an initial import for conversion of our documentation
to latex format. Note that latex additional packages needs
to be preinstalled, xelatex is used for pdf generation.

While I've been very carefull while converting the docs there
is a big probability that some indices might be screwed so
we need to review everything once again.

Then we need to create a converter for html backend, I started
working on it but didn't successed yet and I fear won't have
enough spare time in near future.

Also we need to autogenerate instruction table and warnings
from insns.dat and probably from scanning nasm sources.

To build nasm.pdf just run

	make -C doc/latex/

it doesn't require configuration and rather a standalone
builder out of our traditional build engine.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2019-03-31 19:34:50 +03:00
Cyrill Gorcunov
982186a1a3 preproc: Fix nil dereference on error paths
https://bugzilla.nasm.us/show_bug.cgi?id=3392562

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2019-03-16 23:19:12 +03:00
H. Peter Anvin
0bddd0f1b1 autoconf: move aux directory, define AC_CONFIG_AUX_DIR()
The name "aux" is reserved on Windows platforms, a legacy from CP/M
via MS-DOS. Rename it to "helpers".

Turns out that that directory wasn't actually used properly, because
AC_CONFIG_AUX_DIR was never defined, and there was a redundant copy of
install-sh checked into the base of the source tree.

Reported-by: Ehsan Alem Mohammad Ghasemlou <e.ghasemloo@gmail.com>
NASM-Bugzilla: https://bugzilla.nasm.us/show_bug.cgi?id=3392560
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2019-02-22 01:18:04 -08:00
H. Peter Anvin (Intel)
5a3b4d3802 alignb: disable warnings for use in a progbits section
Allow the alignb directive to be used in either a progbits or a nobits
section, by suppressing the zeroing warning.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2019-01-11 13:15:35 -08:00
H. Peter Anvin (Intel)
1df7263ae9 warnings: add [warning push] and [warning pop]
Add [warning push] and [warning pop] directives.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2019-01-11 13:13:03 -08:00
H. Peter Anvin (Intel)
38ddb19977 Warnings: move zeroing reserved space to a separate warning class
Zeroing reserved space in a progbits section really should be a
separate warning class, so it can be controlled independently.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2019-01-11 12:27:02 -08:00
H. Peter Anvin
ef4f23d76a tokhash.pl: zero all the fields for a not-found token
Make sure we zero all the token fields if we don't find something in
the hash.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2018-12-29 20:14:50 -08:00
H. Peter Anvin
6a4f0b36c8 tokens.dat: TOKEN_SIZE sizes belong in inttwo, not in flags
TOKEN_SIZE size values ended up in the wrong place, which caused
parser errors due to being mistaken as flags.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2018-12-29 20:13:35 -08:00
H. Peter Anvin
e88f752e67 nasmlib.h: clarify the semantics of nasm_aprintf_size()
nasm_aprintf_size() does include the final NUL byte, but does not
include any prefix storage allocated by nasm_[v]axprintf().

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2018-12-27 12:50:56 -08:00
H. Peter Anvin
4c50b6c892 Move <strings.h> inclusion to "compiler.h"
Move the inclusion of <strings.h> from nasmlib.h to compiler.h

Try to centralize compiler dependences as much as possible.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2018-12-27 12:46:55 -08:00
H. Peter Anvin
8960e1bc83 Remove #includes already provided by "compiler.h"
"compiler.h" already includes a bunch of common include files. There
is absolutely no reason to duplicate them in individual files, and in
fact it robs us of central control of how these files are used.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2018-12-27 12:45:44 -08:00
H. Peter Anvin
c2f3f26015 Replace <ctype.h> includes with "nctype.h"
For almost everything we should use "nctype.h". Right now we don't
have a nasm_toupper() to use <ctype.h> for things that need toupper().

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2018-12-27 12:37:25 -08:00
H. Peter Anvin
bd2803964e Merge tag 'nasm-2.14.03rc1'
NASM 2.14.03rc1

Resolved Conflicts:
	asm/labels.c
	include/error.h

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2018-12-27 11:37:22 -08:00
H. Peter Anvin
81f98fe79b NASM 2.14.03rc1 nasm-2.14.03rc1 2018-12-27 11:34:12 -08:00
H. Peter Anvin
8eedebc1ed changes.src: document suppressed messages
Document the suppression of error messages from "label changed".

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2018-12-27 11:32:42 -08:00
H. Peter Anvin
4cf86ddde8 BR 3392539: some errors can "cascade". Allow suppressing if dead.
In BR 3392539, the error:

helloW.s:18: error: label `rurt' changed during code generation
[-w+error=label-redef-late]

... occurs a number of times after we have already issued an
error. This is because the erroring instruction computes to a
different size during code generation; this causes each subsequent
label to cause a phase error.

The phase error simply doesn't make much sense to report: if we are
already committed to erroring out, it is more likely an error cascade
rather than an error in its own right, so just suppress it in that
case.

Reported-by: <russvz@comcast.net>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2018-12-27 11:24:17 -08:00
H. Peter Anvin
2f0f5b0189 Merge tag 'nasm-2.14.02'
NASM 2.14.02

Resolved Conflicts:
	asm/listing.c
2018-12-26 07:15:28 -08:00
H. Peter Anvin
38a96f0e06 compiler.h: need to cast a (void *) to (char *) before adding
In the implementation of mempcpy():

Doing arithmetic on (void *) isn't permitted, so we need to cast it to
(char *); it then get automatically converted to void * by the return.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2018-12-26 06:49:18 -08:00
H. Peter Anvin
a162092532 nasmlib/ver.[ch]: add "compiler.h"
We should use "compiler.h", not just include <stdlib.h> explicitly.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2018-12-26 06:37:25 -08:00
H. Peter Anvin
2e53f27e9d Move <string.h> inclusion to compiler.h
There is absolutely no reason not to include <string.h> globally, and
with the inline function for mempcpy() we need it there anyway.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2018-12-26 06:32:37 -08:00
H. Peter Anvin
0a2b1c3498 Mkfiles: run "make cleandist"
Run "make cleandist" to update the file lists.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2018-12-26 06:31:54 -08:00
H. Peter Anvin
06f72bb968 Test for the mempcpy() function and add alternative if missing
If memcpy() doesn't exist, then add an inline alternative using
memcpy().

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2018-12-26 06:22:47 -08:00
H. Peter Anvin
77703ae4a4 nasm.spec.in: remove obsolete files
README and TODO are deleted and CHANGES is meaningless.
2018-12-26 06:13:06 -08:00
H. Peter Anvin
2e9a6e870f TODO: delete completely obsolete file 2018-12-26 06:12:13 -08:00
H. Peter Anvin
72f2acc595 nasm.spec.in: we need *automake*; autoheader is in autoconf
We need the automake package for autogen.sh; the autoheader program is
in the autoconf package.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2018-12-26 06:06:02 -08:00
H. Peter Anvin
33ce149330 nasm.spec.in: need autoheader, use autogen.sh
We need to use our new autogen.sh, which in turn needs autoheader.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2018-12-26 06:03:57 -08:00
Cyrill Gorcunov
74246c499e NASM 2.14.02 nasm-2.14.02 2018-12-26 16:41:15 +03:00
H. Peter Anvin
b3f7c8eb2b tools/release: handle new binary files
With the travis tests, we have a lot more binary files to worry about.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2018-12-26 05:11:26 -08:00
H. Peter Anvin
6b8765fb0c changes.src: document fix for listing module crash
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2018-12-26 04:42:01 -08:00
Cyrill Gorcunov
532d9f9dcb listing: list_emit -- Don't forget to zap listerr_head
In list_emit we walk over listerr_head freeing the list,
but the head pointer remain carrying old value. Need
to clean it up once traverse is done to not access
already freed memory later.

https://bugzilla.nasm.us/show_bug.cgi?id=3392538

Reported-by: russvz@comcast.net
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2018-12-25 13:11:55 +03:00
H. Peter Anvin
11599f49da Factor out size tokens and annotate with the corresponding size
There is space in the token table to explicitly encode the size
corresponding to a size token. We might as well do so...

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2018-12-24 12:45:58 -08:00
H. Peter Anvin
5079ea0b01 BR 3392538: test case for double free in listing module
Test case from bug 3392538 for double free in the listing module.

This is the test case only, not a fix.

Reported-by: <russyz@comcast.net>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2018-12-24 12:41:57 -08:00
H. Peter Anvin
e7c75e5521 elf.h: add relocation numbers for segmented support
Add relocation numbers reserved/intended for segmented support in
ELF32.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2018-12-24 12:18:59 -08:00
H. Peter Anvin
9acfdb26da Makefile: make doc depend on warnings.src
warnings.src needs to exist for make doc to work.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2018-12-24 12:18:59 -08:00
Cyrill Gorcunov
ad2fab7778 test: nasm-t -- Use plain stderr extension for error stream
Just to unify with other tests

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2018-12-23 18:12:37 +03:00
Cyrill Gorcunov
929aa65385 test: nasm-t -- Add clzero case
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2018-12-23 17:22:44 +03:00
Cyrill Gorcunov
8274623093 build: Add missing PA_ADD_LDFLAGS helper
Fixes b0121dc312a83ab4912769e36c9f2cbe9493545d

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2018-12-23 17:22:44 +03:00
H. Peter Anvin
26191f845a Merge tag 'nasm-2.14.01'
NASM 2.14.01

Resolved Conflicts:
	version

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2018-12-22 18:53:17 -08:00
H. Peter Anvin
54d5078c11 autogen.sh: add code to re-run configure afterwards
Add code to autogen.sh to (re-)run configure, with preserved
configuration.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2018-12-22 18:51:59 -08:00
H. Peter Anvin
b0121dc312 autoconf: use librarized autoconf setup
I have been setting up a cross-project librarized autoconf setup; use
it for NASM as well.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2018-12-22 18:17:16 -08:00
H. Peter Anvin
ca810ecbaf NASM 2.14.01 nasm-2.14.01 2018-12-22 17:55:11 -08:00
H. Peter Anvin
7f688841ce insns.dat: accept explicit ax/eax/rax operand to CLZERO
AMD documents this instruction with an rax operand. The error behavior
implies this is an address-size-sensitive instruction. Add support for
specifying the explicit operand, but consistent with normal ndisasm
behavior, don't disassemble the implicit operand.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2018-12-22 17:52:27 -08:00
Cyrill Gorcunov
3c0b924c9d test: nasm-t -- Add more details into README
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2018-12-20 14:28:31 +03:00
H. Peter Anvin
2965154684 assemble_file(): break up this gigantic mess
Break up this gigantic mess which touches way too many layers.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2018-12-18 19:14:40 -08:00
H. Peter Anvin
5307832cd1 Makefile.in: add target for running travis
Just like "make test", add "make travis".

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2018-12-18 18:57:00 -08:00
H. Peter Anvin
5358b98405 Don't convert the various RESx instructions to RESB
All it does is complicate things; instead leave the opcode where it
is.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2018-12-18 18:06:26 -08:00
H. Peter Anvin (Intel)
5df6ca712d With buffered warnings, change the handling of error passes
With buffered warnings, most warnings *must* be issued on every pass,
so ERR_PASS1 is simply wrong in most cases.

ERR_PASS1 now means "force this warning to be output even in
pass_first(). This is to be used for the case where the warning is
only executed in pass_first() code; this is highly discouraged as it
means the warnings will not appear in the list file and subsequent
passes may make the warning suddenly vanish.

ERR_PASS2 just as before suppresses an error or warning unless we are
in pass_final().

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2018-12-18 12:25:11 -08:00
H. Peter Anvin (Intel)
21da8ae8e5 Merge remote-tracking branch 'origin/nasm-2.14.xx' 2018-12-18 11:25:11 -08:00
H. Peter Anvin (Intel)
e7f4e0e229 test/Makefile: add .aout target
We had no target for generating an aout format file.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2018-12-18 11:24:29 -08:00
H. Peter Anvin (Intel)
e55d03dd47 Clean up the handling of various passes
The use of pass0, pass1, pass2, and "pass" passed as an argument is
really confusing and already caused a severe bug in the 2.14.01
release cycle. Clean them up and be far more explicit about what
various passes mean.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2018-12-18 11:14:59 -08:00