H. Peter Anvin [Tue, 26 May 2009 04:40:06 +0000 (21:40 -0700)]
Nindent: update with the -npro and -il0 options
Update with the -npro and, if recent enough, the -il0 options.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
H. Peter Anvin [Sat, 23 May 2009 23:25:14 +0000 (16:25 -0700)]
doc: use NASM syntax for x87 registers
The x87 registers are called ST0 and ST1 in NASM syntax, not ST(0) and
ST(1).
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Cyrill Gorcunov [Sun, 17 May 2009 08:56:54 +0000 (12:56 +0400)]
insns.dat - fixup for XOP (SSE5) AMD instructions
1) A number of PMA -> VPM misprint fixed.
2) Spec points to ymmreg in mnemonics even for L=0 instructions. Fixed.
The instructions are still sorted in order of specification follows.
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Cyrill Gorcunov [Fri, 15 May 2009 09:21:49 +0000 (13:21 +0400)]
insns.dat - introcuce base XOP (SSE5) AMD instructions
Introduce base XOP/FMA4/CVT16 instructions (SSE5)
based on official specification from AMD (rev 3.03).
Some fixes from Peter Johnson and H. Peter Anvin
included (not updated in AMD spec yet).
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Cyrill Gorcunov [Thu, 14 May 2009 17:26:05 +0000 (21:26 +0400)]
insns.pl - add handling of pp VEX/XOP fields
We already have such kind of aliases for L field
(via l0 and l1). Via p0,p1,p2 it's become easier
to follow AMD docs while encoding VEX/XOP commands.
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
H. Peter Anvin [Sat, 9 May 2009 01:01:21 +0000 (18:01 -0700)]
Add symbolic constants for REX_V "classes" (VEX, XOP, ...)
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
H. Peter Anvin [Sat, 9 May 2009 00:56:18 +0000 (17:56 -0700)]
doc: remove insref.src
Remove the old, obsolete insref.src.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
H. Peter Anvin [Wed, 6 May 2009 21:00:48 +0000 (14:00 -0700)]
NASM 2.06rc12
H. Peter Anvin [Mon, 4 May 2009 17:11:22 +0000 (10:11 -0700)]
preproc: handle %+ even during early token replacement
Preexisting code seems to rely on %+ being processed even during early
token replacement, e.g. Syslinux contains the following code:
%macro superb 1
bx %+ %1 equ SuperInfo+($-superblock)*8+4
bs %+ %1 equ $
zb 1
%endmacro
... which is expected to work when invoked as:
superb Media
As a result, set handle_paste_tokens to true at all times; assuming
this turns out to be the way things are we can really just remove it
as an option.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
H. Peter Anvin [Mon, 4 May 2009 05:14:03 +0000 (22:14 -0700)]
Use lower case for VEX and XOP in instructions table
Use lower case for VEX and XOP ("vex", "xop") to avoid visual
confusion (and in the future potential real confusion) with upper-case
hexadecimal numbers.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
H. Peter Anvin [Mon, 4 May 2009 04:42:34 +0000 (21:42 -0700)]
Infrastructure support for AMD's new XOP prefix
Handle AMD's XOP prefixes; they use basically the same encoding as VEX
prefixes, so treat them simply as a variant of VEX.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
H. Peter Anvin [Thu, 30 Apr 2009 15:03:10 +0000 (08:03 -0700)]
outbin: replace fprintf(rf, not_defined); with fputs(not_defined, rf);
Some vendors get nervous about parameterized printf patterns;
furthermore, it's completely unnecessary in this case.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
H. Peter Anvin [Mon, 20 Apr 2009 21:04:17 +0000 (14:04 -0700)]
NASM 2.06rc11
H. Peter Anvin [Mon, 20 Apr 2009 21:01:18 +0000 (14:01 -0700)]
preproc: unify token-pasting code
Unify the token-pasting code between the macro expansion and the
preprocessor parameter case. Parameterize whether or not to handle %+
tokens during expansion (%+ tokens have late binding semantics.)
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
H. Peter Anvin [Mon, 20 Apr 2009 00:24:54 +0000 (17:24 -0700)]
doc: slightly tidy the copyright page of the manual.
H. Peter Anvin [Fri, 17 Apr 2009 21:20:44 +0000 (14:20 -0700)]
preproc: make $ and $$ TOKEN_OTHER
Recognize $ and $$ as TOKEN_OTHER; they aren't really either
TOK_NUMBER nor TOK_ID, even though we have traditionally considered
them TOK_NUMBER.
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
Victor van den Elzen [Fri, 17 Apr 2009 14:17:59 +0000 (16:17 +0200)]
BR 2760773: $$ tokens
The tokenizer didn't handle $$, but relied on token pasting of two $ tokens.
This broke after the improvements in
9bb46df4.
H. Peter Anvin [Wed, 8 Apr 2009 21:02:25 +0000 (14:02 -0700)]
preproc: fix more token pasting cases
"+" can be a separate token that ends up having to get pulled into the
middle of a floating-point constant. It's not even that strange.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
H. Peter Anvin [Wed, 8 Apr 2009 20:49:48 +0000 (13:49 -0700)]
AUTHORS: Update information for HPA
H. Peter Anvin [Wed, 8 Apr 2009 05:10:35 +0000 (22:10 -0700)]
NASM 2.06rc10
H. Peter Anvin [Wed, 8 Apr 2009 05:09:05 +0000 (22:09 -0700)]
Document preprocessor token concatenation fix.
H. Peter Anvin [Wed, 8 Apr 2009 04:59:24 +0000 (21:59 -0700)]
Handle weird cases of token pasting
Especially when token pasting involves floating-point numbers, we can
have some really strange effects from token pasting: for example,
pasting the two tokens "xyzzy" and "1e+10" ends up with *three*
tokens: "xyzzy1e" "+" "10". The easiest way to deal with this is to
explicitly combine the string and then run tokenize() on it.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
H. Peter Anvin [Wed, 8 Apr 2009 03:59:41 +0000 (20:59 -0700)]
NASM 2.06rc9
H. Peter Anvin [Tue, 7 Apr 2009 02:37:30 +0000 (19:37 -0700)]
nasm.nsi: add COPYING to the list of files to package
H. Peter Anvin [Tue, 7 Apr 2009 02:12:34 +0000 (19:12 -0700)]
nasm.nsi: add NASM Manual; automate version generation
Add the NASM Manual (as a PDF) to the Windows installer, and abstract
out the version number.
Shao Miller [Tue, 7 Apr 2009 02:07:37 +0000 (19:07 -0700)]
Add NSIS script to make a Windows installer
Here is an NSIS script for making a simple NASM package. It creates a
NASM folder with some of the important binaries in it, as well as a
simple batch file to get a CLI with the NASM folder included in the
PATH. Expects to be built from inside the bin/ directory. Fairly
primitive. Feedback welcome. - Shao
Victor van den Elzen [Sun, 29 Mar 2009 01:09:13 +0000 (03:09 +0200)]
Add STRUC change to changes.src
Victor van den Elzen [Fri, 27 Mar 2009 02:53:59 +0000 (03:53 +0100)]
FR 2499968: structures with non-zero base offset
Add an optional second argument to struc, document it and test it.
Also removed trailing whitespace in nasmdoc.src in the process.
H. Peter Anvin [Thu, 19 Mar 2009 13:52:07 +0000 (06:52 -0700)]
disasm: fix reversed REP vs REPNE in eatbyte()
F2 is REPNE, F3 is REP(E)
H. Peter Anvin [Thu, 19 Mar 2009 06:10:19 +0000 (23:10 -0700)]
disasm: when no instruction is found, consider a naked prefix
If we can't find a matching instruction, rather than printing it as a
"db" literal, consider first if we can disassemble it as a naked prefix.
H. Peter Anvin [Wed, 18 Mar 2009 23:21:45 +0000 (16:21 -0700)]
NASM 2.06rc8
Andy Polyakov [Wed, 18 Mar 2009 21:49:23 +0000 (14:49 -0700)]
outcoff: BR 2685756: fix SAFESEH with an internal symbol
Fix the SAFESEH directive for the specific case of a symbol internal
to the program. With the optimizer enabled, it would otherwise fail
unless the symbol is external.
Michael Scherer [Wed, 18 Mar 2009 21:26:29 +0000 (22:26 +0100)]
outelf32/64: fix uninitialized rbtree
Fix crash caused by uninitialised memory that lead to dangling pointer
in the rbtree. This can be seen by compiling zsnes 1.50, with a file
that define many symbols, such as fxemu2c.asm.
H. Peter Anvin [Wed, 18 Mar 2009 01:26:47 +0000 (18:26 -0700)]
BR 2690688: Fix opcodes for FMA instructions
Two bugs with respect to the FMA instructions:
- the variant increment is supposed to be 0x10, not 0x01.
- the base opcode for scalar VFNMADD is 0x9d, not 0x9c
H. Peter Anvin [Tue, 17 Mar 2009 23:18:41 +0000 (16:18 -0700)]
Add test from BR 2690688
Add the test case from BR 2690688 to the test collection.
H. Peter Anvin [Tue, 17 Mar 2009 23:13:10 +0000 (16:13 -0700)]
BR 2690688: add missing VFM instructions
The Perl script which auto-generated the VFM instructions had
incorrectly conflated the VEX.W and VEX.L bits, with the result that
only half the valid instructions were generated.
H. Peter Anvin [Mon, 16 Mar 2009 23:32:42 +0000 (16:32 -0700)]
BR 2689316: PEXTRQ requires REX.W
The PEXTRQ instruction requires a REX.W prefix.
H. Peter Anvin [Mon, 16 Mar 2009 18:51:07 +0000 (11:51 -0700)]
genfma: fix spelling of the VFNM instructions
Fix the spelling of the scalar VFNM instruction in genfma.pl, too,
just in case we need to pull this script out again...
H. Peter Anvin [Mon, 16 Mar 2009 18:49:27 +0000 (11:49 -0700)]
insns.dat: fix VFNM instructions incorrectly spelled as VFMN
The scalar versions of the VFNM instructions had been incorrectly
spelled VFMN.
H. Peter Anvin [Sun, 15 Mar 2009 21:38:54 +0000 (14:38 -0700)]
NASM 2.06rc7
H. Peter Anvin [Sun, 8 Mar 2009 05:54:31 +0000 (21:54 -0800)]
BR 2672117: handle long lines for db/dw/etc.
Handle long arrays on a single line in db/dw/etc.
H. Peter Anvin [Sun, 1 Mar 2009 21:57:40 +0000 (13:57 -0800)]
autoconf: detect the broken bool in OpenWatcom 1.8
OpenWatcom 1.8 has a C99 mode, which implements _Bool and
<stdbool.h>. Unfortunately the implementation is broken, and doesn't
let _Bool be implicitly converted to integer (as required by the C99
spec). Detect this case in autoconf.
H. Peter Anvin [Sun, 1 Mar 2009 08:22:16 +0000 (00:22 -0800)]
Most instruction codes are octal, so print errors that way too
Most of our instruction opcodes are written in octal. Thus, it makes
sense to print them that way if we ever have an error message.
H. Peter Anvin [Fri, 27 Feb 2009 00:37:55 +0000 (16:37 -0800)]
optimization.asm: more sbyte tests
A few more sbyte optimization tests.
H. Peter Anvin [Fri, 27 Feb 2009 00:34:56 +0000 (16:34 -0800)]
sbyte: optimization is OK if UNKNOWN isn't set
We can optimize the sbytes if the UNKNOWN flag isn't set
H. Peter Anvin [Fri, 27 Feb 2009 00:34:07 +0000 (16:34 -0800)]
optimization.asm: add sbyte tests
H. Peter Anvin [Thu, 26 Feb 2009 22:58:06 +0000 (14:58 -0800)]
NASM 2.06rc6
H. Peter Anvin [Thu, 26 Feb 2009 22:48:03 +0000 (14:48 -0800)]
BR 2413265: don't pessimize displacements
Optimize displacements, don't pessimize them. When running in the
optimizer, we always keep track of when a reference is forward. That
doesn't mean it is unknown.
H. Peter Anvin [Thu, 26 Feb 2009 22:47:17 +0000 (14:47 -0800)]
optimization.asm: add EA optimization tests
Add tests for EA optimizations
H. Peter Anvin [Thu, 26 Feb 2009 22:36:19 +0000 (14:36 -0800)]
nasm.c: another readability cleanup
Yet another change for readability
H. Peter Anvin [Thu, 26 Feb 2009 22:34:48 +0000 (14:34 -0800)]
nasm.c: readability cleanup for seg:off parsing
The code to pick apart seg:off in nasm.c was virtually unreadable due
to mechanized line breaking.
Victor van den Elzen [Wed, 25 Feb 2009 16:49:23 +0000 (17:49 +0100)]
Rename convergence.asm to optimization.asm
Victor van den Elzen [Wed, 25 Feb 2009 16:32:00 +0000 (17:32 +0100)]
Do not confuse segmentless adresses and unknown forward references
Also be optimistic with immediate forward references.
H. Peter Anvin [Tue, 24 Feb 2009 02:27:29 +0000 (18:27 -0800)]
Add VPCLMUL instructions
H. Peter Anvin [Tue, 24 Feb 2009 01:51:25 +0000 (17:51 -0800)]
assemble: only be optimistic with NO_SEG if we're really in pass 1
Only be optimistic about the reachability of a symbol with NO_SEG if
we are truly in pass 1, i.e. it could possibly be just a forward
reference. After we have done a single pass, if it is still NO_SEG,
then it is an absolute symbol and need to be treated as such.
H. Peter Anvin [Tue, 24 Feb 2009 01:47:25 +0000 (17:47 -0800)]
convergence.asm: add test of jmp to an absolute address
A JMP to an absolute address can't be short. Thus, we must not try to
make it so.
Victor van den Elzen [Mon, 23 Feb 2009 04:16:35 +0000 (05:16 +0100)]
Add test file for optimal convergence
Some edge cases where starting with a long form
converges suboptimally.
Victor van den Elzen [Mon, 23 Feb 2009 03:35:00 +0000 (04:35 +0100)]
BR 2420167: jmp not always optimized
Begin by assuming short jumps are possible to prevent suboptimal convergence.
H. Peter Anvin [Sun, 22 Feb 2009 04:45:42 +0000 (20:45 -0800)]
PCLMUL is apparently targeted for Westmere with the AES stuff
The PCLMUL instruction is apparently targetted for Westmere.
H. Peter Anvin [Sun, 22 Feb 2009 03:02:58 +0000 (19:02 -0800)]
NASM 2.06rc5
H. Peter Anvin [Sun, 22 Feb 2009 02:58:15 +0000 (18:58 -0800)]
BR 2557903: fix disassembly of a set of SSE MOV* instructions
Fix the disassembly of the alternate forms of register-register
MOVAPD, MOVDQA, MOVDQU, MOVQ, MOVSD, and MOVUPD.
NASM never generates these, but they would be disassembled
incorrectly.
H. Peter Anvin [Sun, 22 Feb 2009 02:51:17 +0000 (18:51 -0800)]
BR 2541252: Fix issues in insns.dat, mostly related to LZCNT and POPCNT
Fix various flags on LZCNT and POPCNT, and fix a few instructions
tagged \360\332, which makes no sense.
H. Peter Anvin [Sun, 22 Feb 2009 02:26:20 +0000 (18:26 -0800)]
changes.src: document WAIT and %$$ fixes
H. Peter Anvin [Sun, 22 Feb 2009 02:22:56 +0000 (18:22 -0800)]
BR 2592476: Treat WAIT as a prefix even though it's really an instruction
WAIT is technically an instruction, but from an assembler standpoint
it behaves as if it had been a prefix. In particular, it has to be
ordered *before* any real hardware prefixes.
H. Peter Anvin [Sun, 22 Feb 2009 01:55:08 +0000 (17:55 -0800)]
br704736: handle deep context-local macros
The documentation says that constructs with %$...$foo can be used
to access macros from deeper in the context stack. From what
I can tell, that has never actually worked, since we'd enter names
like %$foo into the context-local macro name table. Instead, only
insert the tail of the macro name into the context-local table;
expand get_ctx to also return a pointer to the macro name proper;
this is rather straightforward since we'd usually save away that
name at the point get_ctx is called anyway.
H. Peter Anvin [Sun, 22 Feb 2009 01:54:31 +0000 (17:54 -0800)]
nasmlib: make nasm_strcat() take const arguments
None of the strings passed to nasm_strcat() are modified, to
make them const.
H. Peter Anvin [Sun, 22 Feb 2009 01:27:51 +0000 (17:27 -0800)]
outelf32/64: remove align_str in favor of fwritezero()
Drop the use of yet another local all-zero buffer, align_str, in favor
of calling fwritezero().
H. Peter Anvin [Sun, 22 Feb 2009 01:27:13 +0000 (17:27 -0800)]
outbin: fix typo: "sections" not "section"
Fix silly typo: the variable is "sections" not "section"...
H. Peter Anvin [Mon, 9 Feb 2009 10:03:33 +0000 (11:03 +0100)]
Unify all-zero buffers; add fwritezero()
We have a number of all-zero buffers in the code. Put a single
all-zero buffer in nasmlib.c. Additionally, add fwritezero()
which can be used to write an arbitrary number of all-zero bytes;
this prevents the situation where the all-zero buffer is simply
too small.
H. Peter Anvin [Sun, 22 Feb 2009 01:19:05 +0000 (17:19 -0800)]
BR 2611906: proper error message for start < origin
When a section other than .text has a start < origin, we would
segfault; fix that.
Furthermore, at bin_cleanup() we don't have usable file/line
information, so pass ERR_NOFILE to the error() function. Perhaps less
than ideal, but better than printing a null pointer.
H. Peter Anvin [Sun, 22 Feb 2009 00:58:34 +0000 (16:58 -0800)]
NASM 2.06rc4
H. Peter Anvin [Sun, 22 Feb 2009 00:56:52 +0000 (16:56 -0800)]
Fix opcode for VADDSUBPS; operands for VBLEND; add SSE for AES ops
Fix the opcode for VADDSUBPS
Fix the operands for VBLEND
Corrent the instruction flags for the AES ops (they're SSE)
H. Peter Anvin [Sun, 22 Feb 2009 00:43:48 +0000 (16:43 -0800)]
FMA instructions won't be in Sandy Bridge
The FMA instructions aren't scheduled for Sandy Bridge after all.
They will be "in a future processor", so create a placeholder for now.
H. Peter Anvin [Wed, 18 Feb 2009 22:13:45 +0000 (14:13 -0800)]
Perl script used to generate FMA instruction patterns
Small perl script used to generate the FMA instruction patterns. May
come in useful if the spec changes again.
H. Peter Anvin [Wed, 18 Feb 2009 22:13:25 +0000 (14:13 -0800)]
changes.src: document updated AVX specification
H. Peter Anvin [Wed, 18 Feb 2009 22:07:14 +0000 (14:07 -0800)]
Update the VFMA* instructions per the AVX spec version 5
Update the VFMA* instructions to match the AVX spec version 5.
Since these are highly regular, use a small Perl script to generate
the instruction patterns.
H. Peter Anvin [Wed, 18 Feb 2009 22:05:15 +0000 (14:05 -0800)]
insns.dat: fix minor formatting anomalies
Fix minor anomalies in insns.dat.
H. Peter Anvin [Wed, 18 Feb 2009 22:04:02 +0000 (14:04 -0800)]
insns.pl: handle the new VEX.DDS flag per AVX spec version 5
The AVX spec version 5 introduces the new VEX.DDS flag; support it.
H. Peter Anvin [Fri, 13 Feb 2009 17:33:56 +0000 (09:33 -0800)]
BR 2593349: Move version message back to stdout
Checkin
4b9358928b114caaf34a69d6fdfd3b285b7a72cc changed the version
message from stdout to stderr, but:
a) doesn't motivate the change in the commit log;
b) bundles that with other changes;
c) is inconsistent with other programs;
d) was done by me and I can't remember any reason for it.
Hence conclude it was unintentional and therefore a bug. Since this
commit was done after 2.05.01 no stable release has been affected.
H. Peter Anvin [Wed, 11 Feb 2009 18:54:59 +0000 (10:54 -0800)]
NASM 2.06rc3
Charles Crayne [Thu, 29 Jan 2009 03:07:18 +0000 (19:07 -0800)]
Allow global declaration after symbol definition
This experimental feature needs to be tested for
all output formats which recognize global symbols.
Charles Crayne [Tue, 27 Jan 2009 22:43:37 +0000 (14:43 -0800)]
Fix Bugs item #2537867
Module labels.c has code to issue error message when global
directive appears after symbol definition, but the test condition
was incorrectly punctuated.
Soronel Haetir [Tue, 20 Jan 2009 02:27:11 +0000 (17:27 -0900)]
Document the as86 ..start label
I realized that a documentation change is required to inform users about the
addition of entry point support for the as86 format. The following produces
reasonable output for .txt output, but I am blind and so can't check the
other formats as readily.
H. Peter Anvin [Mon, 19 Jan 2009 07:04:45 +0000 (23:04 -0800)]
doc: clean up the "String Manipulation in Macros" section
Minor cleanups to the "String Manipulation in Macros" section.
H. Peter Anvin [Mon, 19 Jan 2009 06:59:13 +0000 (22:59 -0800)]
doc: indent the time macro example
Indent the time macro example for ease of reading.
H. Peter Anvin [Mon, 19 Jan 2009 06:55:53 +0000 (22:55 -0800)]
doc: fix typo
verson -> version
H. Peter Anvin [Mon, 19 Jan 2009 06:55:33 +0000 (22:55 -0800)]
Merge branch 'master' of git+ssh://repo.or.cz/srv/git/nasm
H. Peter Anvin [Mon, 19 Jan 2009 06:51:46 +0000 (22:51 -0800)]
doc: update the section on numeric constants
Update the section on numeric constants, and add a few more examples.
Charles Crayne [Sun, 18 Jan 2009 23:27:03 +0000 (15:27 -0800)]
Generate warning for unknown section atributes
Previously, the ELF backends silently ignored incorrect or unknown
attributes on section declarations, and therefore used default values
in cases where the user had make an error in attempting to specify
custom values.
H. Peter Anvin [Mon, 5 Jan 2009 17:08:06 +0000 (09:08 -0800)]
Fix the [warning] directive
Fix multiple bugs in the [warning] directive:
- Only parsed on pass 1
- "-" was interpreted as "+"
H. Peter Anvin [Sun, 4 Jan 2009 01:56:41 +0000 (17:56 -0800)]
outas86: slight stylistic cleanups
Minor stylistic cleanups to previous patch.
Soronel Haetir [Sun, 4 Jan 2009 01:21:52 +0000 (16:21 -0900)]
Add entry point support to as86 backend
I needed entry point support with the as86 format, and after looking through
the archives found a similar desire from someone in 2002. For some reason
such a patch never made it into the code, even though the required flag
value is present, so I offer the a patch of my own.
I compared against what is done in the .obj format and the approaches are
quite similar which I hope will aid in its acceptability. While I have
tested it extensively it does do the job asked, and I'm honestly not sure
what extensive testing of the change would look like.
H. Peter Anvin [Tue, 30 Dec 2008 04:52:28 +0000 (20:52 -0800)]
BR 2432826: Fix enforcement of the LONG bit
Somewhere we lost the enforcement of the LONG bit, as opposed to
NOLONG. Fix this in the most obvious way.
H. Peter Anvin [Tue, 30 Dec 2008 03:58:36 +0000 (19:58 -0800)]
BR 2413278: Nonoptimal forms of arithmetic instructions involving AX
At some point, we lost the optimizations for the core arithmetic
operations involving AX. Put them back.
H. Peter Anvin [Tue, 23 Dec 2008 00:37:59 +0000 (16:37 -0800)]
changes.src: document Mach-O alignment fix.
H. Peter Anvin [Sat, 20 Dec 2008 00:48:07 +0000 (16:48 -0800)]
NASM 2.06rc2
David DeHaven [Tue, 9 Dec 2008 08:18:43 +0000 (00:18 -0800)]
Mach-O alignment fix
Several projects have taken to using .text to store read-only data
when building on Mac OS X due to crashes in SSE code from the .rodata
section being mis-aligned. It seems there was a misunderstanding about
how ld/ld64 handles section alignment in outmacho.c so I wrote a patch
to fix it. I tested it against x264 git, modified it to use ".rodata
align=16" for the data section and use movdqa instructions (guaranteed
to crash when built with unpatched nasm) and it passed all tests in
its checkasm tool.
If you want more data I can provide, but it's late and I've had a
couple glasses of mulled wine :)
-DrD-
Victor van den Elzen [Wed, 10 Dec 2008 12:04:58 +0000 (13:04 +0100)]
BR 2413272: Warn about byte displacement overflow
Remove the special case for single byte displacements,
which was already in out() anyway.
H. Peter Anvin [Sun, 30 Nov 2008 23:53:02 +0000 (15:53 -0800)]
NASM 2.06rc1
H. Peter Anvin [Fri, 7 Nov 2008 03:55:05 +0000 (19:55 -0800)]
ELF: use rbtree for symbol searches
Linear searches are evil, so use an llrbtree to search for symbols by
offset. This doesn't change the preexisting behaviour that we only
look for global symbols.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>