Configure tests to be performed automatically

This commit is contained in:
Victor van den Elzen 2008-04-23 15:05:31 +02:00
parent 533385ace5
commit 82fa68acec
52 changed files with 278 additions and 124 deletions

View File

@ -1,3 +1,5 @@
;Testname=unoptimized; Arguments=-O0 -fbin -oa32offs.bin; Files=a32offs.bin .stdout .stderr
;Testname=optimized; Arguments=-Ox -fbin -oa32offs.bin; Files=a32offs.bin .stdout .stderr
bits 16
foo: a32 loop foo
bar: loop bar, ecx

View File

@ -1,3 +1,4 @@
;Testname=bin; Arguments=-fbin -oabsolute.bin; Files=.stdout .stderr absolute.bin
org 7c00h
init_foo:
jmp init_bar

View File

@ -1,3 +1,10 @@
;Testname=O0; Arguments=-O0 -fbin -oaddr64.bin; Files=.stdout .stderr addr64.bin
;Testname=O1; Arguments=-O1 -fbin -oaddr64.bin; Files=.stdout .stderr addr64.bin
;Testname=O2; Arguments=-O2 -fbin -oaddr64.bin; Files=.stdout .stderr addr64.bin
;Testname=O3; Arguments=-O3 -fbin -oaddr64.bin; Files=.stdout .stderr addr64.bin
;Testname=O4; Arguments=-O4 -fbin -oaddr64.bin; Files=.stdout .stderr addr64.bin
;Testname=O5; Arguments=-O5 -fbin -oaddr64.bin; Files=.stdout .stderr addr64.bin
;Testname=Ox; Arguments=-Ox -fbin -oaddr64.bin; Files=.stdout .stderr addr64.bin
bits 64
mov rdx,[rax]
mov eax,[byte rsp+0x01]

View File

@ -1,3 +1,6 @@
;Testname=unoptimized; Arguments=-O0 -faoutb -oaoutso.o; Files=.stdout .stderr aoutso.o
;Testname=optimized; Arguments=-Ox -faoutb -oaoutso.o; Files=.stdout .stderr aoutso.o
; test source file for assembling to NetBSD/FreeBSD a.out shared library
; build with:
; nasm -f aoutb aoutso.asm

View File

@ -1,3 +1,6 @@
;Testname=unoptimized; Arguments=-O0 -faout -oaouttest.o; Files=.stdout .stderr aouttest.o
;Testname=optimized; Arguments=-Ox -faout -oaouttest.o; Files=.stdout .stderr aouttest.o
; test source file for assembling to a.out
; build with:
; nasm -f aout aouttest.asm

View File

@ -1,3 +1,6 @@
;Testname=unoptimized; Arguments=-O0 -fbin -obinexe.exe -i../misc/; Files=.stdout .stderr binexe.exe
;Testname=optimized; Arguments=-Ox -fbin -obinexe.exe -i../misc/; Files=.stdout .stderr binexe.exe
; Demonstration of how to write an entire .EXE format program by using
; the `exebin.mac' macro package.
; To build:

View File

@ -1,3 +1,6 @@
;Testname=unoptimized; Arguments=-O0 -fbin -obintest.bin; Files=.stdout .stderr bintest.bin
;Testname=optimized; Arguments=-Ox -fbin -obintest.bin; Files=.stdout .stderr bintest.bin
; test source file for assembling to binary files
; build with:
; nasm -f bin -o bintest.com bintest.asm

View File

@ -1,3 +1,6 @@
;Testname=unoptimized; Arguments=-O0 -fbin -obr1879590.bin; Files=.stdout .stderr br1879590.bin
;Testname=optimized; Arguments=-Ox -fbin -obr1879590.bin; Files=.stdout .stderr br1879590.bin
bits 32
pavgb mm0,[ebx]

View File

@ -1,5 +1,16 @@
;
; Test for bug report 560575
;Testname=aout; Arguments=-faout -obr560575.o; Files=.stderr .stdout br560575.o
;Testname=aoutb; Arguments=-faoutb -obr560575.o; Files=.stderr .stdout br560575.o
;Testname=coff; Arguments=-fcoff -obr560575.o; Files=.stderr .stdout br560575.o
;Testname=elf32; Arguments=-felf32 -obr560575.o; Files=.stderr .stdout br560575.o
;Testname=elf64; Arguments=-felf64 -obr560575.o; Files=.stderr .stdout br560575.o
;Testname=as86; Arguments=-fas86 -obr560575.o; Files=.stderr .stdout br560575.o
;Testname=win32; Arguments=-fwin32 -obr560575.o; Files=.stderr .stdout br560575.o
;Testname=win64; Arguments=-fwin64 -obr560575.o; Files=.stderr .stdout br560575.o
;Testname=rdf; Arguments=-frdf -obr560575.o; Files=.stderr .stdout br560575.o
;Testname=ieee; Arguments=-fieee -obr560575.o; Files=.stderr .stdout br560575.o
;Testname=macho; Arguments=-fmacho -obr560575.o; Files=.stderr .stdout br560575.o
;Test for bug report 560575 - Using SEG with non-relocatable values doesn't work
;
dw seg ~1
dw seg "a"

View File

@ -1,3 +1,6 @@
;Testname=unoptimized; Arguments=-O0 -frdf -obr560873.rdf; Files=.stdout .stderr br560873.rdf
;Testname=optimized; Arguments=-Ox -frdf -obr560873.rdf; Files=.stdout .stderr br560873.rdf
label:
bits 16
call far dword label

View File

@ -1,3 +1,6 @@
;Cannot be automatically tested because it differs every time,
;I guess because of a date/time field.
; test source file for assembling to COFF
; build with (under DJGPP, for example):
; nasm -f coff cofftest.asm

View File

@ -1,3 +1,6 @@
;Testname=unoptimized; Arguments=-O0 -felf -oelfso.o; Files=.stdout .stderr elfso.o
;Testname=optimized; Arguments=-Ox -felf -oelfso.o; Files=.stdout .stderr elfso.o
; test source file for assembling to ELF shared library
; build with:
; nasm -f elf elfso.asm

View File

@ -1,3 +1,6 @@
;Testname=unoptimized; Arguments=-O0 -fobj -oelif.obj; Files=.stdout .stderr elif.obj
;Testname=optimized; Arguments=-Ox -fobj -oelif.obj; Files=.stdout .stderr elif.obj
%macro DosPrintMsg 1+
%ifnid %1
section .data

View File

@ -1,6 +1,18 @@
;Testname=O0; Arguments=-O0 -fbin -oexpimp.bin; Files=.stdout .stderr expimp.bin
;Testname=O1; Arguments=-O1 -fbin -oexpimp.bin; Files=.stdout .stderr expimp.bin
;Testname=O2; Arguments=-O2 -fbin -oexpimp.bin; Files=.stdout .stderr expimp.bin
;Testname=O3; Arguments=-O3 -fbin -oexpimp.bin; Files=.stdout .stderr expimp.bin
;Testname=O4; Arguments=-O4 -fbin -oexpimp.bin; Files=.stdout .stderr expimp.bin
;Testname=O5; Arguments=-O5 -fbin -oexpimp.bin; Files=.stdout .stderr expimp.bin
;Testname=Ox; Arguments=-Ox -fbin -oexpimp.bin; Files=.stdout .stderr expimp.bin
;Testname=error-O0; Arguments=-O0 -fbin -oexpimp.bin -DERROR; Files=.stdout .stderr expimp.bin
;Testname=error-Ox; Arguments=-Ox -fbin -oexpimp.bin -DERROR; Files=.stdout .stderr expimp.bin
;
; Test of explicitly and implicitly sized operands
;
BITS 32
add esi,2 ; Implicit
add esi,123456h ; Implicit
add esi,byte 2 ; Explicit

View File

@ -1,3 +1,6 @@
;Testname=unoptimized; Arguments=-O0 -fbin -ofloat.bin; Files=.stdout .stderr float.bin
;Testname=optimized; Arguments=-Ox -fbin -ofloat.bin; Files=.stdout .stderr float.bin
;
; Test of floating-point formats
;

View File

@ -1,3 +1,6 @@
;Testname=unoptimized; Arguments=-O0 -fbin -ofloat8.bin; Files=.stdout .stderr float8.bin
;Testname=optimized; Arguments=-Ox -fbin -ofloat8.bin; Files=.stdout .stderr float8.bin
; Test of 8-bit floating-point constants
; Zero

View File

@ -1,3 +1,6 @@
;Testname=unoptimized; Arguments=-O0 -fbin -ofloatb.bin; Files=.stdout .stderr floatb.bin
;Testname=optimized; Arguments=-Ox -fbin -ofloatb.bin; Files=.stdout .stderr floatb.bin
;; Known problematic floating-point numbers and their proper
;; encoding...

View File

@ -1,3 +1,6 @@
;Testname=unoptimized; Arguments=-O0 -fbin -ofloatexp.bin; Files=.stdout .stderr floatexp.bin
;Testname=optimized; Arguments=-Ox -fbin -ofloatexp.bin; Files=.stdout .stderr floatexp.bin
bits 64
;
; Test of floating-point formats

View File

@ -1,3 +1,6 @@
;Testname=unoptimized; Arguments=-O0 -fbin -ofloatize.bin; Files=.stdout .stderr floatize.bin
;Testname=optimized; Arguments=-Ox -fbin -ofloatize.bin; Files=.stdout .stderr floatize.bin
%assign x13 13+26
%assign f16 __float16__(1.6e-7)
%assign f32 __float32__(1.6e-7)

View File

@ -1,3 +1,5 @@
;Testname=optimized; Arguments=-Ox -felf -ofloattest.o; Files=.stdout .stderr floattest.o
; nasm -O99 -f elf32 floattest.asm
; ld -m elf_i386 -o floattest floattest.o -I/lib/ld-linux.so.2 -lc

View File

@ -1,3 +1,6 @@
;Testname=unoptimized; Arguments=-O0 -fbin -ofmsub.bin; Files=.stdout .stderr fmsub.bin
;Testname=optimized; Arguments=-Ox -fbin -ofmsub.bin; Files=.stdout .stderr fmsub.bin
bits 64
fmsubps xmm0,xmm0,xmm1,xmm2

View File

@ -1,3 +1,5 @@
;Testname=test; Arguments=-fbin -ofpu.bin; Files=.stdout .stderr fpu.bin
; relaxed encodings for FPU instructions, which NASM should support
; -----------------------------------------------------------------

View File

@ -1,3 +1,5 @@
;Testname=test; Arguments=-fbin -oifmacro.txt; Files=.stdout .stderr ifmacro.txt
;
; ifmacro.asm
;

View File

@ -1,3 +1,5 @@
;Testname=test; Arguments=-fbin -oiftoken.txt; Files=.stdout .stderr iftoken.txt
%define ZMACRO
%define NMACRO 1
%define TMACRO 1 2

View File

@ -4,6 +4,7 @@
'foo', 'foo bar', '%', '+foo', '<<');
@tests = ('token', 'empty');
print ";Testname=test; Arguments=-fbin -oiftoken.txt; Files=.stdout .stderr iftoken.txt"
print "%define ZMACRO\n";
print "%define NMACRO 1\n";
print "%define TMACRO 1 2\n";

View File

@ -1,3 +1,5 @@
;Testname=test; Arguments=-fbin -oinctest.com; Files=.stdout .stderr inctest.com
; This file, plus inc1.asm and inc2.asm, test NASM's file inclusion
; mechanism.
;

View File

@ -1,3 +1,5 @@
;Testname=test; Arguments=-fbin -oinsnlbl.bin; Files=.stdout .stderr insnlbl.bin
;
; Test "instruction as label" -- make opcodes legal as labels if
; they are followed by a colon.

View File

@ -1,3 +1,6 @@
;Testname=unoptimized; Arguments=-fbin -oinvlpga.bin; Files=.stdout .stderr invlpga.bin
;Testname=optimized; Arguments=-fbin -oinvlpga.bin -Ox; Files=.stdout .stderr invlpga.bin
bits 32
invlpga
invlpga ax,ecx

View File

@ -1,122 +1,124 @@
; LAR/LSL
;---------
; 1x ; = invalid due to lack of REX
; 3x ; = invalid due to Mw
%macro m 1
bits 16
%1 ax, ax
%1 ax,eax
; %1 ax,rax
%1 eax, ax
%1 eax,eax
; %1 eax,rax
; %1 rax, ax
; %1 rax,eax
; %1 rax,rax
%1 ax, [0]
%1 ax, word [0]
;;; %1 ax,dword [0]
; %1 ax,qword [0]
%1 eax, [0]
%1 eax, word [0]
;;; %1 eax,dword [0]
; %1 eax,qword [0]
; %1 rax, [0]
; %1 rax, word [0]
; %1 rax,dword [0]
; %1 rax,qword [0]
bits 32
%1 ax, ax
%1 ax,eax
; %1 ax,rax
%1 eax, ax
%1 eax,eax
; %1 eax,rax
; %1 rax, ax
; %1 rax,eax
; %1 rax,rax
%1 ax, [0]
%1 ax, word [0]
;;; %1 ax,dword [0]
; %1 ax,qword [0]
%1 eax, [0]
%1 eax, word [0]
;;; %1 eax,dword [0]
; %1 eax,qword [0]
; %1 rax, [0]
; %1 rax, word [0]
; %1 rax,dword [0]
; %1 rax,qword [0]
bits 64
%1 ax, ax
%1 ax,eax
%1 ax,rax ; $TODO: shouldn't emit REX.W $
%1 eax, ax
%1 eax,eax
%1 eax,rax ; $TODO: shouldn't emit REX.W $
%1 rax, ax
%1 rax,eax
%1 rax,rax
%1 ax, [0]
%1 ax, word [0]
;;; %1 ax,dword [0]
;;; %1 ax,qword [0]
%1 eax, [0]
%1 eax, word [0]
;;; %1 eax,dword [0]
;;; %1 eax,qword [0]
%1 rax, [0]
%1 rax, word [0]
;;; %1 rax,dword [0]
;;; %1 rax,qword [0]
%endmacro
m lar
m lsl
bits 16
lar ax,[ si]
lar ax,[esi]
bits 32
lar ax,[ si]
lar ax,[esi]
bits 64
lar ax,[esi]
lar ax,[rsi]
bits 16
lsl ax,[ si]
lsl ax,[esi]
bits 32
lsl ax,[ si]
lsl ax,[esi]
bits 64
lar ax,[esi]
lsl ax,[rsi]
; EOF
;Testname=test; Arguments=-fbin -olar_lsl.bin; Files=.stdout .stderr lar_lsl.bin
; LAR/LSL
;---------
; 1x ; = invalid due to lack of REX
; 3x ; = invalid due to Mw
%macro m 1
bits 16
%1 ax, ax
%1 ax,eax
; %1 ax,rax
%1 eax, ax
%1 eax,eax
; %1 eax,rax
; %1 rax, ax
; %1 rax,eax
; %1 rax,rax
%1 ax, [0]
%1 ax, word [0]
;;; %1 ax,dword [0]
; %1 ax,qword [0]
%1 eax, [0]
%1 eax, word [0]
;;; %1 eax,dword [0]
; %1 eax,qword [0]
; %1 rax, [0]
; %1 rax, word [0]
; %1 rax,dword [0]
; %1 rax,qword [0]
bits 32
%1 ax, ax
%1 ax,eax
; %1 ax,rax
%1 eax, ax
%1 eax,eax
; %1 eax,rax
; %1 rax, ax
; %1 rax,eax
; %1 rax,rax
%1 ax, [0]
%1 ax, word [0]
;;; %1 ax,dword [0]
; %1 ax,qword [0]
%1 eax, [0]
%1 eax, word [0]
;;; %1 eax,dword [0]
; %1 eax,qword [0]
; %1 rax, [0]
; %1 rax, word [0]
; %1 rax,dword [0]
; %1 rax,qword [0]
bits 64
%1 ax, ax
%1 ax,eax
%1 ax,rax ; $TODO: shouldn't emit REX.W $
%1 eax, ax
%1 eax,eax
%1 eax,rax ; $TODO: shouldn't emit REX.W $
%1 rax, ax
%1 rax,eax
%1 rax,rax
%1 ax, [0]
%1 ax, word [0]
;;; %1 ax,dword [0]
;;; %1 ax,qword [0]
%1 eax, [0]
%1 eax, word [0]
;;; %1 eax,dword [0]
;;; %1 eax,qword [0]
%1 rax, [0]
%1 rax, word [0]
;;; %1 rax,dword [0]
;;; %1 rax,qword [0]
%endmacro
m lar
m lsl
bits 16
lar ax,[ si]
lar ax,[esi]
bits 32
lar ax,[ si]
lar ax,[esi]
bits 64
lar ax,[esi]
lar ax,[rsi]
bits 16
lsl ax,[ si]
lsl ax,[esi]
bits 32
lsl ax,[ si]
lsl ax,[esi]
bits 64
lar ax,[esi]
lsl ax,[rsi]
; EOF

View File

@ -1,3 +1,5 @@
;Testname=test; Arguments=-fbin -olarlsl.bin; Files=.stdout .stderr larlsl.bin
bits 64
lar ax,bx

View File

@ -1,3 +1,8 @@
;Testname=aout; Arguments=-faout -olnxhello.o -Ox; Files=.stdout .stderr lnxhello.o
;Testname=aoutb; Arguments=-faoutb -olnxhello.o -Ox; Files=.stdout .stderr lnxhello.o
;Testname=as86; Arguments=-fas86 -olnxhello.o -Ox; Files=.stdout .stderr lnxhello.o
;Testname=elf32; Arguments=-felf32 -olnxhello.o -Ox; Files=.stdout .stderr lnxhello.o
;
; Assembly "Hello, World!" for Linux
;

View File

@ -1,3 +1,4 @@
;Testname=test; Arguments=-fbin -olocal.bin; Files=.stdout .stderr local.bin
bits 32
%push bluttan

View File

@ -1,3 +1,5 @@
;Testname=unoptimized; Arguments=-fbin -oloopoffs.bin -O0; Files=.stdout .stderr loopoffs.bin
;Testname=optimized; Arguments=-fbin -oloopoffs.bin -Ox; Files=.stdout .stderr loopoffs.bin
bits 16
delay: loop delay
loop $

View File

@ -1,3 +1,5 @@
;Testname=unoptimized; Arguments=-fbin -ommxsize.bin -O0; Files=.stdout .stderr mmxsize.bin
;Testname=optimized; Arguments=-fbin -ommxsize.bin -Ox; Files=.stdout .stderr mmxsize.bin
bits 32
movd mm0,eax
movd mm0,[foo]

View File

@ -1,3 +1,5 @@
;Testname=unoptimized; Arguments=-fbin -omovimm.bin -O0; Files=.stdout .stderr movimm.bin
;Testname=optimized; Arguments=-fbin -omovimm.bin -Ox; Files=.stdout .stderr movimm.bin
bits 64
mov rax,1234567890abcdefh

View File

@ -1,3 +1,13 @@
;Testname=aout; Arguments=-faout -olnxhello.o -Ox; Files=.stdout .stderr lnxhello.o
;Testname=aoutb; Arguments=-faoutb -olnxhello.o -Ox; Files=.stdout .stderr lnxhello.o
;Testname=as86; Arguments=-fas86 -olnxhello.o -Ox; Files=.stdout .stderr lnxhello.o
;Testname=elf32; Arguments=-felf32 -olnxhello.o -Ox; Files=.stdout .stderr lnxhello.o
;Testname=elf64; Arguments=-felf64 -olnxhello.o -Ox; Files=.stdout .stderr lnxhello.o
;Testname=obj; Arguments=-fobj -olnxhello.o -Ox; Files=.stdout .stderr lnxhello.o
;Testname=rdf; Arguments=-frdf -olnxhello.o -Ox; Files=.stdout .stderr lnxhello.o
;Testname=win32; Arguments=-fwin32 -olnxhello.o -Ox; Files=.stdout .stderr lnxhello.o
;Testname=win64; Arguments=-fwin64 -olnxhello.o -Ox; Files=.stdout .stderr lnxhello.o
; To test where code that is placed before any explicit SECTION
; gets placed, and what happens if a .text section has an ORG
;statement, uncomment the following lines.

View File

@ -1,3 +1,6 @@
;Testname=obj; Arguments=-fobj -onasmfomat.o; Files=.stdout .stderr nasmfomat.o
;Testname=bin; Arguments=-fbin -onasmfomat.o; Files=.stdout .stderr nasmfomat.o
;Testname=rdf; Arguments=-frdf -onasmfomat.o; Files=.stdout .stderr nasmfomat.o
%if __OUTPUT_FORMAT__ == 'bin'

View File

@ -1,3 +1,6 @@
;Testname=unoptimized; Arguments=-fbin -onop.bin; Files=.stdout .stderr nop.bin
;Testname=optimized; Arguments=-fbin -onop.bin -Ox; Files=.stdout .stderr nop.bin
bits 64
nop

View File

@ -1,3 +1,4 @@
;Testname=test; Arguments=-fbin -onull.bin; Files=.stdout .stderr null.bin
;
; A file that produces no output has been known to occationally crash NASM.
;

View File

@ -1,3 +1,6 @@
;Testname=unoptimized; Arguments=-O0 -fobj -oobj.o; Files=.stdout .stderr obj.o
;Testname=optimized; Arguments=-Ox -fobj -oobj.o; Files=.stdout .stderr obj.o
; test source file for assembling to Microsoft 16-bit .OBJ
; build with (16-bit Microsoft C):
; nasm -f obj objtest.asm

View File

@ -1,3 +1,6 @@
;Testname=elf64; Arguments=-Ox -felf64 -oorg.o; Files=.stdout .stderr org.o
;Testname=win64; Arguments=-Ox -fwin64 -oorg.o; Files=.stdout .stderr org.o
;
; Simple test of a 64-bit org directive
;

View File

@ -1,3 +1,5 @@
;Testname=test; Arguments=-fbin -or13.bin; Files=.stdout .stderr r13.bin
bits 64
mov rax,[rbx]
mov rax,[rbx*4]

View File

@ -1,3 +1,5 @@
;Testname=test; Arguments=-fbin -oradix.bin; Files=.stdout .stderr radix.bin
;; Integer constants...
dd 1010_0101 ; Decimal

View File

@ -1,3 +1,5 @@
;Testname=unoptimized; Arguments=-fbin -oriprel.bin -O0; Files=.stdout .stderr riprel.bin
;Testname=optimized; Arguments=-fbin -oriprel.bin -Ox; Files=.stdout .stderr riprel.bin
bits 64
default abs

4
test/riprel.pl Normal file → Executable file
View File

@ -1,5 +1,9 @@
#!/usr/bin/perl
print ";Testname=unoptimized; Arguments=-fbin -oriprel.bin -O0; Files=.stdout .stderr riprel.bin\n";
print ";Testname=optimized; Arguments=-fbin -oriprel.bin -Ox; Files=.stdout .stderr riprel.bin\n";
print "\tbits 64\n";
foreach $mode ('abs', 'rel') {

View File

@ -1,3 +1,6 @@
;Testname=unoptimized; Arguments=-fbin -otest67.bin -O0; Files=.stdout .stderr test67.bin
;Testname=optimized; Arguments=-fbin -otest67.bin -Ox; Files=.stdout .stderr test67.bin
bits 16
mov ax,[bx]

View File

@ -1,3 +1,4 @@
;Testname=test; Arguments=-fbin -otestdos.bin; Files=.stdout .stderr testdos.bin
;
; This file was known to miscompile with the 16-bit NASM built
; under Borland C++ 3.1, so keep it around for testing...

View File

@ -1,3 +1,4 @@
;Testname=test; Arguments=-fbin -otestnos3.bin; Files=.stdout .stderr testnos3.bin
;
; Double-precision floating point tests, derived from Fred Tydeman's posting
; of 26 February 1996 to comp.arch.arithmetic, via David M. Gay's gdtoa

View File

@ -1,3 +1,4 @@
;Not automatically testable because it is not constant
db __DATE__, 13, 10
db __TIME__, 13, 10
db __UTC_DATE__, 13, 10

View File

@ -1,3 +1,4 @@
;Testname=test; Arguments=-fbin -ouscore.bin; Files=.stdout .stderr uscore.bin
dd 0x1234_5678
dd 305_419_896 ; Same number as above it
dd 0x1e16 ; NOT a floating-point number!

View File

@ -1,3 +1,6 @@
;Testname=unoptimized; Arguments=-fbin -oxchg.bin -O0; Files=.stdout .stderr xchg.bin
;Testname=optimized; Arguments=-fbin -oxchg.bin -Ox; Files=.stdout .stderr xchg.bin
%macro x 2
xchg %1,%2
xchg %2,%1

View File

@ -1,3 +1,4 @@
;Testname=test; Arguments=-fbin -ozerobyte.bin; Files=.stdout .stderr zerobyte.bin
bits 64
mov eax,bar-foo