diff --git a/Makefile b/Makefile index 0fc9ce7..0104cac 100644 --- a/Makefile +++ b/Makefile @@ -2,6 +2,9 @@ # # See doc/install.htm for instructions. +LC_ALL=C +export LC_ALL + # configuration parameters VERSION=v943 @@ -153,14 +156,14 @@ Benchmark-icont: Clean: touch Makedefs - rm -rf icon.* + rm -rf icon.v* cd src; $(MAKE) Clean cd ipl; $(MAKE) Clean cd tests; $(MAKE) Clean Pure: touch Makedefs - rm -rf icon.* + rm -rf icon.v* rm -rf bin/[abcdefghijklmnopqrstuvwxyz]* rm -rf lib/[abcdefghijklmnopqrstuvwxyz]* cd ipl; $(MAKE) Pure diff --git a/config/gnu/Makedefs b/config/gnu/Makedefs index e69de29..01f86b3 100644 --- a/config/gnu/Makedefs +++ b/config/gnu/Makedefs @@ -0,0 +1,19 @@ +# CC C compiler +# CFLAGS flags for building C files +# CFDYN additional flags for dynamic functions +# RLINK flags for linking run-time system +# RLIBS libraries to link with run-time system +# TLIBS libraries to link for POSIX threads +# XLIBS libraries to link for graphics +# XPMDEFS definitions for building XPM library +# GDIR directory of graphics helper library + +CC = gcc +CFLAGS = -O2 +CFDYN = -fPIC +RLINK = -Wl,-E +RLIBS = -lm -ldl +TLIBS = -lpthread +XLIBS = -L/usr/X11R6/lib -lX11 +XPMDEFS = -DZPIPE +GDIR = xpm diff --git a/config/gnu/define.h b/config/gnu/define.h index e69de29..6ce5df8 100644 --- a/config/gnu/define.h +++ b/config/gnu/define.h @@ -0,0 +1,11 @@ +/* + * Icon configuration file for the GNU system. + */ + +#define UNIX 1 +#define LoadFunc +/* no SysOpt: GLibC's getopt() is POSIX-compatible only if an envmt var + is set. */ + +#define CComp "gcc" +#define COpts "-O2 -fomit-frame-pointer" diff --git a/config/gnu/rswitch.c b/config/gnu/rswitch.c index e69de29..4a9def0 100644 --- a/config/gnu/rswitch.c +++ b/config/gnu/rswitch.c @@ -0,0 +1,27 @@ +/* + * This is the co-expression context switch for the GNU system. + */ + +/* + * coswitch + */ + +coswitch(old_cs, new_cs, first) +int *old_cs, *new_cs; +int first; + { + asm(" movl 8(%ebp),%eax"); + asm(" movl %esp,0(%eax)"); + asm(" movl %ebp,4(%eax)"); + asm(" movl 12(%ebp),%eax"); + if (first == 0) { /* this is the first activation */ + asm(" movl 0(%eax),%esp"); + asm(" movl $0,%ebp"); + new_context(0, 0); + syserr("interp() returned in coswitch"); + } + else { + asm(" movl 0(%eax),%esp"); + asm(" movl 4(%eax),%ebp"); + } + } diff --git a/config/gnu/status b/config/gnu/status index e69de29..9ad2dec 100644 --- a/config/gnu/status +++ b/config/gnu/status @@ -0,0 +1,28 @@ +System configuration: + + Intel architecture running the GNU system + +Latest Icon version: + + Version 9.4.0 + +Installer: + + Marcus Brinkmann + The Debian project + +Missing features: + + None + +Known bugs: + + None + +Comments: + + Tested under Debian GNU/Hurd. + +Date: + + August 9, 2001 diff --git a/ipl/Makefile b/ipl/Makefile index a438946..9112435 100644 --- a/ipl/Makefile +++ b/ipl/Makefile @@ -9,8 +9,8 @@ All: Ilib Ibin Ilib: cfuncs/libcfunc.so cfuncs/libcfunc.so: ../bin/icont cp incl/*.icn gincl/*.icn cfuncs/icall.h ../lib - cd procs; LPATH= ../../bin/icont -usc *.icn; mv *.u? ../../lib - cd gprocs; LPATH= ../../bin/icont -usc *.icn; mv *.u? ../../lib + cd procs; LPATH=../../lib ../../bin/icont -usc *.icn; mv *.u? ../../lib + cd gprocs; LPATH=../../lib ../../bin/icont -usc *.icn; mv *.u? ../../lib if grep '^ *# *define LoadFunc' ../src/h/define.h >/dev/null; \ then $(MAKE) Cfunctions; fi diff --git a/src/iconc/ctrans.c b/src/iconc/ctrans.c index 7d33ac5..f04f8af 100644 --- a/src/iconc/ctrans.c +++ b/src/iconc/ctrans.c @@ -37,6 +37,8 @@ int trans() struct srcfile *sf; lpath = getenv("LPATH"); /* remains null if unspecified */ + if (!lpath) + lpath = "/usr/lib/icon-ipl"; for (sf = srclst; sf != NULL; sf = sf->next) trans1(sf->name); /* translate each file in turn */ diff --git a/src/icont/tunix.c b/src/icont/tunix.c index 9478403..bff6988 100644 --- a/src/icont/tunix.c +++ b/src/icont/tunix.c @@ -301,7 +301,7 @@ static char *libpath(char *prog, char *envname) { else strcpy(buf, "."); strcat(buf, ":"); - strcat(buf, relfile(prog, "/../../lib")); + strcat(buf, "/usr/lib/icon-ipl"); return salloc(buf); } diff --git a/src/runtime/fmisc.r b/src/runtime/fmisc.r index 6691241..cba0a1a 100644 --- a/src/runtime/fmisc.r +++ b/src/runtime/fmisc.r @@ -195,7 +195,9 @@ function{1} copy(x) runerr(0); dst->table.size = src->table.size; dst->table.mask = src->table.mask; - dst->table.defvalue = src->table.defvalue; + memcpy((char *) &dst->table.defvalue, + (char *) &src->table.defvalue, + sizeof(dst->table.defvalue)); for (i = 0; i < HSegs && src->table.hdir[i] != NULL; i++) memcpy((char *)dst->table.hdir[i], (char *)src->table.hdir[i], src->table.hdir[i]->blksize); diff --git a/tests/general/Test-icon b/tests/general/Test-icon index 07ccb87..7f53036 100755 --- a/tests/general/Test-icon +++ b/tests/general/Test-icon @@ -45,7 +45,7 @@ for F in $*; do F=`basename $F .icn` rm -f $F.out echo "Testing $F" - if $IC -s $F.icn; then + if IPATH=../../lib $IC -s $F.icn; then if test -x $F.exe; then EXE=$F.exe else