platform/upstream/nasm.git
17 years agoBR 1834292: Fix multiple disassembler bugs
H. Peter Anvin [Mon, 19 Nov 2007 05:55:26 +0000 (21:55 -0800)]
BR 1834292: Fix multiple disassembler bugs

- Correct the building on the disassembler decision tree.
- Handle SSE instructions with F2 prefix (\332) correctly.
- Mark instructions which are now used as prefixes with ND.
  (In a future version when we have better CPU version handling,
  we should probably build the decision tree at runtime based on
  the selected CPU feature sets.)
- Sanitize the handling of \144-147 and \154-157 in both the assembler
  and disassembler.  They take an opcode byte as argument; don't
  pretend they don't.

17 years agoBR 1834056: Remove warnings in rdoff/rdoff.c
H. Peter Anvin [Sun, 18 Nov 2007 20:01:05 +0000 (12:01 -0800)]
BR 1834056: Remove warnings in rdoff/rdoff.c

Remove warnings, especially the alias warnings in rdoff/rdoff.c.

17 years agoBR 1091926: Bounds checking for command line parsing
H. Peter Anvin [Sun, 18 Nov 2007 19:55:10 +0000 (11:55 -0800)]
BR 1091926: Bounds checking for command line parsing

Avoid failure if the command line has doctored arguments.

17 years agoRemove FIXME from documentation
H. Peter Anvin [Sun, 18 Nov 2007 05:21:18 +0000 (21:21 -0800)]
Remove FIXME from documentation

This better work now, we're in release candidate mode.

17 years agoCheck in Keith's Fixes
Charles Crayne [Sun, 18 Nov 2007 05:08:33 +0000 (21:08 -0800)]
Check in Keith's Fixes

1. Don't warn on 32-bit overflow
2. Change EM64T to Intel 64 in Defining CPU Dependencies
   section of documentation.

17 years agoMake the definition for float_const() match the prototype
H. Peter Anvin [Sat, 17 Nov 2007 22:35:19 +0000 (14:35 -0800)]
Make the definition for float_const() match the prototype

The definition for float_const() had int32_t, the prototype had only
int.  We only care about the sign, so int makes more sense.

17 years agoNASM 2.00rc1
H. Peter Anvin [Fri, 16 Nov 2007 08:03:02 +0000 (00:03 -0800)]
NASM 2.00rc1

17 years agoClean up the command-line parsing; make -w/-W match others
H. Peter Anvin [Fri, 16 Nov 2007 01:12:29 +0000 (17:12 -0800)]
Clean up the command-line parsing; make -w/-W match others

Clean up the command-line parsing and make -w/-W match the behaviour
of all the other options with regards to arguments.

17 years agoBR 993895: Support zero-operand floating-point insn
H. Peter Anvin [Thu, 15 Nov 2007 22:38:19 +0000 (14:38 -0800)]
BR 993895: Support zero-operand floating-point insn

Support the zero-operand form of floating-point instructions.  Note
that in most cases, the form generated is actually the "popping" form,
e.g. "FADD" becomes "FADDP st0,st1".  This is in accordance with the
Intel documentation.  "FADDP" is also supported.

17 years agoRemove some vestiges of "native" RESW/RESD support
H. Peter Anvin [Thu, 15 Nov 2007 18:25:52 +0000 (10:25 -0800)]
Remove some vestiges of "native" RESW/RESD support

We now internally convert all RESx opcodes to RESB, so we don't need
support for that in the assembler.

17 years agooutbin.c: fix one missed change from type -> size
H. Peter Anvin [Thu, 15 Nov 2007 18:24:55 +0000 (10:24 -0800)]
outbin.c: fix one missed change from type -> size

Fix one missed change from "type" to "size".  May want to look through
all the other backends as well for similar issues.

This would generate the wrong section lengths, with obviously bad results.

17 years agoSupport setting OSABI value in ELF header.
root [Wed, 14 Nov 2007 03:52:54 +0000 (19:52 -0800)]
Support setting OSABI value in ELF header.

17 years agoEnable a few warnings by default; clean up warning descriptions
H. Peter Anvin [Tue, 13 Nov 2007 19:34:34 +0000 (11:34 -0800)]
Enable a few warnings by default; clean up warning descriptions

17 years agoAdd gcc-style -W/-Wno- warning selections; -Wall; -Werror
H. Peter Anvin [Tue, 13 Nov 2007 19:31:15 +0000 (11:31 -0800)]
Add gcc-style -W/-Wno- warning selections; -Wall; -Werror

Add gcc-style -Wxxx -Wno-xxx warning selection as an alternative to
-w+xxx/-w-xxx.

Add "all" as an alias for all (actual) warnings.

Add "error" to treat warnings as errors.

17 years agoClean up the fwrite*() function definitions somewhat
H. Peter Anvin [Tue, 13 Nov 2007 18:37:23 +0000 (10:37 -0800)]
Clean up the fwrite*() function definitions somewhat

Slight cleanup of the fwrite*() functions.  This actually helps gcc
generate better code on i386, for no apparent reason.

17 years agoCast 64-bit switch expressions to (int) to keep OpenWatcom happy
H. Peter Anvin [Tue, 13 Nov 2007 17:49:51 +0000 (09:49 -0800)]
Cast 64-bit switch expressions to (int) to keep OpenWatcom happy

Our size arguments are 64-bit values, but we don't need that range for
anywhere where we need a switch.  OpenWatcom can't deal with them
(sigh), so cast them to (int) for now.

17 years agox86-host-specific performance improvement
H. Peter Anvin [Tue, 13 Nov 2007 17:46:38 +0000 (09:46 -0800)]
x86-host-specific performance improvement

If we're on an x86 host, we can do unaligned littleendian memory
references directly.  Just do'em.

17 years agoAddress data is int64_t; simplify writing an address object
H. Peter Anvin [Tue, 13 Nov 2007 17:37:59 +0000 (09:37 -0800)]
Address data is int64_t; simplify writing an address object

Address data is always int64_t even if the size itself is smaller;
this was broken on bigendian hosts (still need testing!)

Create simple "write sized object" macros.

17 years agondisasm: factor out the common operand-extraction code
H. Peter Anvin [Tue, 13 Nov 2007 07:00:31 +0000 (23:00 -0800)]
ndisasm: factor out the common operand-extraction code

Factor out the common operand-extraction code in the disassembler, as
previously done in the assembler.

17 years agoUn-special-case "xchg rax,rax"; disassemble o64
H. Peter Anvin [Tue, 13 Nov 2007 06:55:27 +0000 (22:55 -0800)]
Un-special-case "xchg rax,rax"; disassemble o64

Un-special-case "xchg rax,rax"; allow it to be encoded as 48 90 for
orthogonality's sake.  It's a no-op, to be sure, but so are many other
instructions.

"xchg eax,eax" is still special-cased in 64-bit mode since it is not a
no-op; unadorned opcode 90 is now simply "nop" and nothing else.

Make the disassembler detect unused REX.W and display them as an "o64"
prefix.

17 years agoBR 1709392: Fix alignment handling in Mach-O format
H. Peter Anvin [Tue, 13 Nov 2007 06:11:46 +0000 (22:11 -0800)]
BR 1709392: Fix alignment handling in Mach-O format

Fix alignment handling in the Mach-O format.  The patch is from the
bug report, mangled to apply to the current source base.  I have no
way to test this, so I'm going to have to assume it's correct.

17 years agoBR 1828866: fix handling of LAR/LSL
H. Peter Anvin [Tue, 13 Nov 2007 06:05:31 +0000 (22:05 -0800)]
BR 1828866: fix handling of LAR/LSL

Fix handling of LAR/LSL with various sized operands

17 years agoBetter (but not *good!*) handling of 64-bit addressing in ndisasm
H. Peter Anvin [Tue, 13 Nov 2007 05:57:00 +0000 (21:57 -0800)]
Better (but not *good!*) handling of 64-bit addressing in ndisasm

More correct -- but not fully correct -- handing of 64-bit addressing
in ndisasm.  In particular, we need to generate "a32" versus "dword"
where applicable.

17 years agoFix disassembly of XCHG
H. Peter Anvin [Tue, 13 Nov 2007 05:02:33 +0000 (21:02 -0800)]
Fix disassembly of XCHG

"REX.B 90" in 64-bit mode is "xchg eax,r8d" not "nop"; equivalent
situation for "REX.WB 90" (xchg rax,r8).

17 years agoTest of XCHG
H. Peter Anvin [Tue, 13 Nov 2007 04:18:33 +0000 (20:18 -0800)]
Test of XCHG

Test for XCHG

17 years agoFix handling of XCHG in 64-bit mode
H. Peter Anvin [Tue, 13 Nov 2007 04:18:05 +0000 (20:18 -0800)]
Fix handling of XCHG in 64-bit mode

The handling of XCHG in 64-bit mode somewhat broken.  Add a register
flag for "not accumulator", so we can generate all the appropriate
modes.

17 years agoMore \321 -> \324 bug fixes
H. Peter Anvin [Tue, 13 Nov 2007 03:36:13 +0000 (19:36 -0800)]
More \321 -> \324 bug fixes

Additional \321 flags (o32) that should be \324 (o64).

17 years agofloat.c: all warnings and errors are pass 1 only
H. Peter Anvin [Tue, 13 Nov 2007 02:25:24 +0000 (18:25 -0800)]
float.c: all warnings and errors are pass 1 only

None of the floating-point errors or warnings are anything but pass 1
only; use the ERR_PASS1 flag to capture that.

17 years agoUpdate documentation for stack relative directives.
Charles Crayne [Sun, 11 Nov 2007 05:55:19 +0000 (21:55 -0800)]
Update documentation for stack relative directives.
Bring a few other sections up to date.

17 years agoClean up a few more 32-bit bottlenecks
Charles Crayne [Sun, 11 Nov 2007 01:52:23 +0000 (17:52 -0800)]
Clean up a few more 32-bit bottlenecks

17 years agoUpdate documantation for stack relative directives
Charles Crayne [Sat, 10 Nov 2007 00:37:41 +0000 (16:37 -0800)]
Update documantation for stack relative directives

17 years agoMerge branch 'master' of /home/chuck/development/gitnasm/
Charles Crayne [Sat, 10 Nov 2007 00:33:54 +0000 (16:33 -0800)]
Merge branch 'master' of /home/chuck/development/gitnasm/

17 years agoUpdate documentation for stack relative directives
Charles Crayne [Sat, 10 Nov 2007 00:25:43 +0000 (16:25 -0800)]
Update documentation for stack relative directives

17 years agoDon't combine type and size into a single argument
H. Peter Anvin [Fri, 9 Nov 2007 22:44:02 +0000 (14:44 -0800)]
Don't combine type and size into a single argument

Don't combine type and size into a single argument; *every* backend
immediately breaks them apart, so it's really just a huge waste of
effort.  Additionally, it avoids using short immediates in the
resulting code, which is a bad thing.

17 years agoAdd flat64 to %stacksize choices
Charles Crayne [Fri, 9 Nov 2007 06:11:14 +0000 (22:11 -0800)]
Add flat64 to %stacksize choices

17 years agoFix building under OpenWatcom
H. Peter Anvin [Fri, 9 Nov 2007 04:43:22 +0000 (20:43 -0800)]
Fix building under OpenWatcom

OpenWatcom doesn't like 64-bit switch arguments; the change to 64-bit
type arguments caused that to happen in outmacho.c.  Hack around it
for now; however, realistically speaking the whole bit stealing thing
is probably a bad idea, especially since virtually all CPUs handle
short immediates better than long ones.

17 years agops2pdf: remove -dOptimize=true
H. Peter Anvin [Fri, 9 Nov 2007 04:29:37 +0000 (20:29 -0800)]
ps2pdf: remove -dOptimize=true

Remove -dOptimize=true; it actually generates larger output, since the
optimization performed is "network optimization".

17 years agoNo binary files left in the source distro; unbreak release script
H. Peter Anvin [Fri, 9 Nov 2007 04:21:41 +0000 (20:21 -0800)]
No binary files left in the source distro; unbreak release script

There are no more binary files in the source distro; this broke the
build robot.  Comment out the binary file zipping.

17 years agoBR 1828103: Fix %arg and %local
H. Peter Anvin [Fri, 9 Nov 2007 04:01:11 +0000 (20:01 -0800)]
BR 1828103: Fix %arg and %local

Correct the implementation of %arg and %local.

It's questionable how much they make sense for 64-bit mode; even in
32-bit mode one normally make references off the stack pointer instead
of the base pointer (frame pointer), but that requires keeping track
of the stack pointer offset.

17 years agonasmlib.c: prefix_name(): use the elements() macro
H. Peter Anvin [Fri, 9 Nov 2007 03:34:01 +0000 (19:34 -0800)]
nasmlib.c: prefix_name(): use the elements() macro

Use the elements() macro to count the elements in a static array.

17 years agoMove elements() to nasmlib.h
H. Peter Anvin [Fri, 9 Nov 2007 03:30:22 +0000 (19:30 -0800)]
Move elements() to nasmlib.h

Move elements() to nasmlib.h; that is the best place for this kind of
utility macros.

17 years agoconstipate the "str" argument to bsi() and bsii()
H. Peter Anvin [Fri, 9 Nov 2007 03:15:33 +0000 (19:15 -0800)]
constipate the "str" argument to bsi() and bsii()

The string argument to bsi() and bsii() should be const.

17 years agoUpgrade RAA functions to hold 64-bit data.
Charles Crayne [Thu, 8 Nov 2007 03:03:46 +0000 (19:03 -0800)]
Upgrade RAA functions to hold 64-bit data.

17 years agoPass 64-bit instruction lengths to back-ends.
Charles Crayne [Wed, 7 Nov 2007 05:48:12 +0000 (21:48 -0800)]
Pass 64-bit instruction lengths to back-ends.

17 years agoPrepare for 64-bit instruction lengths
Charles Crayne [Wed, 7 Nov 2007 02:27:23 +0000 (18:27 -0800)]
Prepare for 64-bit instruction lengths

17 years agoDisambiguate error messages
Charles Crayne [Tue, 6 Nov 2007 05:49:49 +0000 (21:49 -0800)]
Disambiguate error messages

17 years agoUpgrade label functions to 64-bit
Charles Crayne [Tue, 6 Nov 2007 01:19:32 +0000 (17:19 -0800)]
Upgrade label functions to 64-bit

17 years agoPermit opcode names as labels as long as they are followed by a colon
H. Peter Anvin [Mon, 5 Nov 2007 05:09:32 +0000 (21:09 -0800)]
Permit opcode names as labels as long as they are followed by a colon

Permit opcode names to be used as labels if and only if they are
succeeded by a colon.  Opcode names occurring when parsing expressions
are all treated as labels; a leading colon occurred when parsing an
instruction forces a parser restart with the instruction forcibly
treated as an identifier.

17 years agoMake warning limit valid for both i386 and x86_64
Charles Crayne [Sun, 4 Nov 2007 23:28:30 +0000 (15:28 -0800)]
Make warning limit valid for both i386 and x86_64

17 years agoWarn on out of bounds EA displacements
Charles Crayne [Sun, 4 Nov 2007 05:06:13 +0000 (22:06 -0700)]
Warn on out of bounds EA displacements

17 years agoTreat info files as binary when creating xdoc distro file
H. Peter Anvin [Thu, 1 Nov 2007 22:08:27 +0000 (15:08 -0700)]
Treat info files as binary when creating xdoc distro file

info files appear to contain embedded binary information and should
therefore be treated as binary when creating zipfiles.

17 years agoRemove obsolete binary files from the distribution
H. Peter Anvin [Thu, 1 Nov 2007 22:07:42 +0000 (15:07 -0700)]
Remove obsolete binary files from the distribution

Remove a JPEG file and a long-unmaintained support file for an
editor.  These are the only binary files in the standard distribution.

17 years agoMove declarations before statements
H. Peter Anvin [Thu, 1 Nov 2007 21:53:32 +0000 (14:53 -0700)]
Move declarations before statements

C99 permits declarations and statements to be intermixed, so gcc don't
warn about them, but MSVC and OpenWatcom get unhappy about them.

17 years agoNASM 0.99.06
H. Peter Anvin [Thu, 1 Nov 2007 06:37:35 +0000 (23:37 -0700)]
NASM 0.99.06

17 years agoScript to tag the tree for release
H. Peter Anvin [Thu, 1 Nov 2007 06:37:19 +0000 (23:37 -0700)]
Script to tag the tree for release

Script to tag the tree for release.  Once this tag is pushed
(git push; git push --tags) the build robot will pick it up and
produce the builds.

17 years agoEven more "riprel" tests
H. Peter Anvin [Wed, 31 Oct 2007 17:59:26 +0000 (10:59 -0700)]
Even more "riprel" tests

Add a64 and a32 combinations.

17 years agofloatx.asm: add tests for "rounds up to smallest denorm"
H. Peter Anvin [Tue, 30 Oct 2007 08:17:57 +0000 (01:17 -0700)]
floatx.asm: add tests for "rounds up to smallest denorm"

Add tests for the case where we round upwards to reach the smallest
possible denorm, i.e. "saved from underflow by rounding."

17 years agoRun "make alldeps"
H. Peter Anvin [Tue, 30 Oct 2007 08:13:27 +0000 (01:13 -0700)]
Run "make alldeps"

17 years agofloat.c: handle round-up-to-denorm correctly.
H. Peter Anvin [Tue, 30 Oct 2007 08:13:09 +0000 (01:13 -0700)]
float.c: handle round-up-to-denorm correctly.

17 years agoExhaustive test for 8-bit floating point values
H. Peter Anvin [Tue, 30 Oct 2007 07:58:13 +0000 (00:58 -0700)]
Exhaustive test for 8-bit floating point values

17 years agoClean up the handing of operands in assemble.c
H. Peter Anvin [Tue, 30 Oct 2007 06:12:47 +0000 (23:12 -0700)]
Clean up the handing of operands in assemble.c

assemble.c was full of code containing ins->oprs[c - 0xxx] where 0xxx
was the base of the particular code block.  Verbose and error prone
when code is moved around.  Now we precompute opx = &ins->oprs[c & 3]
before dispatching, resulting in less code.

17 years agoDon't warn for segmented references
H. Peter Anvin [Tue, 30 Oct 2007 05:56:08 +0000 (22:56 -0700)]
Don't warn for segmented references

Don't warn for overflow in segmented references; those are linker
references and it is up to the backend or the linker to warn if they
overflow their permitted size.

17 years agoUse a 32-bit floating-point limb size; support 8-bit float
H. Peter Anvin [Tue, 30 Oct 2007 03:20:12 +0000 (20:20 -0700)]
Use a 32-bit floating-point limb size; support 8-bit float

Use a 32-bit limb size ("like a digit, but bigger") for floating-point
conversion.  This cuts the number of multiplications per constant by a
factor of four.

This means supporting fractional-limb-sized numbers, so while we're at
it, add support for 8-bit floating point numbers (apparently used in
graphics and in audio compression applications.)

17 years agoReduce severity of redundant prefixes from error to warning.
Charles Crayne [Tue, 30 Oct 2007 01:24:59 +0000 (18:24 -0700)]
Reduce severity of redundant prefixes from error to warning.

17 years agoTest of some addressing modes in 64-bit mode.
H. Peter Anvin [Mon, 29 Oct 2007 06:23:24 +0000 (23:23 -0700)]
Test of some addressing modes in 64-bit mode.

17 years agoFix bogus flagging of effective addresses as invalid
H. Peter Anvin [Mon, 29 Oct 2007 06:21:46 +0000 (23:21 -0700)]
Fix bogus flagging of effective addresses as invalid

Ah, what a difference a single ~ makes... such as flagging invalid EAs
as valid and vice versa.

17 years agoActually shut up the warning in rdfload.c
H. Peter Anvin [Mon, 29 Oct 2007 06:10:34 +0000 (23:10 -0700)]
Actually shut up the warning in rdfload.c

Shut the warning in rdfload.c up properly...

17 years agoClean up stealth whitespace
H. Peter Anvin [Mon, 29 Oct 2007 05:04:42 +0000 (22:04 -0700)]
Clean up stealth whitespace

Remove stealth whitespace

17 years agoFix warning about cast to pointer in rdfload.c
H. Peter Anvin [Mon, 29 Oct 2007 05:02:23 +0000 (22:02 -0700)]
Fix warning about cast to pointer in rdfload.c

Fix warning in rdfload.c about cast to pointer of different size when
compiling on 64 bits.  Of course, rdfload is probably useless on 64
bits, but it's pretty useless in the first place.

17 years ago64-bit addressing and prefix handling changes
H. Peter Anvin [Mon, 1 Oct 2007 22:41:25 +0000 (15:41 -0700)]
64-bit addressing and prefix handling changes

Revamp the address- and prefix-handling code to make more sense in
64-bit mode.  We are now a lot closer to where we want to be, but
we're not quite there yet.

ndisasm may very well have problems, or give counterintuitive output.
However, checking it in so we can make forward progress.

17 years agoAdjust stabs symbol index to match symbol table.
Charles Crayne [Sun, 28 Oct 2007 22:29:54 +0000 (15:29 -0700)]
Adjust stabs symbol index to match symbol table.
Add data length info to symbol table when stabs is active.

17 years agoreadnum(): handle prefix-suffix collision like "0h"
H. Peter Anvin [Sat, 27 Oct 2007 04:38:02 +0000 (21:38 -0700)]
readnum(): handle prefix-suffix collision like "0h"

Suffixed versions of zero will look like both a prefix and a suffix.
Reject the prefixed version as being too short to decode.

17 years agoBetter handling of platforms which hide "extended" functionality
H. Peter Anvin [Sat, 27 Oct 2007 01:49:29 +0000 (18:49 -0700)]
Better handling of platforms which hide "extended" functionality

Some platforms apparently feel -std=c99, which defines
__STRICT_ANSI__, should also hide a bunch of function prototypes.
This rather sucks.  At least try to deal with it.

MinGW and DJGPP both have this problem, in particular.

17 years agoMerge branch 'master' of /home/chuck/development/gitnasm/
Charles Crayne [Wed, 24 Oct 2007 22:51:40 +0000 (15:51 -0700)]
Merge branch 'master' of /home/chuck/development/gitnasm/

17 years agoUpdate sections about debug info formats
Charles Crayne [Wed, 24 Oct 2007 22:30:17 +0000 (15:30 -0700)]
Update sections about debug info formats

17 years agoFix the handling of floating-point tokens in the preprocessor
H. Peter Anvin [Wed, 24 Oct 2007 22:29:28 +0000 (15:29 -0700)]
Fix the handling of floating-point tokens in the preprocessor

Correct the handling of floating-point tokens in the preprocessor.
The preprocessor scanner and the main scanner really are painfully
divergent for no good reason.

17 years agoFix bugs item #1817677
Charles Crayne [Wed, 24 Oct 2007 02:28:39 +0000 (19:28 -0700)]
Fix bugs item #1817677

17 years agoSlightly simplify the radix-detection code
H. Peter Anvin [Tue, 23 Oct 2007 07:08:58 +0000 (00:08 -0700)]
Slightly simplify the radix-detection code

(pradix && pradix > sradix) etc. is unnecessary since pradix and
sradix cannot be negative, so zero is always the smallest value.

Put in a comment explaining why making the default radix == 10 doesn't
need any additional error checking.

17 years agoUnbreak particularly tricky hex constants
H. Peter Anvin [Tue, 23 Oct 2007 02:48:06 +0000 (19:48 -0700)]
Unbreak particularly tricky hex constants

Unbreak hex constants which contain 'b' or 'd' in potentially tricky
places.

17 years agoDecimal floating point can also start with 0. 0e 0E
H. Peter Anvin [Tue, 23 Oct 2007 02:37:36 +0000 (19:37 -0700)]
Decimal floating point can also start with 0. 0e 0E

A floating point number starting with 0. 0e or 0E is still decimal.
Make it easier by falling back to the standard decimal conversion
routine for anything not recognized as a radix prefix.

17 years agoSupport binary and octal floating-point
H. Peter Anvin [Tue, 23 Oct 2007 00:34:10 +0000 (17:34 -0700)]
Support binary and octal floating-point

For consistency, support binary and octal floating-point, and accept
a "0d" or "0t" prefix for decimal floating-point.  However, we do not
accept a binary exponent (p) for a decimal mantissa, or vice versa.

17 years agoMore consistent handling of radix letters
H. Peter Anvin [Mon, 22 Oct 2007 23:53:48 +0000 (16:53 -0700)]
More consistent handling of radix letters

Allow any radix letter from the set [bydtoqhx] to be used either
"Intel-style" (0...x) or "C-style" (0x...).  In Intel style, the
leading 0 remains optional as long as the first digit is in the range
0-9.

As a consequence, allow the prefix "0h" for hexadecimal floating
point.

17 years agofloat.c: correct exponent capping
H. Peter Anvin [Sun, 21 Oct 2007 22:32:33 +0000 (15:32 -0700)]
float.c: correct exponent capping

Actually enforce the exponent capping, as opposed to only enforcing it
to within a factor of 10.  Furthermore, continue to scan the string in
order to check for invalid characters.

Finally, 16384 is too tight of a bound for a binary exponent: it's a
tight bound, but the shift added due to the digit string can move the
cap into the active region (±16383).  Thus, change it to 20000 to be
on the safe side.

17 years agoClean up elf symbol table section
Charles Crayne [Sun, 21 Oct 2007 21:21:43 +0000 (14:21 -0700)]
Clean up elf symbol table section

17 years agoAllow $-prefixed hexadecimal FP as an alternative to 0x
H. Peter Anvin [Sat, 20 Oct 2007 01:33:57 +0000 (18:33 -0700)]
Allow $-prefixed hexadecimal FP as an alternative to 0x

Since we allow the prefix $ instead of 0x for integer constants, do
the same for floating point.  No suffix support at this time; we may
want to consider if that would be appropriate.

17 years agoScripts to remove stealth whitespace
H. Peter Anvin [Fri, 19 Oct 2007 21:43:22 +0000 (14:43 -0700)]
Scripts to remove stealth whitespace

Scripts to remove stealth whitespace from files and patches,
respectively.

17 years agoFormatting: kill off "stealth whitespace"
H. Peter Anvin [Fri, 19 Oct 2007 21:42:29 +0000 (14:42 -0700)]
Formatting: kill off "stealth whitespace"

"Stealth whitespace" makes it harder to read diffs, and just generally
cause unwanted weirdness.  Do a source-wide pass to get rid of it.

17 years agotest/floatx.asm: fix test case
H. Peter Anvin [Fri, 19 Oct 2007 21:26:52 +0000 (14:26 -0700)]
test/floatx.asm: fix test case

"dq" should have been "dt"

17 years agouscore.asm: Fix test case
H. Peter Anvin [Fri, 19 Oct 2007 21:19:52 +0000 (14:19 -0700)]
uscore.asm: Fix test case

"$1e+16" was missing, instead "$1e16" was duplicated

17 years agofloat.c: mark read_exponent() static
H. Peter Anvin [Fri, 19 Oct 2007 21:17:51 +0000 (14:17 -0700)]
float.c: mark read_exponent() static

read_exponent() is not used outside float.c; mark static

17 years agoDon't confuse suffixed hexadecimal with floating-point
H. Peter Anvin [Fri, 19 Oct 2007 21:10:35 +0000 (14:10 -0700)]
Don't confuse suffixed hexadecimal with floating-point

1e30 is a floating-point constant, but 1e30h is not.  The scanner
won't know that until it sees the "h", so make sure we keep enough
state to be able to distinguish "1e30" (a possible hex constant) from
"1.e30", "1e+30" or "1.0" (unabiguously floating-point.)

17 years agoAnchor filename locations in .gitignore
H. Peter Anvin [Fri, 19 Oct 2007 20:17:24 +0000 (13:17 -0700)]
Anchor filename locations in .gitignore

In particular, "Makefile" matched "test/Makefile" without the anchor.

17 years agotest/Makefile: Use -Ox instead of -O999
H. Peter Anvin [Fri, 19 Oct 2007 20:16:51 +0000 (13:16 -0700)]
test/Makefile: Use -Ox instead of -O999

17 years agoTest of underscored constants
H. Peter Anvin [Fri, 19 Oct 2007 20:14:06 +0000 (13:14 -0700)]
Test of underscored constants

17 years agoAllow underscores in numbers; better detection of FP
H. Peter Anvin [Fri, 19 Oct 2007 20:10:46 +0000 (13:10 -0700)]
Allow underscores in numbers; better detection of FP

- Allow underscores as group separators in numbers, for example:
  0x1234_5678 is now a legal number.  The underscore is just ignored,
  it adds no meaning.
- Recognize dotless floating-point numbers, such as "1e30".  This
  entails distinguishing hexadecimal numbers in the scanner, since
  e.g. 0x1e30 is a perfectly legitimate hex constant.

17 years agoModernize nasm.spec.in and make it closer to the Fedora version
H. Peter Anvin [Fri, 19 Oct 2007 17:44:56 +0000 (10:44 -0700)]
Modernize nasm.spec.in and make it closer to the Fedora version

17 years agoSuppress datarootdir warnings from configure
Charles Crayne [Fri, 19 Oct 2007 06:33:06 +0000 (23:33 -0700)]
Suppress datarootdir warnings from configure

17 years agoSuppress signedness warnings in disassembler
Charles Crayne [Fri, 19 Oct 2007 04:17:20 +0000 (21:17 -0700)]
Suppress signedness warnings in disassembler

17 years agoCleaner solution for MinGW handling of __STRICT_ANSI__
H. Peter Anvin [Fri, 19 Oct 2007 02:12:39 +0000 (19:12 -0700)]
Cleaner solution for MinGW handling of __STRICT_ANSI__

If MinGW is detected, undefine __STRICT_ANSI__ in compiler.h instead.

17 years agoconfigure: Undefine __STRICT_ANSI__ for mingw's benefit
H. Peter Anvin [Fri, 19 Oct 2007 01:15:18 +0000 (18:15 -0700)]
configure: Undefine __STRICT_ANSI__ for mingw's benefit

mingw makes a bunch of prototypes unavailable if __STRICT_ANSI__ is
defined.  However, they are still detected by configure, which causes
us pain.