shithub: mc

Download patch

ref: 02922f0289a990a65ad7ede45f2a2e54df7c7162
parent: b43c9855d957cb62e91425cf645a379e44bb883d
author: Ori Bernstein <[email protected]>
date: Thu Sep 27 16:10:27 EDT 2012

Add first test that uses libstd.

--- a/test/hello/Makefile
+++ /dev/null
@@ -1,11 +1,0 @@
-# don't build anything for 'all'
-all: 
-	./bld.sh
-.PHONY: clean
-clean:
-	@for i in `awk '{print $$1}' tests`; do \
-	    echo rm -f $$i; \
-	    rm -f $$i; \
-	done
-
-install:
--- a/test/hello/bld.sh
+++ /dev/null
@@ -1,36 +1,0 @@
-#!/bin/bash
-
-# We have no dependency handling yet, so this is done via
-# a shell script. Also, we want to rebuild everything for
-# testing purposes on every run as things stand.
-
-export PATH=.:$PATH
-export MC=../../8/8m
-export MU=../../util/muse
-export CC=cc
-export ASOPT="-g"
-
-function use {
-    N=`basename $1 .myr`
-
-    echo $MU $1 -o $N.use && \
-    $MU $1 -o $N.use
-}
-
-function build {
-    N=`basename $1 .myr`
-
-    echo $MC $1 && \
-    $MC $1 -I.
-}
-
-function assem {
-    $CC $ASOPT -m32 -c $1
-}
-
-assem syscall.s
-use sys.myr
-build sys.myr
-build hello.myr
-
-$CC -m32 -o hello sys.o hello.o syscall.o
--- a/test/hello/hello.myr
+++ /dev/null
@@ -1,5 +1,0 @@
-use "sys.use"
-
-const main = {
-	sys.write(1, "Hello world\n")
-}
--- a/test/hello/sys.myr
+++ /dev/null
@@ -1,74 +1,0 @@
-pkg sys =
-	type scno = int
-	type fdopt = int
-	type statbuf = struct
-		 dev     : uint
-		 ino     : uint
-		 mode    : uint16
-		 nlink   : uint16
-		 uid     : uint16
-		 gid     : uint16
-		 rdev    : uint
-		 size    : uint
-		 blksize : uint
-		 blocks  : uint
-		 atime   : uint
-		 atimens : uint
-		 mtime   : uint
-		 mtimens : uint
-		 ctime   : uint
-		 ctimens : uint
-		 _unused1: uint
-		 _unused2: uint
-	;;
-
-	const Rdonly  	: fdopt = 0x0
-	const Wronly  	: fdopt = 0x1
-	const Rdwr    	: fdopt = 0x2
-	const Append  	: fdopt = 0x80
-	const Creat   	: fdopt = 0x40
-	const Nofollow	: fdopt = 0x20000
-	const Ndelay  	: fdopt = 0x800
-	const Trunc   	: fdopt = 0x200
-
-	const Sysexit	: scno = 1
-	const Sysread	: scno = 3
-	const Syswrite	: scno = 4
-	const Sysopen	: scno = 5
-	const Sysclose	: scno = 6
-	const Syscreat	: scno = 8
-	const Syslseek	: scno = 19
-	const Sysfstat	: scno = 108
-	const Syskill	: scno = 37
-	const Sysgetpid	: scno = 20
-	const Sysmmap2	: scno = 192
-	const Sysmunmap	: scno = 91
-
-	extern const syscall : (sc:scno, count:int, args:... -> int)
-
-	const exit	: (status:int -> int)
-	const getpid	: ( -> int)
-	const kill	: (pid:int, sig:int -> int)
-	const open	: (path:char[,], opts:fdopt -> int)
-	const close	: (fd:int -> int)
-	const creat	: (path:char[,], mode:int -> int)
-	const read	: (fd:int, buf:char[,] -> int)
-	const write	: (fd:int, buf:char[,] -> int)
-	const lseek	: (fd:int, off:uint, whence:int -> int)
-	const fstat	: (fd:int, sb:statbuf* -> int)
-	const munmap	: (addr:byte*, len:uint -> int)
-	const mmap	: (add:byte*, len:uint, prot:uint, flags:uint, fd:int, off:uint)
-;;
-
-const exit	= {status;		-> syscall(Sysexit, 1);}
-const getpid	= {;			-> syscall(Sysgetpid, 1);}
-const kill	= {pid, sig;		-> syscall(Syskill,  2, pid, sig);}
-const open	= {path, opts:fdopt;	-> syscall(Sysopen,  2, path castto(char*), opts);}
-const close	= {fd;			-> syscall(Sysclose, 1, fd);}
-const creat	= {path, mode;		-> syscall(Syscreat, 2, path castto(char*), mode);}
-const read	= {fd, buf;		-> syscall(Sysread,  3, fd, buf castto(char*), buf.len);}
-const write	= {fd, buf;		-> syscall(Syswrite, 3, fd, buf castto(char*), buf.len);}
-const lseek	= {fd, off, whence;	-> syscall(Syslseek, 2, fd, off, whence);}
-const fstat	= {fd, sb;		-> syscall(Sysfstat, 2, fd, sb);}
-const munmap	= {addr, len;		-> syscall(Sysmunmap,   2, addr, len);}
-const mmap	= {addr, len, prot, flags, fd, off;	-> syscall(Sysmmap2, 6, addr, len, prot, flags, fd, off);}
--- a/test/hello/syscall.s
+++ /dev/null
@@ -1,33 +1,0 @@
-.globl sys$syscall
-sys$syscall:
-	pushl %ebp
-	movl %esp,%ebp
-	movl 12(%ebp),%eax #count
-        shl  $2,%eax
-	jmp  *.jmptab(%eax)
-.jmptab:
-	.long .a0
-	.long .a1
-	.long .a2
-	.long .a3
-	.long .a4
-	.long .a5
-	.long .a6
-	/*
-	   hack: 6 args uses %ebp, so we index
-	   relative to %esp. This means that if
-	   we actually start using stack space,
-	   this code will need adjustment
-	 */
-.a6:	movl 36(%esp),%ebp
-.a5:	movl 32(%esp),%edi
-.a4:	movl 28(%esp),%esi
-.a3:	movl 24(%esp),%edx
-.a2:	movl 20(%esp),%ecx
-.a1:	movl 16(%esp),%ebx
-	/* 12(%esp) holds nargs */
-.a0:	movl 8(%esp),%eax
-        int $0x80
-	movl %ebp,%esp
-	popl %ebp
-	ret
--- /dev/null
+++ b/test/helloworld.myr
@@ -1,0 +1,7 @@
+use std
+
+const main = {args : byte[:][:]
+	std.write(1, "Hello-世界\n")
+	-> 0
+}
+
--- a/test/test.sh
+++ b/test/test.sh
@@ -8,20 +8,20 @@
 
 function use {
     rm -f $1 $1.o $1.s $1.use
-    echo $MU $1.myr -o $1.use && \
+    echo $MU -I ../libstd -o $1.use $1.myr && \
     $MU $1.myr -o $1.use
 }
 
 function build {
     rm -f $1 $1.o $1.s $1.use
-    echo $MC $1.myr -I ../libstd && \
-    $MC $1.myr -I ../libstd && \
+    echo $MC -I ../libstd $1.myr && \
+    $MC -I ../libstd $1.myr && \
     echo $LD -o $1 $1.o -L../libstd -lstd && \
     $LD -o $1 $1.o -L../libstd -lstd
 }
 
 function prints {
-    if [ `./$1` -ne $2 ]; then
+    if [ "`./$1`" != "$2" ]; then
         echo "FAIL: $1"
         FAILED="$FAILED $1"
         NFAILED=$[$NFAILED + 1]
@@ -54,7 +54,6 @@
 ulimit -f 16382     # file size
 ulimit -l 1024      # locked memory
 ulimit -m 32768     # total memory
-ulimit -n 32768     # open files
 ulimit -s 8192      # 8 meg stack
 ulimit -t 30        # 30 second CPU time
 ulimit -v 32768     # virtual memory
--- a/test/tests
+++ b/test/tests
@@ -71,6 +71,7 @@
 B structlit	E	42
 B tuple		E	42
 B tyrec		E	42
+B helloworld	P	Hello-世界
 F declmismatch
 F infermismatch
 F usedef