platform/upstream/nasm.git
14 years agoinsns.dat: Restore default size of memory operands
Cyrill Gorcunov [Wed, 16 Dec 2009 12:44:58 +0000 (15:44 +0300)]
insns.dat: Restore default size of memory operands

During conversion of size of memory operands into
explicit form the compatibility with 2.07 has been
broken (for a small set of instructions). Lets restore
it. Details below.

This is due to specifics of our "fuzzy logic" algorithm.

For example consider the user wrote an instruction like

VCVTTPD2DQ xmm0,[eax]

the last operand is memory reference. But template contains
the following two items (written in simplified form)

VCVTTPD2DQ xmmreg,mem128
VCVTTPD2DQ xmmreg,mem256

So this is impossible to find out what _exactly_ user meant:
either reference to 128 bit value in memory or 256 bit.

As a solution we've been using IF_Sx modifier written in
template which allows to choose "by-default" template
and break the tie.

Reported-by: Victor van den Elzen <victor.vde@gmail.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
14 years agodoc/changes.src: describe changes
Cyrill Gorcunov [Sun, 13 Dec 2009 11:13:35 +0000 (14:13 +0300)]
doc/changes.src: describe changes

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
14 years agoElf: bind labels to text section by default
Cyrill Gorcunov [Sun, 29 Nov 2009 20:21:16 +0000 (23:21 +0300)]
Elf: bind labels to text section by default

In case if SECTION directive is omitted but the real
code exist we form .text section by default and put compiled
code here. In turn labels are not handled in a same manner.

So lets bind them to text section by default as well.

[ BR: 2835192 ]

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
14 years agoBR2907058: insn_size - close file handle before returning
Cyrill Gorcunov [Sat, 5 Dec 2009 11:04:55 +0000 (14:04 +0300)]
BR2907058: insn_size - close file handle before returning

As example of such behaviour is when fseek fails for
some reason.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
14 years agonasm.c: Use copy_filename to set error message file
Cyrill Gorcunov [Fri, 4 Dec 2009 16:44:20 +0000 (19:44 +0300)]
nasm.c: Use copy_filename to set error message file

To prevent errname buffer overwrite we should
use copy_filename instead of strcpy.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
14 years agoinsns.dat: AVX -- no need for IF_ARx in template
Cyrill Gorcunov [Wed, 2 Dec 2009 16:03:20 +0000 (19:03 +0300)]
insns.dat: AVX -- no need for IF_ARx in template

We describe the instruction arguments in explicit form
so IF_ARx is just not needed here.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
14 years agoRun "make alldeps"
H. Peter Anvin [Mon, 30 Nov 2009 21:28:31 +0000 (13:28 -0800)]
Run "make alldeps"

14 years agooutrdf.c: remove obsolete file
H. Peter Anvin [Mon, 30 Nov 2009 21:27:49 +0000 (13:27 -0800)]
outrdf.c: remove obsolete file

The old RDF format has been unsupported for long time now.  Remove it
from the tree.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agooutform.h: fix OF_NO_RDF2
H. Peter Anvin [Mon, 30 Nov 2009 21:26:34 +0000 (13:26 -0800)]
outform.h: fix OF_NO_RDF2

OF_NO_RDF2 should turn off OF_RDF2, not OF_RDF

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agoAUTHORS: convert to UTF-8
H. Peter Anvin [Mon, 30 Nov 2009 20:07:31 +0000 (12:07 -0800)]
AUTHORS: convert to UTF-8

Convert Latin-1 character to UTF-8.  This is 2009.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agooutmacho32: replace error() -> nasm_error()
H. Peter Anvin [Mon, 30 Nov 2009 19:27:47 +0000 (11:27 -0800)]
outmacho32: replace error() -> nasm_error()

Somehow outmacho32.c escaped the global change of error variables to
hard-coded nasm_error().

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
14 years agoNASM 2.08rc5
H. Peter Anvin [Sat, 28 Nov 2009 23:35:51 +0000 (15:35 -0800)]
NASM 2.08rc5

14 years agotest/Makefile: make it easier to inject options
H. Peter Anvin [Sat, 28 Nov 2009 23:34:32 +0000 (15:34 -0800)]
test/Makefile: make it easier to inject options

Make it easier to inject options into test compiles.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
15 years agopreproc.c: expand_smacro -- break endless loop for interminable macro recursion
Cyrill Gorcunov [Sat, 21 Nov 2009 08:11:23 +0000 (11:11 +0300)]
preproc.c: expand_smacro -- break endless loop for interminable macro recursion

Frank reported:
|
| From the "expert questions" forum comes this:
|
| ---------------------
| By: jasper_neumann
|
| How can I delegate %undef?
|
| In the example below the assembler (called with "nasm.exe -t -f rdf q.asm")
| bemoans my code, displays
|
| "q.asm:19: error: interminable macro recursion"
|
| and hangs.
|
| q.asm
| -----
| bits 32
| CPU P4
|
| %macro my_def 2
|  %xdefine %1 esp+%2
| %endmacro
|
| %macro my_undef 1
|  %undef %1
| %endmacro
|
| global check_it
| check_it:
|  my_def x,4
|  mov eax,[x]
|  my_undef x
|
|  my_def x,8
|  add eax,[x]
|  my_undef x
|  ret
|

So in case of interminable macro recursion we should break
the expansion procedure that way to not return back and start
expand macro again.

This address a part of the original problem.
Nasm64developer pointed out:
|
| Btw, after you manage to fix this recursion problem, the code
| in question still faces the same fundamental issue -- the arg
| to the my_undef invocations (i.e. x) gets expanded first; thus
| the %undef inside the macro sees esp+4 and esp+8 instead
| of x, and fails. What you'd need is a means to prevent the ex-
| pansion -- look for e.g. %# in 4.1.4 of the manual.txt which is
| attached to SF #1842438; it implements exactly that -- I once
| filed SF #829879 for this feature.
|

In turn Keith Kanios said:
|
| Anon is also correct in that we would need a special directive to instruct
| the delay of macro expansion, although I don't see this as critical or even
| high priority at the moment. The intermediate solution for this is, don't
| use indirection if it is not needed... an inline %undef should be
| sufficient.
|

Reported-by: Frank Kotler <fbkotler@zytor.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Reviewed-by: Keith Kanios <keith@kanios.net>
15 years agooutcoff: BuildExportTable -- tab/space fix
Cyrill Gorcunov [Tue, 17 Nov 2009 18:58:08 +0000 (21:58 +0300)]
outcoff: BuildExportTable -- tab/space fix

Due to previous commit an indent by tab (occasionally) brought in.
Fix it as well. No change on binary level.

We're not that far from NASM release so it's a bit unpleasant
manner to push in such trivial change. But since it's the previous
commit dependent -- I dare to push it.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
15 years agooutcoff: Do not fail on long export identifiers
Cyrill Gorcunov [Tue, 17 Nov 2009 17:49:58 +0000 (20:49 +0300)]
outcoff: Do not fail on long export identifiers

If an export identifier is greater then 241 symbols
we do fail due to buffer overflow. Fix it.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
15 years agoNASM 2.08rc4
H. Peter Anvin [Fri, 13 Nov 2009 22:12:37 +0000 (14:12 -0800)]
NASM 2.08rc4

15 years agoUpdate test files
Victor van den Elzen [Wed, 11 Nov 2009 07:09:03 +0000 (08:09 +0100)]
Update test files

Remove references to DREX instructions

15 years agoAdd test/bisect.sh for use with "git bisect"
Victor van den Elzen [Wed, 11 Nov 2009 06:47:39 +0000 (07:47 +0100)]
Add test/bisect.sh for use with "git bisect"

15 years agoDon't boundcheck 64-bit numbers, it gives problems due to overflows
Victor van den Elzen [Wed, 11 Nov 2009 06:39:21 +0000 (07:39 +0100)]
Don't boundcheck 64-bit numbers, it gives problems due to overflows

15 years agoNASM 2.08rc3
H. Peter Anvin [Tue, 10 Nov 2009 00:54:48 +0000 (16:54 -0800)]
NASM 2.08rc3

15 years agoinsns.dat: remove non-DREX SSE5 instructions
H. Peter Anvin [Tue, 10 Nov 2009 00:53:43 +0000 (16:53 -0800)]
insns.dat: remove non-DREX SSE5 instructions

Even the non-DREX SSE5 instructions appear to have been either
obsoleted or replaced with XOP varieties.  The only exception are the
ROUNDxx instructions, which are really SSE4.1 instructions and which
were simply duplicates.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
15 years agochanges.src: document removal of DREX instructions
H. Peter Anvin [Mon, 9 Nov 2009 22:58:45 +0000 (14:58 -0800)]
changes.src: document removal of DREX instructions

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
15 years agoSSE5: remove all DREX-based instructions
H. Peter Anvin [Mon, 9 Nov 2009 22:57:19 +0000 (14:57 -0800)]
SSE5: remove all DREX-based instructions

AMD has obsoleted the DREX-based SSE5 proposal, so remove all such
instructions.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
15 years agooutelf32/64 - various cleanups in a sake of unification
Cyrill Gorcunov [Fri, 6 Nov 2009 12:48:47 +0000 (15:48 +0300)]
outelf32/64 - various cleanups in a sake of unification

Make a small step forward elf32/64 unification procedure.
Mostly style fixes. Nothing serious.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
15 years agodwarfX_output: dont check for "ln" twice
Cyrill Gorcunov [Fri, 6 Nov 2009 08:53:31 +0000 (11:53 +0300)]
dwarfX_output: dont check for "ln" twice

And make dwarf64 version to be more familiar to
32bit version (preparation work for merge).

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
15 years agooutput/outelf64.c: simplify stabs64_cleanup, dwarf64_cleanup
Cyrill Gorcunov [Fri, 6 Nov 2009 08:42:11 +0000 (11:42 +0300)]
output/outelf64.c: simplify stabs64_cleanup, dwarf64_cleanup

nasm_free is failsafe against NULL passed

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
15 years agoDocument BR 2887108 in changes.src
Cyrill Gorcunov [Fri, 6 Nov 2009 08:24:54 +0000 (11:24 +0300)]
Document BR 2887108 in changes.src

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
15 years agoMerge elf header files
Cyrill Gorcunov [Fri, 6 Nov 2009 08:15:37 +0000 (11:15 +0300)]
Merge elf header files

Merge elfcommon.h, elf32.h, elf64.h into
single elf.h -- we do support both elf32
and elf64 anyway. Let put them into common
place.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
15 years agohash_init: check for size being power of two
Cyrill Gorcunov [Fri, 6 Nov 2009 07:22:49 +0000 (10:22 +0300)]
hash_init: check for size being power of two

It's really a bug if size is not power of
two. We must to be sure all callers are
sane.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
15 years agohashtbl.c: Unify common hash ops by macros
Cyrill Gorcunov [Fri, 6 Nov 2009 18:58:48 +0000 (21:58 +0300)]
hashtbl.c: Unify common hash ops by macros

Instead of opencoded repeatable computation
use macro helpers.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
15 years agoIntroduce is_power2 helper
Cyrill Gorcunov [Fri, 6 Nov 2009 06:03:08 +0000 (09:03 +0300)]
Introduce is_power2 helper

We will need it for hash tables

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
15 years agoMOVD xmmreg: not valid with REX.W
H. Peter Anvin [Fri, 6 Nov 2009 17:36:11 +0000 (09:36 -0800)]
MOVD xmmreg: not valid with REX.W

The xmmreg forms of MOVD are invalid with REX.W, since those are MOVQ
instructions.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
15 years agoComment out matches() operand flags logic
Cyrill Gorcunov [Thu, 5 Nov 2009 21:08:38 +0000 (00:08 +0300)]
Comment out matches() operand flags logic

Also space fix

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
15 years agonasmlib.h: Introduce nasm_build_assert
Cyrill Gorcunov [Thu, 5 Nov 2009 20:35:04 +0000 (23:35 +0300)]
nasmlib.h: Introduce nasm_build_assert

It's useful to protect our self from some
errors at build time.

For this sake we should use nasm_build_assert
if needed.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
15 years agotest: imul.asm: move warning-generated tests under WARN
H. Peter Anvin [Wed, 4 Nov 2009 00:35:19 +0000 (16:35 -0800)]
test: imul.asm: move warning-generated tests under WARN

Only make the tests under WARN actually issue warnings.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
15 years agotest: imul.asm: more IMUL pattern tests
H. Peter Anvin [Tue, 3 Nov 2009 23:59:47 +0000 (15:59 -0800)]
test: imul.asm: more IMUL pattern tests

Test more IMUL patterns.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
15 years agoNASM 2.08rc2
H. Peter Anvin [Tue, 3 Nov 2009 23:59:24 +0000 (15:59 -0800)]
NASM 2.08rc2

15 years agomatches: simplify check operand size actions
Cyrill Gorcunov [Sun, 1 Nov 2009 20:16:01 +0000 (23:16 +0300)]
matches: simplify check operand size actions

We may throw out j variable (since we break anyway)
and don't assign asize for free (since we don't
use it after).

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
15 years agoIMUL: sbyteX fix -- last one
Cyrill Gorcunov [Tue, 3 Nov 2009 18:35:24 +0000 (21:35 +0300)]
IMUL: sbyteX fix -- last one

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
15 years agoIMUL: fix an additional incorrect sbyte use
H. Peter Anvin [Tue, 3 Nov 2009 17:34:09 +0000 (09:34 -0800)]
IMUL: fix an additional incorrect sbyte use

One more incorrect use of sbyte in IMUL.

Overall, the IMUL patterns seem really messy.  *Furthermore*, despite
IMUL normally being thought of as signed, the 2- and 3-operand
versions don't produce a high half and are therefore
signedness-agnostic -- we could even add MUL patterns for those forms.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
15 years agoBR 2887108: fix incorrect sbyte usage in IMUL
H. Peter Anvin [Tue, 3 Nov 2009 17:26:58 +0000 (09:26 -0800)]
BR 2887108: fix incorrect sbyte usage in IMUL

Fix a very curious transposition in the instruction patterns for IMUL,
which caused 32-bit IMUL instructions with constants like 0x10001 to
be generated incorrectly.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
15 years agoRevert "BR 2887108: Use overflow_ helper to catch inappropriate imm optimization"
Cyrill Gorcunov [Sun, 1 Nov 2009 07:24:48 +0000 (10:24 +0300)]
Revert "BR 2887108: Use overflow_ helper to catch inappropriate imm optimization"

This reverts commit 41208028ff52d190044ee7532bf14c5aca0f899a.
|
| From: "H. Peter Anvin" <hpa@zytor.com>
|
| The tests for overflow_signed() are wrong too.  Those are relevant for if a
| warning should be issued, but not for how the value should be encoded in
| the byte stream.
|

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
15 years agostdscan.c: use TOKEN_EOS and string helpers
Cyrill Gorcunov [Fri, 30 Oct 2009 08:29:43 +0000 (11:29 +0300)]
stdscan.c: use TOKEN_EOS and string helpers

Also tab/space cleanup

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
15 years agoVarious tab/space/comment cleanup
Cyrill Gorcunov [Sat, 31 Oct 2009 17:05:32 +0000 (20:05 +0300)]
Various tab/space/comment cleanup

No change on binary level

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
15 years agooutput/outelf32-64: use string helpers
Cyrill Gorcunov [Fri, 30 Oct 2009 06:24:05 +0000 (09:24 +0300)]
output/outelf32-64: use string helpers

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
15 years agoRemove outdated comments
Cyrill Gorcunov [Thu, 29 Oct 2009 21:23:48 +0000 (00:23 +0300)]
Remove outdated comments

From Frank Kotler:
| ...
| > -                stdscan_bufptr = saveme;        /* bugfix? fbk 8/10/00 */
| > +                stdscan_set(saveme);            /* bugfix? fbk 8/10/00 */
|
| While you're at it, you could remove my comment(s - it seems to have
| reproduced). It *is* a bugfix (apparently). "saveme" might have a better
| name, too...

So get rid of the comments.

Reported-by: Frank Kotler <fbkotler@zytor.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
15 years agostdscan: switch to stdscan_get/set routines
Cyrill Gorcunov [Thu, 29 Oct 2009 20:09:18 +0000 (23:09 +0300)]
stdscan: switch to stdscan_get/set routines

Instead of manipulating stdscan buffer pointer directly
we switch to a routine interface.

This allow us to unify stdscan access: ie caller should
"talk" to stdscan via stdscan_get/set routines.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
15 years agonasmlib: Introduce idata_bytes helper
Cyrill Gorcunov [Sat, 31 Oct 2009 17:02:14 +0000 (20:02 +0300)]
nasmlib: Introduce idata_bytes helper

This allow us to eliminate code duplication

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
15 years agoBR 2887108: Use overflow_ helper to catch inappropriate imm optimization
Cyrill Gorcunov [Sat, 31 Oct 2009 07:34:43 +0000 (10:34 +0300)]
BR 2887108: Use overflow_ helper to catch inappropriate imm optimization

We should use overflow_ helpers before check if an immediate
operand fit a type range, otherwise we may loose high bits.

For example when we assemble the following instruction

imul eax,eax,0x10000

with -Ox passed we optimze it up to imm8 though it must be imm32.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
15 years agochanges.src: document preprocessor directives added since 2.07
Keith Kanios [Sun, 25 Oct 2009 19:06:24 +0000 (14:06 -0500)]
changes.src: document preprocessor directives added since 2.07
nasmdoc.src: document %exitmacro

15 years agopreproc.c: fix exitmacro to account for if/endif blocks
Keith Kanios [Sun, 25 Oct 2009 18:28:03 +0000 (13:28 -0500)]
preproc.c: fix exitmacro to account for if/endif blocks

15 years agocontinue using is_class helper
Cyrill Gorcunov [Sun, 18 Oct 2009 08:41:14 +0000 (12:41 +0400)]
continue using is_class helper

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
15 years agochanges.src: describe changes since version 2.07 up to 2.08rc1
Cyrill Gorcunov [Sat, 17 Oct 2009 21:09:40 +0000 (01:09 +0400)]
changes.src: describe changes since version 2.07 up to 2.08rc1

There are already new commits which fix other bugs
but at moment only changes up to 2.08rc1.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
15 years agoBR 2840300: fix macho symbol alignment bug
Keith Kanios [Sat, 17 Oct 2009 02:53:59 +0000 (21:53 -0500)]
BR 2840300: fix macho symbol alignment bug

15 years agoparser.c: pasrse_line -- fix alignment
Cyrill Gorcunov [Wed, 14 Oct 2009 11:36:45 +0000 (15:36 +0400)]
parser.c: pasrse_line -- fix alignment

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
15 years agoassemble: xsizeflags[] is an opflags_t variable
H. Peter Anvin [Tue, 13 Oct 2009 19:32:20 +0000 (12:32 -0700)]
assemble: xsizeflags[] is an opflags_t variable

One more case of int32_t instead of opflags_t...

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
15 years agoopflags: more int32_t -> opflags_t conversions
H. Peter Anvin [Tue, 13 Oct 2009 19:28:14 +0000 (12:28 -0700)]
opflags: more int32_t -> opflags_t conversions

Hopefully this should catch all of them... but please keep an eye out
for any other uses of int32_t for the operand flags.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
15 years agoNASM 2.08rc1
H. Peter Anvin [Tue, 13 Oct 2009 19:05:01 +0000 (12:05 -0700)]
NASM 2.08rc1

15 years agonasm: rename nasm_zap_spaces() to nasm_zap_spaces_fwd()
H. Peter Anvin [Tue, 13 Oct 2009 19:03:37 +0000 (12:03 -0700)]
nasm: rename nasm_zap_spaces() to nasm_zap_spaces_fwd()

By analogy with nasm_zap_spaces_rev() have nasm_zap_spaces_fwd().  The
forward version isn't a super-common operation, and it might be
possible to think the reverse one is the "normal" version... therefore
we might as well be explicit.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
15 years agonasm.c: use string helpers
Cyrill Gorcunov [Tue, 13 Oct 2009 15:38:52 +0000 (19:38 +0400)]
nasm.c: use string helpers

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
15 years agopreproc.c: use string helpers
Cyrill Gorcunov [Mon, 12 Oct 2009 16:41:13 +0000 (20:41 +0400)]
preproc.c: use string helpers

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
15 years agonasm.c: getkw -- use string helpers
Cyrill Gorcunov [Fri, 18 Sep 2009 15:23:53 +0000 (19:23 +0400)]
nasm.c: getkw -- use string helpers

This allow us to shrink code a bit and
make it easy to read.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
15 years agonasmlib: introduce string helpers
Cyrill Gorcunov [Sun, 11 Oct 2009 12:51:31 +0000 (16:51 +0400)]
nasmlib: introduce string helpers

To make code more compact we introduce the
following string helpers:

1) nasm_scip_spaces - skip leading spaces
2) nasm_skip_word - skip leading non-spaces
3) nasm_zap_spaces - zap leading spaces with zero
4) nasm_zap_spaces_rev - zap spaces in reverse order

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
15 years agoassemble.c: check constants for overflow
Cyrill Gorcunov [Sun, 20 Sep 2009 20:56:20 +0000 (00:56 +0400)]
assemble.c: check constants for overflow

Lets check if a constant supplied to DB and etc
does not overflow storage size and emit warning
if needed.

[ Bug #2857628 http://sourceforge.net/tracker/?func=detail&aid=2857628&group_id=6208&atid=106208 ]

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
15 years agointroduce "overflow" helpers
Cyrill Gorcunov [Sun, 11 Oct 2009 11:01:39 +0000 (15:01 +0400)]
introduce "overflow" helpers

Suggested-by: H. Peter Anvin <hpa@zytor.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
15 years agoassemble.c: use is_class helper
Cyrill Gorcunov [Tue, 13 Oct 2009 15:05:31 +0000 (19:05 +0400)]
assemble.c: use is_class helper

is_class does not checking flags "strictly". Which means
it may fail if type is specified to REGMEM and you check for
is_class(MEMORY, ...).

Anyway in current patch we check for REGISTER which doesn't
overlap and it is safe to use is_class here.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
15 years agonasm.h: introduce is_class macro helper
Cyrill Gorcunov [Tue, 13 Oct 2009 15:02:47 +0000 (19:02 +0400)]
nasm.h: introduce is_class macro helper

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
15 years agouse opflags_t type for operands
Cyrill Gorcunov [Sun, 11 Oct 2009 09:40:44 +0000 (13:40 +0400)]
use opflags_t type for operands

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
15 years agostyle cleanup
Cyrill Gorcunov [Sun, 11 Oct 2009 09:17:52 +0000 (13:17 +0400)]
style cleanup

Convert tabs to spaces.
Eliminate empty comments.

No change on binary level.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
15 years agoassemble: when looking for a REGISTER operand, do an exclusive test
H. Peter Anvin [Tue, 6 Oct 2009 16:58:40 +0000 (09:58 -0700)]
assemble: when looking for a REGISTER operand, do an exclusive test

Do an "exclusive" test for a REGISTER operand when deciding to treat
sizes as wildcards.  "Exclusive" meaning don't just accept any class
that could be REGISTER, but something that is strictly a part of the
REGISTER class.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
15 years agoassemble: treat register operands without size as wildcards
H. Peter Anvin [Mon, 5 Oct 2009 21:08:05 +0000 (14:08 -0700)]
assemble: treat register operands without size as wildcards

Register with no size are a bit special: we don't honor extrinsic
register sizes in the first place ("oword xmm1" gives a warning,
even), and they should match any xmmrm size.  As such, explicitly
handle sizeless register operands as a hard match, instead of relying
on the fuzzy-matching mechanism to handle them.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
15 years agonasm.nsi: use "delete recursively" specificator
Cyrill Gorcunov [Sun, 27 Sep 2009 12:00:06 +0000 (16:00 +0400)]
nasm.nsi: use "delete recursively" specificator

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
15 years agonsis.nsi: add VS8 rules file to install
Cyrill Gorcunov [Sat, 26 Sep 2009 07:21:20 +0000 (11:21 +0400)]
nsis.nsi: add VS8 rules file to install

Add "VS8 intergartion" section with appropriate
files to be installed on user request.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
15 years agodoc/nasmdoc.src: NASMENV -- fixup backslashes
Cyrill Gorcunov [Fri, 25 Sep 2009 21:06:18 +0000 (01:06 +0400)]
doc/nasmdoc.src: NASMENV -- fixup backslashes

−i option (include file search directories) should
contain trailing slash.

Reported-by: Frank Kotler <fbkotler@zytor.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
15 years agoVisual Studio 2008 NASM integration
Henry Tumblin [Fri, 25 Sep 2009 14:25:57 +0000 (18:25 +0400)]
Visual Studio 2008 NASM integration

Add integration rules in order to use NASM
seamlessly in your VS2k8.

Signed-off-by: Henry Tumblin <htumblin@users.sourceforge.net>
Signed-off-by: Frank Kotler <fbkotler@zytor.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
15 years agonasm.nsi: fixup shortcut target on nasm manual
Cyrill Gorcunov [Wed, 23 Sep 2009 19:33:11 +0000 (23:33 +0400)]
nasm.nsi: fixup shortcut target on nasm manual

There is no "manual.pdf" but "nasmdoc.pdf" instead.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
15 years agonasm.nsi: fixup output name
Cyrill Gorcunov [Wed, 23 Sep 2009 17:29:57 +0000 (21:29 +0400)]
nasm.nsi: fixup output name

Sigh... It should be PACKAGE_SHORT_NAME
rather then PRODUCT_SHORT_NAME.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
15 years agonasm.nsi: set compressor before MUI macros
Cyrill Gorcunov [Wed, 23 Sep 2009 17:14:32 +0000 (21:14 +0400)]
nasm.nsi: set compressor before MUI macros

MULTIUSER_MUI may set own compressor so we
need to set it earlies to success.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
15 years agomisc/release: *.ico are binary files
H. Peter Anvin [Wed, 23 Sep 2009 16:54:10 +0000 (09:54 -0700)]
misc/release: *.ico are binary files

Zip needs to know which files to treat as binary, so tell it *.ico are
binary files.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
15 years agonasm.nsi: restore old output name and compressor
Cyrill Gorcunov [Wed, 23 Sep 2009 16:43:34 +0000 (20:43 +0400)]
nasm.nsi: restore old output name and compressor

Othrewise build robot fails

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
15 years agonasm.nsi: do not define VERSION twice
Cyrill Gorcunov [Wed, 23 Sep 2009 13:45:01 +0000 (17:45 +0400)]
nasm.nsi: do not define VERSION twice

VERSION is already defined in version.nsh
no need to define it araing otherwise nsis
compiler fails.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
15 years agosubstitute nasm.nsi with new nasm2.nsi
Cyrill Gorcunov [Mon, 21 Sep 2009 19:15:55 +0000 (23:15 +0400)]
substitute nasm.nsi with new nasm2.nsi

We always have "restore point" but such an action will
allow us to test new installer in more wide audience.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
15 years agonsis2: prepare for substitution
Cyrill Gorcunov [Mon, 21 Sep 2009 19:13:48 +0000 (23:13 +0400)]
nsis2: prepare for substitution

- We need to change slashes to direct ones
- Installer file should be postfixed with plain "-installer"
- Remove nasm.exe duplication

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
15 years agoNew NSIS script
Cyrill Gorcunov [Mon, 14 Sep 2009 19:17:03 +0000 (23:17 +0400)]
New NSIS script

Lets start using new NSIS features like
Modern UI2, Multiuser install.

The file named nasm2.nsi by purpose -- we should
_not_ break existing functionality.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
15 years agoelf,stabs: stabs32/64_generate -- append ending token
Cyrill Gorcunov [Mon, 14 Sep 2009 18:10:08 +0000 (22:10 +0400)]
elf,stabs: stabs32/64_generate -- append ending token

This represent "end of compilation unit" token.
Since gcc does (almost) the same lets be on the
same side.

Though to be precise gcc puts offset which points
to the first byte right after the last instruction
issued but in fact string index is analyzed only
so we may safely write zero here (without relocation
as well).

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
15 years agooutput/elfcommon.h: tab/space cleanup
Cyrill Gorcunov [Sun, 6 Sep 2009 11:25:35 +0000 (15:25 +0400)]
output/elfcommon.h: tab/space cleanup

No change on binary level

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
15 years agooutput/outelf32.c: code style simplification
Cyrill Gorcunov [Thu, 3 Sep 2009 16:16:28 +0000 (20:16 +0400)]
output/outelf32.c: code style simplification

1) nasm_free is safe against NULL passed so call
   it without test

2) dwarf32_output: check for debug_immcall early
   and get out of procedure if success. This allow
   us to move code blocks left removing indents.

3) dwarf32_findfile and dwarf32_findsect: no need
   for 'else' when 'if' target is plain return.
   Move code blocks left removing indents.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
15 years agooutput/outelf32.c: tab-space cleanup
Cyrill Gorcunov [Thu, 3 Sep 2009 16:02:33 +0000 (20:02 +0400)]
output/outelf32.c: tab-space cleanup

Together with a small style nitpicking.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
15 years agooutput/elf64.h: tab-space cleanup
Cyrill Gorcunov [Thu, 3 Sep 2009 15:10:55 +0000 (19:10 +0400)]
output/elf64.h: tab-space cleanup

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
15 years agooutput/elf32.h: tab-space cleanup
Cyrill Gorcunov [Thu, 3 Sep 2009 15:06:04 +0000 (19:06 +0400)]
output/elf32.h: tab-space cleanup

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
15 years agooutput/outelf.h - tab-space cleanup
Cyrill Gorcunov [Thu, 3 Sep 2009 15:04:23 +0000 (19:04 +0400)]
output/outelf.h - tab-space cleanup

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
15 years agoUse I_none opcode instead of hardcoded number
Cyrill Gorcunov [Sun, 16 Aug 2009 08:00:01 +0000 (12:00 +0400)]
Use I_none opcode instead of hardcoded number

Consolidate I_none opcode to be used everywhere
instead of mix (-1,I_none).

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
15 years agoUse fputs instead of fprintf for plain strings
Victor van den Elzen [Thu, 13 Aug 2009 13:07:59 +0000 (15:07 +0200)]
Use fputs instead of fprintf for plain strings

LLVM's Clang warns about this. outieee.c had a real problem.

15 years agoFix some format strings for nasm_error
Victor van den Elzen [Tue, 11 Aug 2009 00:10:16 +0000 (02:10 +0200)]
Fix some format strings for nasm_error

Added a format attribute to nasm_error (only for GCC) and
used the resulting warnings to fix some format strings.

15 years agooutput/dwarf.h: update dwarf constants
Cyrill Gorcunov [Mon, 10 Aug 2009 19:56:42 +0000 (23:56 +0400)]
output/dwarf.h: update dwarf constants

There is a hope we'll be supporting dwarf in full form in future. So
I've encoded the standard constants (though binutils uses some
additional codes).

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
15 years agoAdd strlcpy() function
H. Peter Anvin [Mon, 10 Aug 2009 22:56:52 +0000 (15:56 -0700)]
Add strlcpy() function

Add strlcpy() function and implementation, and use configure to detect
if strlcpy() is natively available on the system.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
15 years agooutput: change null_debug_routine to null_debug_directive
H. Peter Anvin [Sun, 9 Aug 2009 20:02:35 +0000 (13:02 -0700)]
output: change null_debug_routine to null_debug_directive

This is the null implementation of the function debug_directive.  For
some reason it ended up getting mangled as "null_debug_routine".

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
15 years agodisasm.c: eatbyte -- use snprintf to prevent potential buffer overflow
Cyrill Gorcunov [Sun, 9 Aug 2009 15:25:29 +0000 (19:25 +0400)]
disasm.c: eatbyte -- use snprintf to prevent potential buffer overflow

At moment we can't overrun buffer even if we would like to
but better to stay on a safe side and use snprintf.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
15 years agoheaders/c: strip off useless spaces
Cyrill Gorcunov [Sun, 9 Aug 2009 15:09:39 +0000 (19:09 +0400)]
headers/c: strip off useless spaces

All other templates do not have them
so lets unify the approach.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>