platform/upstream/nasm.git
16 years agooutcoff: default output symbols to T_NULL
H. Peter Anvin [Tue, 2 Sep 2008 19:55:35 +0000 (12:55 -0700)]
outcoff: default output symbols to T_NULL

We would leave the output symbol type uninitialized.  Explicitly
initialize it to zero (T_NULL, meaning no symbol type information),
since that's what was effectively done.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
16 years agoBR 2048950: fix crash due to mmacro list overflow
H. Peter Anvin [Mon, 1 Sep 2008 17:56:33 +0000 (10:56 -0700)]
BR 2048950: fix crash due to mmacro list overflow

When allocating the buffer for an mmacro list, we apparently failed to
guarantee space for the terminating NULL.  This almost certainly
caused the crash described in BR 2048950, and quite possibly BR
1284169.

16 years agotest/new: clean up whitespace
H. Peter Anvin [Sat, 30 Aug 2008 01:04:16 +0000 (18:04 -0700)]
test/new: clean up whitespace

16 years agoScript to create new test case boilerplate
H. Peter Anvin [Sat, 30 Aug 2008 00:27:00 +0000 (17:27 -0700)]
Script to create new test case boilerplate

16 years agoAccept implicit memory size for VMREAD/VMWRITE
H. Peter Anvin [Fri, 29 Aug 2008 01:05:23 +0000 (18:05 -0700)]
Accept implicit memory size for VMREAD/VMWRITE

16 years agoBR 2029472: Wrong operand size for VMREAD/VMWRITE in 64-bit mode
H. Peter Anvin [Fri, 29 Aug 2008 01:03:49 +0000 (18:03 -0700)]
BR 2029472: Wrong operand size for VMREAD/VMWRITE in 64-bit mode

Fix the operand size for VMREAD/VMWRITE in 64-bit mode

16 years ago.gitignore: ignore some editor backup files
H. Peter Anvin [Fri, 29 Aug 2008 00:56:17 +0000 (17:56 -0700)]
.gitignore: ignore some editor backup files

Ignore a couple of variants of editor backup files.

16 years agoBR 2028995: Missing MOVNTI m64, r64
H. Peter Anvin [Fri, 29 Aug 2008 00:54:55 +0000 (17:54 -0700)]
BR 2028995: Missing MOVNTI m64, r64

Fix MOVNTI with a 64-bit argument.

16 years agoTestcase for XCRYPT
H. Peter Anvin [Fri, 29 Aug 2008 00:48:34 +0000 (17:48 -0700)]
Testcase for XCRYPT

16 years agoBR 2029829: Accept VIA XCRYPT instructions with or without REP
H. Peter Anvin [Fri, 29 Aug 2008 00:47:16 +0000 (17:47 -0700)]
BR 2029829: Accept VIA XCRYPT instructions with or without REP

Accept the VIA XCRYPT instructions either with or without a REP
prefix, as documented.

Add the missing XCRYPTCTR instruction.

16 years agoBR 2039212: Handle indirect far jumps in 64-bit mode
H. Peter Anvin [Fri, 29 Aug 2008 00:35:25 +0000 (17:35 -0700)]
BR 2039212: Handle indirect far jumps in 64-bit mode

Handle indirect far jumps in 64-bit mode.  Default to 64 bit unless
overridden, for consistency with other jumps.

16 years agoInclude "nasm.h" in "float.h"
H. Peter Anvin [Thu, 28 Aug 2008 20:36:10 +0000 (13:36 -0700)]
Include "nasm.h" in "float.h"

"float.h" references efunc, so it needs "nasm.h".
It also has uint8_t and so need <inttypes.h>, but that's part of
"nasm.h".

16 years agoAdd 256-bit AVX stores per the latest AVX spec.
H. Peter Anvin [Thu, 28 Aug 2008 01:47:05 +0000 (18:47 -0700)]
Add 256-bit AVX stores per the latest AVX spec.

Add 256-bit forms of VMOVNTPD, VMOVNTPS, and VMOVNT[DQ]Q.

16 years agoAdd AVX forms of the AES instructions (new in the latest AVX spec)
H. Peter Anvin [Thu, 28 Aug 2008 01:42:26 +0000 (18:42 -0700)]
Add AVX forms of the AES instructions (new in the latest AVX spec)

The AES instructions, too, have gotten VEX forms.

16 years agotest: Fix file with no final newline
H. Peter Anvin [Mon, 25 Aug 2008 01:17:09 +0000 (18:17 -0700)]
test: Fix file with no final newline

Fix test/br2030823.asm, which had no final newline.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
16 years agoBR 2067820: add the MOVSXD instruction
H. Peter Anvin [Mon, 25 Aug 2008 01:12:20 +0000 (18:12 -0700)]
BR 2067820: add the MOVSXD instruction

The official mnemonic for 32-to-64-bit sign extension is MOVSXD for
some idiotic reason.  Add support for it while continue to recognize
MOVSX for this as an alias.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
16 years agoBR 2067837: remove double add of VEX instruction length
H. Peter Anvin [Mon, 25 Aug 2008 01:09:04 +0000 (18:09 -0700)]
BR 2067837: remove double add of VEX instruction length

We added the length of VEX prefixes twice in calcsize(); this resulted
in the wrong symbol addresses when compiling without the optimizer.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
16 years agoBR 2062342: ndisasm: r12 *can* be an index register
H. Peter Anvin [Wed, 20 Aug 2008 16:42:47 +0000 (09:42 -0700)]
BR 2062342: ndisasm: r12 *can* be an index register

R12 can be used as an index register.  Special encodings in the modr/m
byte are done *without* consideration for the REX prefix, but special
encodings in the SIB byte *do* take the REX prefix into consideration,
since it doesn't affect the overall instruction format.

16 years agoBR 2030823: Problem with the 256-bit FMA instructions
H. Peter Anvin [Wed, 13 Aug 2008 23:25:08 +0000 (16:25 -0700)]
BR 2030823: Problem with the 256-bit FMA instructions

Fix the 256-bit FMA instructions per bug report.

16 years agoBR 2043111: Typo in insns.dat: VCMPFT_OQPD VCMPFT_OQPS
H. Peter Anvin [Wed, 13 Aug 2008 23:18:23 +0000 (16:18 -0700)]
BR 2043111: Typo in insns.dat: VCMPFT_OQPD VCMPFT_OQPS

Fix typo

16 years agominor bugfix in performtest.pl
Victor van den Elzen [Wed, 6 Aug 2008 13:15:01 +0000 (15:15 +0200)]
minor bugfix in performtest.pl

16 years agoAdd macro-defaults warning class and documentation.
Victor van den Elzen [Wed, 6 Aug 2008 12:47:54 +0000 (14:47 +0200)]
Add macro-defaults warning class and documentation.

16 years agoBR 2034542: fix crash when touching __FILE__
H. Peter Anvin [Fri, 1 Aug 2008 01:46:11 +0000 (18:46 -0700)]
BR 2034542: fix crash when touching __FILE__

Touching __FILE__ would cause a dereference of an uninitialized
pointer.  Fix.

16 years agoBR 2028910: fix decoding of VEX prefixes in 16- and 32-bit mode
H. Peter Anvin [Thu, 31 Jul 2008 00:30:12 +0000 (17:30 -0700)]
BR 2028910: fix decoding of VEX prefixes in 16- and 32-bit mode

We would incorrectly set a bunch of VEX-related state for C4 and C5
bytes, even though we had already rejected it as not a VEX prefix due
to the top two bits of the following byte not being 11.

16 years agoBR 2025977: Handle SLDT with a 64-bit register operand
H. Peter Anvin [Thu, 31 Jul 2008 00:25:56 +0000 (17:25 -0700)]
BR 2025977: Handle SLDT with a 64-bit register operand

Handle SLDT with a 64-bit register operand.  Don't generate a REX.W
prefix in the assembler, since zero-extending is just fine, but do
support it in the disassembler.

16 years agopreproc: restore correct break; in do_directive()
H. Peter Anvin [Wed, 23 Jul 2008 14:49:26 +0000 (10:49 -0400)]
preproc: restore correct break; in do_directive()

Checkin a26433db6805cf1f1d711eb820f6a50a98f54f36 incorrectly changed a
few break;s in do_directive() that were *inside loops* to returns.
This broke single-line macros as well as %exitrep; fix.

16 years agoBR 560960: warn about trailing garbage in %macro/%ifmacro
Victor van den Elzen [Wed, 23 Jul 2008 13:14:22 +0000 (15:14 +0200)]
BR 560960: warn about trailing garbage in %macro/%ifmacro

16 years agoImprove checking and documentation for %ifctx
Victor van den Elzen [Wed, 23 Jul 2008 11:21:29 +0000 (13:21 +0200)]
Improve checking and documentation for %ifctx

16 years agoBR 2023036: MOV reg32,dreg and vice versa are NOLONG
H. Peter Anvin [Sun, 20 Jul 2008 21:59:18 +0000 (14:59 -0700)]
BR 2023036: MOV reg32,dreg and vice versa are NOLONG

MOV reg32,dreg and MOV dreg,reg32 are NOLONG; in 64-bit mode we always
move to/from reg64.

16 years agoErr, "alignr" was really the same as the previous "alignb"
H. Peter Anvin [Sun, 20 Jul 2008 16:40:14 +0000 (09:40 -0700)]
Err, "alignr" was really the same as the previous "alignb"

Replace "alignb" with the (slightly more optimized) "alignr" macro,
but keep the name "alignb".

16 years agoAdd "alignr" standard macro (using resb)
H. Peter Anvin [Sun, 20 Jul 2008 16:32:31 +0000 (09:32 -0700)]
Add "alignr" standard macro (using resb)

Add an "alignr" standard macro, for use in BSS (nobits) and absolute
segments.

16 years agoAvoid redundant "const" for macros_t
H. Peter Anvin [Sun, 20 Jul 2008 04:44:26 +0000 (21:44 -0700)]
Avoid redundant "const" for macros_t

Don't use a redundant "const" for macros_t (which is const unsigned
char), since OpenWatcom doesn't like it, and I believe it is incorrect
per the C standard.

16 years agoBR 2003451: add test case
H. Peter Anvin [Sun, 20 Jul 2008 04:40:07 +0000 (21:40 -0700)]
BR 2003451: add test case

Add test case for BR 2003451: forwardness leakage between operands.

16 years agoBR 2003451: avoid "forwardness" leaks between operands
H. Peter Anvin [Sun, 20 Jul 2008 04:38:56 +0000 (21:38 -0700)]
BR 2003451: avoid "forwardness" leaks between operands

Any use of ins->forw_ref that isn't related to control of the
optimizer is fundamentally broken.  Use
operand->opflags & OPERAND_FORWARD instead.  This even has the nice
side benefit of simplifying the code.

16 years agoBR 2010180: outobj: Garbage may be written in a last PUBDEF
Slavik Gnatenko [Sun, 20 Jul 2008 02:27:41 +0000 (19:27 -0700)]
BR 2010180: outobj: Garbage may be written in a last PUBDEF

The testcase illustrates the problem. After "nasm -f obj
alonesym.nasm"
let's look to dump:

======
PUBDEF386(91) recnum:5, offset:0000005bh, len:03f9h, chksum:bbh(bb)
Group: 0, Seg: 1
00020000h - 'sym0000' Type:0
00020004h - 'sym0001' Type:0
....
00020134h - 'sym0077' Type:0

PUBDEF(90) recnum:6, offset:00000457h, len:000ah, chksum:b6h(b6)
Group: 0, Seg: 1
00000138h - 's' Type:2
0000b600h - '' Type:0
======

The problem is while 's' offset is 20138h it is marked as type 90h not
91h.  The root cause is located in obj_x():

static ObjRecord *obj_x(ObjRecord * orp, uint32_t val)
{
    if (orp->type & 1)
     orp->x_size = 32;
    if (val > 0xFFFF)
        orp = obj_force(orp, 32);
    if (orp->x_size == 32)
        return (obj_dword(orp, val));
    orp->x_size = 16;
    return (obj_word(orp, val));
}

It sets up x_size and than writes data. In the testcase data are the
offset and this offset overflows a record. In this case the record is
emitted and its x_size is cleared. Because this is last PUBDEF the new
record with only 's' symbol is emitted also but its x_size is not 32
(it's still zero) so obj_fwrite doesn't switch to 91h type.

The problem seems to be very generic and expected to be occurred on
many other record types as well.

        ----

And the fix is simple:

if (orp->x_size == 32)
{
  ObjRecord * nxt = obj_dword(orp, val);
  nxt->x_size = 32; /* x_size is cleared when a record overflows */
  return nxt;
}

16 years agotest: more smart alignment test
H. Peter Anvin [Thu, 17 Jul 2008 21:29:07 +0000 (14:29 -0700)]
test: more smart alignment test

16 years agosmartalign: use context-local label
H. Peter Anvin [Thu, 17 Jul 2008 21:28:29 +0000 (14:28 -0700)]
smartalign: use context-local label

Use a context-local label in the smart align macro.

16 years agosmartalign: adjust the alignment threshold
H. Peter Anvin [Thu, 17 Jul 2008 21:22:10 +0000 (14:22 -0700)]
smartalign: adjust the alignment threshold

Apparently the current recommendation is for a smaller threshold when
using the "generic"-style alignment macros (short jumps are cheaper on
newer CPUs.)

Also change the alignment threshold definition to reflect the maximum
number of padding instead of when to start using jumps.

16 years agosmartalign: 16-bit generic alignment macros
H. Peter Anvin [Thu, 17 Jul 2008 21:20:06 +0000 (14:20 -0700)]
smartalign: 16-bit generic alignment macros

Smart alignment content for 16-bit "generic" mode

16 years agosmartalign: 16-bit P6 NOPs
H. Peter Anvin [Thu, 17 Jul 2008 21:13:53 +0000 (14:13 -0700)]
smartalign: 16-bit P6 NOPs

Add 16-bit P6 NOPs

16 years agosmartalign.mac: smart alignments macro package
H. Peter Anvin [Wed, 16 Jul 2008 21:41:39 +0000 (14:41 -0700)]
smartalign.mac: smart alignments macro package

"%use smartalign" followed by an optional "alignmode" can be used to
enable smart macros.

16 years agopreproc: add %un[i]macro, add cleanups
H. Peter Anvin [Wed, 16 Jul 2008 21:40:01 +0000 (14:40 -0700)]
preproc: add %un[i]macro, add cleanups

Add %un[i]macro, and a few stylistic cleanups.

Note: unlike %undef, %un[i]macro takes an argument specification,
which must *exactly* match the macro being undefined.  Similarly,
%unimacro has to be used to undefine a macro defined with %imacro, and
vice versa.

16 years agostandard.mac: allow non-power-of-2 alignments
H. Peter Anvin [Wed, 16 Jul 2008 21:38:58 +0000 (14:38 -0700)]
standard.mac: allow non-power-of-2 alignments

Allow aligning to a non-power-of-2 boundary.  It's probably useless,
but doesn't really hurt.

16 years agopreproc.c: fix %ifn, %elifn
H. Peter Anvin [Wed, 16 Jul 2008 21:38:24 +0000 (14:38 -0700)]
preproc.c: fix %ifn, %elifn

The sense of %ifn and %elifn was reversed due to a bogus nonstandard
return sequence.

16 years agoFix multipass inline warning (dis/en)abling
Victor van den Elzen [Wed, 16 Jul 2008 13:20:56 +0000 (15:20 +0200)]
Fix multipass inline warning (dis/en)abling

Also add a new form: resetting warnings to their original value.

16 years agoFix %rep ... %endmacro crash
Victor van den Elzen [Wed, 16 Jul 2008 11:41:37 +0000 (13:41 +0200)]
Fix %rep ... %endmacro crash

Also improved a comment and an error message.

16 years agoupdate tests
Victor van den Elzen [Wed, 25 Jun 2008 10:00:21 +0000 (12:00 +0200)]
update tests

16 years agofix unitialized variable in eval_strfunc
Victor van den Elzen [Wed, 25 Jun 2008 09:41:40 +0000 (11:41 +0200)]
fix unitialized variable in eval_strfunc

16 years agoFix fclose bug on error.
Victor van den Elzen [Wed, 4 Jun 2008 13:24:20 +0000 (15:24 +0200)]
Fix fclose bug on error.

Contrary to the comments, the fclose is needed.
Failure to close the file caused remove to fail on Windows.

16 years agoAdd a 'make test' target.
Victor van den Elzen [Wed, 4 Jun 2008 10:44:31 +0000 (12:44 +0200)]
Add a 'make test' target.

16 years agoImprove performtest.pl
Victor van den Elzen [Wed, 28 May 2008 12:02:37 +0000 (14:02 +0200)]
Improve performtest.pl

Improve arguments and documentation of performtest.pl
Remove carriage returns in .stdout/.stderr so *nix can
read Windows test results

16 years agochanges.src: put \c{...} around macro directives
H. Peter Anvin [Mon, 14 Jul 2008 06:54:00 +0000 (02:54 -0400)]
changes.src: put \c{...} around macro directives

Put \c{...} around macro directives.  Not the only ones that should
have that, of course, but they were easy to do with search and replace.

16 years agochanges.src: remove double entry for %warning
H. Peter Anvin [Mon, 14 Jul 2008 06:49:52 +0000 (02:49 -0400)]
changes.src: remove double entry for %warning

16 years agoMove the revision history into the documentation
H. Peter Anvin [Mon, 14 Jul 2008 06:45:57 +0000 (02:45 -0400)]
Move the revision history into the documentation

Clumsily convert the revision history to nasmdoc format, so it can be
included in the documentation as Appendix C.

16 years agodoc: document packed BCD constants
H. Peter Anvin [Sun, 13 Jul 2008 22:55:55 +0000 (15:55 -0700)]
doc: document packed BCD constants

16 years agodoc: update NASM Version Macros
H. Peter Anvin [Sun, 13 Jul 2008 22:44:25 +0000 (15:44 -0700)]
doc: update NASM Version Macros

Clean up and slightly update the section on NASM version macros.

16 years agodoc: move %error/%warning to a separate section
H. Peter Anvin [Sun, 13 Jul 2008 22:41:36 +0000 (15:41 -0700)]
doc: move %error/%warning to a separate section

They don't really belong in the section on conditional assembly.

16 years agodoc: Document %strcat
H. Peter Anvin [Sun, 13 Jul 2008 22:35:07 +0000 (15:35 -0700)]
doc: Document %strcat

16 years agoUpdate CHANGES to current delta from 2.03.x.
H. Peter Anvin [Sun, 13 Jul 2008 22:25:54 +0000 (15:25 -0700)]
Update CHANGES to current delta from 2.03.x.

16 years agoBR 2017453: indirect jumps in 64-bit mode are implicitly 64 bits
H. Peter Anvin [Sun, 13 Jul 2008 22:21:01 +0000 (15:21 -0700)]
BR 2017453: indirect jumps in 64-bit mode are implicitly 64 bits

Indirect jumps in 64-bit mode implicitly have 64-bit operand size.
Fix this; the disassembly is still unnecessarily ugly, however.

16 years agotest: add test of nested %rep, BCD constants, and %warning
H. Peter Anvin [Sun, 13 Jul 2008 22:06:55 +0000 (15:06 -0700)]
test: add test of nested %rep, BCD constants, and %warning

Add a test case which has smoked out errors in the handling of nested
%rep, BCD constants, and %warning...

16 years agopreproc.c: make %warning actually issue a warning...
H. Peter Anvin [Sun, 13 Jul 2008 22:05:53 +0000 (15:05 -0700)]
preproc.c: make %warning actually issue a warning...

The calculation of "severity" was buggered up, with the result that
%warning actually issued an error.

16 years agoversion.mak for the version Makefile fragment
H. Peter Anvin [Sun, 13 Jul 2008 20:54:47 +0000 (13:54 -0700)]
version.mak for the version Makefile fragment

Be consistent about the naming of the version Makefile fragment.  We
use .mak elsewhere for Makefiles, so use that.

16 years agoFix Bugs item #2017455 (LTR in long mode)
Charles Crayne [Sun, 13 Jul 2008 19:52:02 +0000 (12:52 -0700)]
Fix Bugs item #2017455 (LTR in long mode)

LTR is valid in long (64-bit) mode, but still uses
16-bit operand, so remove NOLONG restriction.

16 years ago%EXITREP inside nested %REPs
Charles Crayne [Sat, 12 Jul 2008 23:42:33 +0000 (16:42 -0700)]
%EXITREP inside nested %REPs

Apply updated version of fix submitted with feature request 803785.
This fix causes %exitrep to terminate only the innermost %rep block,
and also allows the count for nested blocks to be calculated in the
containing block.

16 years agoAdd version.make to PERLREQ
H. Peter Anvin [Sun, 6 Jul 2008 00:45:01 +0000 (17:45 -0700)]
Add version.make to PERLREQ

version.make is produced by a Perl script, and therefore should be in
PERLREQ.

16 years agotest: simple test of packed BCD.
H. Peter Anvin [Fri, 4 Jul 2008 03:16:40 +0000 (20:16 -0700)]
test: simple test of packed BCD.

16 years agoFor consistency, allow 0p.. prefix for packed BCD
H. Peter Anvin [Fri, 4 Jul 2008 03:16:07 +0000 (20:16 -0700)]
For consistency, allow 0p.. prefix for packed BCD

Allow 0p... to be used as a prefix, for analogy with base conversion.

16 years agofloat: support packed-BCD constants in 'dt' statements
H. Peter Anvin [Fri, 4 Jul 2008 03:12:37 +0000 (20:12 -0700)]
float: support packed-BCD constants in 'dt' statements

Support packed-BCD constants in 'dt' statements (and elsewhere 80-bit
floating point is handled), using MASM syntax (terminal 'p').

16 years agofloat: fix buffer overrun
H. Peter Anvin [Fri, 4 Jul 2008 03:11:30 +0000 (20:11 -0700)]
float: fix buffer overrun

Fix a buffer overrun; generally causing hexadecimal constants to be
incorrectly rejected.

16 years agostandard.mac: use anonymous contexts
H. Peter Anvin [Thu, 3 Jul 2008 01:11:49 +0000 (18:11 -0700)]
standard.mac: use anonymous contexts

Use anonymous %push instead of giving a context name.

16 years agopreproc: Allow anonymous contexts
H. Peter Anvin [Thu, 3 Jul 2008 01:11:04 +0000 (18:11 -0700)]
preproc: Allow anonymous contexts

Allow %push and %repl without a context name.  For a lot of uses, it
is only a potential source of namespace pollution.

16 years agoPermit commas in %strcat
H. Peter Anvin [Wed, 2 Jul 2008 04:42:08 +0000 (21:42 -0700)]
Permit commas in %strcat

16 years agopreproc: %strcat directive to concatenate quoted strings
H. Peter Anvin [Wed, 2 Jul 2008 04:26:27 +0000 (21:26 -0700)]
preproc: %strcat directive to concatenate quoted strings

I noticed there was no sane way to concatenate the contents of quoted
strings, so add the %strcat directive.

These really need to become preprocessor functions at some stage.

16 years agoUpdate the INSTALL file to match current reality
H. Peter Anvin [Sun, 29 Jun 2008 01:53:55 +0000 (18:53 -0700)]
Update the INSTALL file to match current reality

16 years agoDocument case-insensitivity bug.
H. Peter Anvin [Sun, 29 Jun 2008 01:39:13 +0000 (18:39 -0700)]
Document case-insensitivity bug.

16 years agotest: add a test for %imacro
H. Peter Anvin [Sun, 29 Jun 2008 01:32:16 +0000 (18:32 -0700)]
test: add a test for %imacro

Add a test for case-insensitive matching of %imacro.

16 years agonasmlib: fix nasm_str[n]icmp()
H. Peter Anvin [Sun, 29 Jun 2008 01:31:08 +0000 (18:31 -0700)]
nasmlib: fix nasm_str[n]icmp()

Fix nasm_str[n]icmp() on platforms which don't have this function
natively.

XXX: Given the new nasm_tolower() implementation, we should consider
if this might actually be a faster function than the platform-native
one.

16 years agopreproc: MMacro.finishes is a pointer, not a boolean
H. Peter Anvin [Sun, 29 Jun 2008 01:30:27 +0000 (18:30 -0700)]
preproc: MMacro.finishes is a pointer, not a boolean

MMacro.finishes is a pointer, not a boolean, so set it to "false", not
"NULL".

16 years agoAES instructions are WESTMERE, not NEHALEM
H. Peter Anvin [Fri, 27 Jun 2008 18:41:59 +0000 (11:41 -0700)]
AES instructions are WESTMERE, not NEHALEM

Still need to make this crap saner...

16 years agoMake the macros table "unsigned char"
H. Peter Anvin [Wed, 25 Jun 2008 21:54:14 +0000 (14:54 -0700)]
Make the macros table "unsigned char"

It gets less ugly if we make the macros table "unsigned char".

16 years agoRun "make alldeps"
H. Peter Anvin [Sun, 22 Jun 2008 01:19:13 +0000 (18:19 -0700)]
Run "make alldeps"

16 years agopp_directives_len can be uint8_t
H. Peter Anvin [Sun, 22 Jun 2008 01:18:41 +0000 (18:18 -0700)]
pp_directives_len can be uint8_t

Save a few hundred bytes...

16 years agoDrop the index tables from the canned macros
H. Peter Anvin [Sat, 21 Jun 2008 22:15:40 +0000 (15:15 -0700)]
Drop the index tables from the canned macros

Instead of an array of strings, just have a character array; that
reduces the size of canned macros by up to 30%, and we only did
sequential access anyway.

16 years agoFix a few more <ctype.h> instances
H. Peter Anvin [Sat, 21 Jun 2008 18:03:51 +0000 (11:03 -0700)]
Fix a few more <ctype.h> instances

A few isolated instances of isalpha() and isxdigit().

16 years agoctype.h: wrapper ctype functions with a cast to (unsigned char)
H. Peter Anvin [Sat, 21 Jun 2008 17:23:17 +0000 (10:23 -0700)]
ctype.h: wrapper ctype functions with a cast to (unsigned char)

ctype functions take an *int*, which the user is expected to have
taken the input character from getc() and friends, or taken a
character and cast it to (unsigned char).

We don't care about EOF (-1), so use macros that cast to (unsigned
char) for us.

16 years agopreproc: free the include path and the final filename
H. Peter Anvin [Fri, 20 Jun 2008 22:55:45 +0000 (15:55 -0700)]
preproc: free the include path and the final filename

Memory leaks: free the include path, and the final used filename.

16 years agoMove the output format macros into the macros.pl mechanism
H. Peter Anvin [Fri, 20 Jun 2008 22:20:16 +0000 (15:20 -0700)]
Move the output format macros into the macros.pl mechanism

Move the handling of "extra" macros (i.e. output format macros) into
the macros.pl mechanism.  This allows us to change the format of the
internal macro store in the future - e.g. to a single byte store
without redundant pointers.

Also, stop using indicies into a long array when there is no good
reason to not just use different arrays.

16 years agoraa: clean up indentation
H. Peter Anvin [Fri, 20 Jun 2008 06:19:20 +0000 (23:19 -0700)]
raa: clean up indentation

Clean up in indentation in the RAA code.

16 years agosaa: fix indentation
H. Peter Anvin [Fri, 20 Jun 2008 06:09:11 +0000 (23:09 -0700)]
saa: fix indentation

Apply standard indentation to the SAA code, not sure why it was
different...

16 years agoSomewhat more clever way to generate the %use guard macros
H. Peter Anvin [Fri, 20 Jun 2008 04:42:42 +0000 (21:42 -0700)]
Somewhat more clever way to generate the %use guard macros

Automatically generate a %define as the first string in the include
block, and just pick the string out of it from that %define statement
to verify existence.  That way we eliminate any use of toupper() --
all case-insensitivity in NASM uses tolower()/nasm_tolower().

16 years agoProtect %use from multi-inclusion and provide a test macro
H. Peter Anvin [Fri, 20 Jun 2008 01:39:24 +0000 (18:39 -0700)]
Protect %use from multi-inclusion and provide a test macro

Automatically provide an include guard for %use packages; the macro
__USE_package__ is automatically defined, and inclusion is suppressed
if it is already defined.

16 years agodoc: framework for documenting standard macro packages
H. Peter Anvin [Thu, 19 Jun 2008 23:58:05 +0000 (16:58 -0700)]
doc: framework for documenting standard macro packages

Add a framework for documenting the standard macro packages.  Also
move the standard macros to the end of the preprocessor section,
instead of having them in the middle of the directives list.

16 years ago%use: call these directives "standard macro packages"
H. Peter Anvin [Thu, 19 Jun 2008 23:26:12 +0000 (16:26 -0700)]
%use: call these directives "standard macro packages"

Adopt the term "standard macro packages", "modules" are too
ambiguous.

16 years agomacros.pl: need to use $' to get proper left-to-right behaviour
H. Peter Anvin [Thu, 19 Jun 2008 23:17:41 +0000 (16:17 -0700)]
macros.pl: need to use $' to get proper left-to-right behaviour

Using ^(.*) means we do right-to-left search, since (.*) is a greedy
expression; instead use $' to get the lead-in part of the string.

16 years agomacros.pl: remove debug prints; improve compression regex
H. Peter Anvin [Thu, 19 Jun 2008 23:12:20 +0000 (16:12 -0700)]
macros.pl: remove debug prints; improve compression regex

Remove debug print statements from macros.pl
Make sure we test for whitespace at end of statements

16 years agomacros.c: compress by tokenizing macro directives
H. Peter Anvin [Thu, 19 Jun 2008 23:00:04 +0000 (16:00 -0700)]
macros.c: compress by tokenizing macro directives

Compress macros.c by representing macro directives with a single byte.
We can do this because we only use the ASCII character range inside
the standard macro files.

Note: we could save significant additional space by not having a
pointer array, and instead relying on the fact that we sweep
sequentially through the output array.

16 years agopreproc: add support for builtin include modules (%use)
H. Peter Anvin [Thu, 19 Jun 2008 22:04:18 +0000 (15:04 -0700)]
preproc: add support for builtin include modules (%use)

Add a builtin equivalent to the %include directive called %use.
%use includes a standard macro file compiled into the binary; these
come from the macros/ directory in the source code.

The idea here is to be able to provide optional macro packages with
the distribution, without adding complex host filesystem dependencies.

16 years agodoc: macroize texi2ipf and ipfc
H. Peter Anvin [Thu, 19 Jun 2008 18:47:13 +0000 (11:47 -0700)]
doc: macroize texi2ipf and ipfc

Macroize the texi2ipf and ipfc commands (used for OS/2).

16 years agodoc: for ps to pdf conversion, use "acrodist", "ps2pdf" or "pstopdf"
H. Peter Anvin [Thu, 19 Jun 2008 18:39:23 +0000 (11:39 -0700)]
doc: for ps to pdf conversion, use "acrodist", "ps2pdf" or "pstopdf"

For PostScript to PDF conversion, use whichever of "acrodist",
"ps2pdf", or "pstopdf" which we can find on the system.  I haven't
tried either acrodist or pstopdf myself, only going my the
documentation, but prefer acrodist since it is claimed to produce
smaller output files than ps2pdf.