Commit Graph

4535 Commits

Author SHA1 Message Date
H. Peter Anvin (Intel)
e24b7c3504 Merge remote-tracking branch 'github/nasm-2.15.xx' into debug-macros
Resolved Conflicts:
	asm/assemble.c

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-09 21:13:50 -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)
79fd2b9645 data: replace data->sign with a flags field
Signed and unsigned are really two flags; might as well allow this
field to contain additional flags.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-09 20:58:10 -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 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)
f399172a83 assemble: don't pass a NULL filename to dfmt->linenum
Don't pass a NULL filename to dfmt->linenum even if -Lb is in use; it
confuses the heck out of some debug backends.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-08 10:26:32 -07:00
H. Peter Anvin (Intel)
7501601dbd preproc: pass macro debug information in invocation order
Reverse the invocation lists once each list is complete, so that the
lists passed to the macro backend are in true invocation order.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-08 10:13:46 -07:00
H. Peter Anvin (Intel)
35ed91f6f8 nasmlib.h: clear up namespace confusion in list_reverse()
list_reverse() used "next" as an argument, while also needing to
refer to the structure field "next". Furthermore, the two temp
variables can be made generic by making them void *, and as this is
not a loop construct this is doable by declaring them inside the macro
loop.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-08 10:11:38 -07:00
H. Peter Anvin (Intel)
942092e32a macro debug: use rb_search_exact()
We need the exact match in the rbtree for the current section. An
approximate match is not acceptable.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-08 09:53:49 -07:00
H. Peter Anvin (Intel)
e450e06084 rbtree: add rb_search_exact()
Sometimes we want to search for an exact key only, and reject the case
when tree->key < key. Add rb_search_exact() for this purpose, rather
than forcing the caller to perform the comparison in open code.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-08 09:51:30 -07:00
H. Peter Anvin (Intel)
50184c26c7 debug: collect macro information for the debug backend
Collect macro call/nesting information for the benefit of the debug
back end. So far, the only backend for which this is provided is the
debug back end, to show what information is present.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-08 09:28:44 -07:00
H. Peter Anvin (Intel)
2caafadbd0 rbtree: implement rb_first(), rb_last() operations
Add operations to get the first and last entry in the tree,
respectively. Searching for 0 or ~UINT64_C(0) is not sufficient in the
presence of duplicated keys, and is more inefficient anyway.

rb_first() followed by rb_next() until NULL, or equivalently rb_last()
followed by rb_prev() until NULL, can be used to walk the tree in key
order (ascending or descending), including all duplicate key
entries.

Since this is a *threaded* tree now, this walk can safely free entires
as it goes along, as long as the whole tree is destroyed; once any one
entry has been freed, the tree is no longer valid for anything other
than proceeding with the same tree walk.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-08 09:18:22 -07:00
H. Peter Anvin (Intel)
110e5046c9 rbtree: implement a "threaded LLRB tree"
Change the left-leaning red-black (LLRB) trees into left-leaning
threaded red-black trees. Instead of NULL pointers at leaf nodes, use
the otherwise unused field as a pointer to the lexical predecessor
(left) or successor (right). This allows fast previous/next
interator operation without needing to keep track of the root of the
tree at all times.

The additional metadata that needs to be kept can be done for "free"
simply by changing "bool red" into a flag field.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-08 09:18:22 -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 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
H. Peter Anvin (Intel)
e2040291ec config/unconfig.h: generate by Makefile, not autogen.sh
config/unconfig.h really is no different than the other perlreq files,
so move it into the Makefile. This has the extra advantage that
config/unconfig.h no longer needs to be kept in the source repository.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-06 11:12:03 -07:00
H. Peter Anvin (Intel)
e8599c655e pa_func_attributes.m4: better messages
It is a bit confusing when the alloc_size attribute is tested for more
than once, to include the arguments in the output message.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-06 11:09:03 -07:00
H. Peter Anvin (Intel)
0da8a88c62 clang: add -ftrivial-auto-var-init=zero
The clang behavior is sometimes really weird, and extremely hard to
debug, when uninitialized variables are used even if the value cancels
out in an expression. It also depends on optimization level, etc.

-ftrivial-auto-var-init=zero makes the behavior
predictable. Unfortunately it also needs a really weird "enable"
option, and it issues a warning about an unused command line option on
link, which may get promoted to error, so silence the warning before
doing anything else.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-06 10:19:38 -07:00
H. Peter Anvin (Intel)
ecb9b773f2 test/Makefile: the debug option for -f dbg is -gdebug
If a format is specified explicitly for the debug format, it needs to
be "debug", not "dbg". Lovely inconsistency.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-06 10:19:38 -07:00
H. Peter Anvin
a6fd383126 travis: weirdpaste.i now has better line directives
The %line directives in weirdpaste.i now better reflect the actual
lines of the source code, just as we would have for debugging
output. Update the reference version of weirdpaste.i accordingly.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2020-07-05 15:31:36 -07:00
H. Peter Anvin (Intel)
122c5fb759 preproc: handle %+ pasting after empty expansions
%+ tokens can end up next to each other, or at the beginning or the
end of an expansion if we try to paste the output of empty
macros. This is perhaps particularly likely to happen in %[]
expressions.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-05 03:39:04 -07:00
H. Peter Anvin (Intel)
5b7369d7e0 Make debug info and error messages correctly reflect macros and reps
1. Error messages would issue with the line number of %endrep.
2. Debug line information would ignore both macros and reps.
   This is doubly wrong; macros are semantically equivalent to
   inline functions, and it is expected that debuggers trace
   into these functions.

These changes finishes the last parts of moving all responsibility for
the listing enable/disable into the preprocessor, so remove the
way over-complicated macro inhibit facility from the listing module
entirely.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-05 02:16:13 -07:00
H. Peter Anvin (Intel)
87a832e391 BR 3392691: errors: issue ERR_PASS2 messages in preproc-only mode
In preproc-only mode, we only ever execute a single pass, so we need
to still issue error messages created during that pass, otherwise we
don't even generate %warning or %error messages...

Reported-by: Jason Hood <jadoxa@yahoo.com.au>
Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-03 19:02:37 -07:00
H. Peter Anvin (Intel)
61be48a383 doc: swap 'hyphen' and 'minus' in PostScript definition
It appears that at least with the Adobe Source fonts:

'hyphen' -> U+002D (ASCII)
'minus'  -> U+2212

This is ugly for cut & paste purposes.

Reported-by: C. Masloch <pushbx@ulukai.org>
Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-02 21:06:29 -07:00
Jasper Lievisse Adriaanse
07b10a1706 doc: remove references to sourceforge
The mailinglists have been migrated to lists.nasm.us

Signed-off-by: Jasper Lievisse Adriaanse <j@jasper.la>
Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-01 21:48:44 -07:00
H. Peter Anvin (Intel)
97e53e95f9 NASM 2.15.02 2020-07-01 21:42:17 -07:00
H. Peter Anvin (Intel)
fee0db94a3 changes.src: fixed Mkfiles/msvc.mak
Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-01 21:31:32 -07:00
H. Peter Anvin (Intel)
147f32a6eb msvc.mak: fix syntax for excluding config.h
mkdep.pl wants a / regardless of what the target path separator is.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-01 21:13:27 -07:00
H. Peter Anvin (Intel)
c665ba1fd8 strlist.h: move safe_alloc declaration
Move the safe_alloc declaration after the * symbol to be consistent
with all other functions with this attribute. Just in case it matters
somewhere...

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-01 20:54:58 -07:00
H. Peter Anvin (Intel)
b877708a83 Change unused -> unused_func to remove special case
The autoconf process automatically generates macros for function
attributes, including empty placeholders. Said empty placeholders also
propagate automatically into config/unconfig.h for the compilers which
don't support autoconf.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2020-07-01 20:49:04 -07:00