3310 Commits

Author SHA1 Message Date
H. Peter Anvin
a92a7dce5e nasm_delete(): ugly hack to make it side-effect-free
Use an ugly hack to make nasm_delete() side effect free.  This assumes
all pointers have the same internal NULL pointer representation as
void *, however, we already assume zero-initialized memory will
represent a NULL pointer, so hopefully this is okay on any platform we
actually care about.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2017-01-24 14:04:44 -08:00
H. Peter Anvin
75f2c1e131 Put in a comment that nasm_delete isn't side effect safe
I have not figured out a way to make nasm_delete() side effect safe
without using compiler-specific hacks, which would defeat the whole
purpose.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2017-01-24 12:42:37 -08:00
H. Peter Anvin
5d7fdc1962 nasmlib.h: add a nasm_zero() macro to the pointer helpers
We do have a number of places where we had problems doing things like:

memset(foo, 0, sizeof foo) instead of sizeof *foo.  Add a helper macro
nasm_zero() to the list of (sadly not yet well used) pointer-safe
helper macros.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2017-01-24 12:28:40 -08:00
H. Peter Anvin
94e4052a8a nasm_build_assert() -> nasm_static_assert()
The C11 standard calls this concept a static assert, so go with that
terminology.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2017-01-24 12:26:09 -08:00
H. Peter Anvin
4eb7a1f089 nasm_build_assert(): use better fallback implementation
http://www.drdobbs.com/compile-time-assertions/184401873 describes a
number of possible implementations of static_assert() on compilers
that do not support it natively.  Use their best recommendation.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2017-01-24 12:24:03 -08:00
H. Peter Anvin
fc427c6fab nasmlib.h: slightly tidy up the definition of nasm_build_assert()
"Assertion failed" is likely to be redundant with static_assert().

__attribute__((error)) is only guaranteed to work while optimizing, so
do not use it unless __OPTIMIZE__ is defined.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2017-01-22 21:06:05 -08:00
H. Peter Anvin
cd0c7ddc40 NASM 2.13rc1 nasm-2.13rc1 2017-01-22 20:57:39 -08:00
H. Peter Anvin
6d20c1f894 output/outmacho.c: use UINT64_C() instead of 1L
Type long is not necessarily long enough to be valid to hold a 64-bit
number (e.g. 32-bit platforms or Win64), however, the output variable
newaddr is uint64_t.

Cc: Martin Lindhe <martin-commit@ubique.se>
Cc: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2017-01-22 20:53:03 -08:00
Cyrill Gorcunov
dc9c312c97 insns.dat: Fix SHA256RNDS2 optional xmm0 argument
In commit 1eef781594b08a7f we allowed xmm0
to be implicit, then in dcaef4b09502aae7 it
occasionally got ripped off. Move it back.

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

Reported-by: ig <glucksmann@avast.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2017-01-08 16:51:41 +03:00
Cyrill Gorcunov
15ce78fc5b macros: Define ofmt specific macros late
In commits e1f985c1674951 and f7606613d047ff
we reordered macros handling, but ofmt specific
macros are to be handled after standart ones
are processed.

In particular __SECT__ handling must not change,
so the order of inclusion does matter.

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

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2017-01-06 20:22:36 +03:00
Cyrill Gorcunov
c7b0fe6bbe macros: standart -- Shift endmacro left
Fix code imbalance.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2017-01-06 13:37:05 +03:00
Cyrill Gorcunov
4ff8c63ab6 preproc: Use found path when opening include
It's a typo in 169ac7c152ee13ed0c470ceb3371e9afb10e9a60

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

Reported-by: Ryan Prichard <ryan.prichard@gmail.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2017-01-06 00:36:23 +03:00
Martin Lindhe
a6ccf005a5 rdoff: check return value of freopen
fixes pvs-studio error 'V530 The return value of function 'freopen'
is required to be utilized.'

Signed-off-by: Martin Lindhe <martin-commit@ubique.se>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2017-01-05 22:38:41 +03:00
Martin Lindhe
8cc93f5232 assemble_file: Get rid of global variable @sb
fixes pvs-studio error 'V707 Giving short names to global variables
is considered to be bad practice. It is suggested to rename 'sb' variable.

gorcunov@: Use local non-static variable.

Signed-off-by: Martin Lindhe <martin-commit@ubique.se>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2017-01-05 22:38:41 +03:00
Martin Lindhe
58f37c1736 parser: Get rid of global variable
fixes pvs-studio error 'V707 Giving short names to global variables
is considered to be bad practice. It is suggested to rename 'i' variable.

gorcunov@: Simply define it as local variable.

Signed-off-by: Martin Lindhe <martin-commit@ubique.se>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2017-01-05 22:38:41 +03:00
Martin Lindhe
ec8b2081d3 macho: Improve macho_calculate_sizes
pvs-studio error 'V629 Consider inspecting the '1 << s->align' expression.
Bit shifting of the 32-bit value with a subsequent expansion to the 64-bit type.'

Signed-off-by: Martin Lindhe <martin-commit@ubique.se>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2017-01-05 22:38:41 +03:00
Martin Lindhe
d551b431a1 Move @debugid declaration to same level as @q
fixes pvs-studio error 'V507 Pointer to local array 'debugid' is
stored outside the scope of this array. Such a pointer will become invalid.'

Signed-off-by: Martin Lindhe <martin-commit@ubique.se>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2017-01-05 22:38:41 +03:00
Martin Lindhe
058782948d nasmlib: md5c -- Use size of struct ctx for memset
fixes pvs-studio 'V512 A call of the 'memset' function will lead to
underflow of the buffer 'ctx'.'

Signed-off-by: Martin Lindhe <martin-commit@ubique.se>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2017-01-05 22:38:41 +03:00
Martin Lindhe
3478078c5f disasm: matches -- fix operator priority error with parenthesis
fixes pvs-studio error 'V502 Perhaps the '?:' operator works in a different way
than it was expected. The '?:' operator has a lower priority than the '!=' operator.'

Signed-off-by: Martin Lindhe <martin-commit@ubique.se>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2017-01-05 22:38:41 +03:00
Martin Lindhe
f172526697 outas86: Shrink as86_section_names
fix pvs-studio error 'V581 The conditional expressions of the 'if'
operators situated alongside each other are identical.
Check lines: 170, 173.'

Signed-off-by: Martin Lindhe <martin-commit@ubique.se>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2017-01-05 22:38:41 +03:00
Martin Lindhe
5b85276196 outcoff: Shrink coff_section_names
fix pvs-studio error 'V581 The conditional expressions of the 'if'
operators situated alongside each other are identical. Check lines: 304, 311.'

Signed-off-by: Martin Lindhe <martin-commit@ubique.se>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2017-01-05 22:38:41 +03:00
Martin Lindhe
42aa10c985 output,aout: Improve aout_section_names
fix pvs-studio error 'V581 The conditional expressions of the 'if'
operators situated alongside each other are identical.
Check lines: 246, 249.'

Signed-off-by: Martin Lindhe <martin-commit@ubique.se>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2017-01-05 22:38:41 +03:00
Martin Lindhe
b150e386ae Drop redundant test with isnumchar
Fix pvs-studio error 'V501 There are identical sub-expressions
'(c) == '_'' to the left and to the right of the '||' operator.'. isnumchar()
is a macro defined as (nasm_isalnum(c) || (c) == '_')

Signed-off-by: Martin Lindhe <martin-commit@ubique.se>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2017-01-05 22:38:41 +03:00
Martin Lindhe
9b5aa2e6d0 Drop redundant test with isnumchar
fix pvs-studio error 'V501 There are identical sub-expressions '(c) == '_'' to
the left and to the right of the '||' operator.'. isnumchar() is a macro
defined as (nasm_isalnum(c) || (c) == '_')

Signed-off-by: Martin Lindhe <martin-commit@ubique.se>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2017-01-05 22:38:41 +03:00
Martin Lindhe
e29e321e62 Dont set @mod twice
pvs-studio: V519 The 'mod' variable is assigned values twice successively.
Perhaps this is a mistake. Check lines: 398, 405.

Signed-off-by: Martin Lindhe <martin-commit@ubique.se>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2017-01-05 22:38:41 +03:00
H. Peter Anvin
abd28c9ab9 If we have new features introduced by C11, use them
Instead of using hacks or compiler-specific features, if we have
standard features as defined in ISO C11, use them.

Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
2016-12-20 02:29:58 -08:00
Cyrill Gorcunov
fd610f27d6 asm/parser.c -- Fix typo in testing for register
It should be EXPR_REG_END referred when testing
for register present.

A typo in 472a7c1d17e0212b3cbf5302a9f5cdb358be4425

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

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2016-11-29 01:17:33 +03:00
H. Peter Anvin
7294d62040 compiler.h: use the correct symbol to test for __builtin_expect()
__builtin_expect() has leading underscores, they need to be reflected
in the symbol.

Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
2016-11-15 15:53:38 -08:00
H. Peter Anvin
8d4fb26ad4 Various fixes to the ilog2 functions
Fix several bugs in the ilog2 functions.

Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
2016-11-15 14:23:54 -08:00
H. Peter Anvin
069ad5fc18 nasmlib: we need the exact size for the clz functions
We need to use the exact size for the clz functions, otherwise we will
generate the wrong result.

Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
2016-11-15 14:05:53 -08:00
H. Peter Anvin
8b19083483 Better support for function attributes, autoconf cleanups
Use autoconf to detect function attributes; some compilers like Sun CC
do support some gcc-style attributes, but don't define __GNUC__.  Also
-U__STRICT_ANSI__ already in configure.ac so our tests match what we
might eventually encounter.

Add const_func and pure_func attributes.

Decorate functions in nasmlib.h with const_func and pure_func.

Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
2016-11-15 14:01:37 -08:00
H. Peter Anvin
70d0458050 Merge remote-tracking branch 'origin/nasm-2.12.xx'
Resolved Conflicts:
	output/outelf32.c
	output/outelf64.c

Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
2016-11-15 12:00:23 -08:00
H. Peter Anvin
456b1c46f8 doc/changes.src: document the RDPID instruction
Add RDPID to changes.src.

Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
2016-11-15 11:56:42 -08:00
H. Peter Anvin
c7ea29b247 Add rdpid instruction
Add the RDPID instruction, documented in the Intel SDM October 2016.

Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
2016-11-15 11:55:14 -08:00
Cyrill Gorcunov
48fe2eea27 output: outelf,dwarf -- Add missing DW_LNS_copy
Backport of master commit ed347369aeeb6ff7338249a967bd292ee78debc5

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

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2016-11-06 18:38:34 +03:00
Cyrill Gorcunov
4d79eed7b7 x86/insns.dat -- Fix typo in VMOVDQA instruction
https://bugzilla.nasm.us/show_bug.cgi?id=3392369

Reported-by: Agner <agner@agner.org>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2016-11-05 16:39:27 +03:00
Hilmar Ackermann
ed347369ae output: outelf,dwarf -- Add missing DW_LNS_copy
https://bugzilla.nasm.us/show_bug.cgi?id=3392325

Signed-off-by: Hilmar Ackermann <hilmar.ackermann@gmail.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2016-11-05 15:12:45 +03:00
H. Peter Anvin
472a7c1d17 Allow relative references to external symbols in data
Allow constructs like:

      dd foo - $

... where foo is an external symbol.  Currently this is only
implemented for extops, i.e. dx opcodes.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2016-10-31 08:44:25 -07:00
Cyrill Gorcunov
6600eb1188 x86/insns.dat -- Fix typo in VMOVDQA instruction
https://bugzilla.nasm.us/show_bug.cgi?id=3392369

Reported-by: Agner <agner@agner.org>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2016-10-23 18:13:25 +03:00
Cyrill Gorcunov
a1461a5a89 nsis: Use Program Files (x86) directory for nasm installation on x86-64
https://bugzilla.nasm.us/show_bug.cgi?id=3392365

Reported-by: Mat <mberchtold@gmail.com>
Based-on-patch-by: Mat <mberchtold@gmail.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2016-10-23 16:27:48 +03:00
Cyrill Gorcunov
9e8c2466a4 nsis: Import x64.nsh
From NSIS-3.0 source code (Include/x64.nsh).
Hopefully it will be enough for nsis-v2.5
to support Win64.

https://sourceforge.net/p/nsis/code/HEAD/tree/NSIS/trunk/Include/x64.nsh

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2016-10-23 16:27:44 +03:00
H. Peter Anvin
f5287231c1 Move canned OpenWatcom config to config/watcom.h.
Move the canned OpenWatcom configuration file to config/watcom.h.
Also exclude config/config.h from being a dependency for MSVC.

Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
2016-10-19 13:23:04 -07:00
H. Peter Anvin
4c9132e3a0 compiler.h: include <sys/types.h>
Apparently, at least on some OS/2 compilers, <sys/types.h> needs to be
included for off_t to be defined.  This seems like a generically good
idea to include this header whenever it is available.

Remove reference to <types.h>.  This was supposedly for MSVC, but
there is no actual evidence that it is useful beyond <sys/types.h>.

Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
2016-10-19 13:13:38 -07:00
H. Peter Anvin
1fe546cf35 Run make alldeps
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
2016-10-14 15:09:52 -07:00
H. Peter Anvin
44e3a11087 compiler.h: fix typo in the non-gcc case
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
2016-10-14 15:05:28 -07:00
H. Peter Anvin
9b733a5845 compiler.h: for newer gcc attributes, we can use __has_attribute()
For newer gcc attributes, we can use __has_attribute() to test for
attribute presence.  This improves compatibility both with older gcc
and with clang, at least with -Werror enabled.

Reported-by: Daniel Lundqvist <daniel@malarhojden.nu>
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
2016-10-14 15:01:06 -07:00
H. Peter Anvin
9df6b4c8c2 output/legacy.c: include outlib.h
Add outlib.h for the prototype of nasm_do_legacy_output().

Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
2016-10-06 14:19:02 -07:00
H. Peter Anvin
8220533cda rdoff/rdlar.h: include "compiler.h" not "config.h"
We should not include config.h "naked"; include "compiler.h".

Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
2016-10-06 14:18:21 -07:00
H. Peter Anvin
c58b4c3c76 distclean: clean up config/config.h
When doing "make distclean", clean config/config.h as config.h has
moved.

Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
2016-10-06 14:17:38 -07:00
H. Peter Anvin
93c93b0a2e alldeps: handle uses of full pathnames, e.g. "config/config.h"
Sometimes we really want to use an extended pathname for an include
file, for documentation purposes; e.g. "config/config.h".  This makes
alldeps handle that case correctly (and also adds the config/
directory to directories scanned by alldeps).

It is unclear if this will work correctly if there are include files
with the same name in different directories, but we currently do not
have any case like that.

Reported-by: anonymous coward <nasm64developer@users.sf.net>
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
2016-10-06 14:12:39 -07:00