diff --git a/src/Makefile.in b/src/Makefile.in
index c739c6bb90a936e7d91e9b426a7c39bf56b97605..579d0f0d32a72475d55041370ac4baca4460cc1c 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -160,9 +160,10 @@ spotless: clean
 	rm -f Makefile machine.h
 	find . -type f '(' -name '*~' -o -name '.*~' -o -name core -o -name '.nfs*' -name '#*#' ')' -print | xargs rm -f
 	-rm -f lexical.c mon.out *.ln config.status
-	-rm -f $(TMP_BINDIR)/driver $(TMP_BINDIR)/*~ $(TMP_BINDIR)/#*#
-	-rm -f .pure driver* l.outa*
+	-rm -f $(TMP_BINDIR)/*~ $(TMP_BINDIR)/#*#
+	-rm -f pike pike.old l.outa*
 	-rm -f modules/*/testsuite
+	-rm -rf lib
 
 # create tags
 tags:
diff --git a/src/configure.in b/src/configure.in
index e81c3cc5f28358943f0fdd1a6ba17fabbffbc29c..dffb04506418b5a57066668a795b8c7569ac380e 100644
--- a/src/configure.in
+++ b/src/configure.in
@@ -1,4 +1,4 @@
-AC_REVISION("$Id: configure.in,v 1.85 1997/04/16 23:04:51 hubbe Exp $")
+AC_REVISION("$Id: configure.in,v 1.86 1997/04/17 02:17:00 hubbe Exp $")
 AC_INIT(interpret.c)
 AC_CONFIG_HEADER(machine.h)
 
@@ -103,11 +103,13 @@ AC_CACHE_VAL(pike_cv_sys_os,
 if test "$uname_prog" != "no"; then
   pike_cv_sys_os="`uname`"
 
-  if test "$pike_cv_sys_os" = "SunOS"; then
-    case "`uname -r`" in
-      5.*) pike_cv_sys_os="Solaris";
-    esac
-  fi
+  case "$pike_cv_sys_os" in
+    SunOS)
+      case "`uname -r`" in
+        5.*) pike_cv_sys_os="Solaris";
+      esac
+    ;;
+  esac
 else
   pike_cv_sys_os="Not Solaris"
 fi
@@ -1360,19 +1362,24 @@ AC_MSG_CHECKING(LDSHARED)
 if test -z "$LDSHARED"
 then
 	case "$pike_cv_sys_os" in
-	AIX*) LDSHARED="ld_so_aix \$(CC)";;
+	AIX*)
+	 # LDSHARED="ld_so_aix \$(CC)"
+	 LDSHARED="ld -G -bnogc -bnox"
+	;;
 	IRIX*) LDSHARED="ld -shared";;
 	SunOS*) LDSHARED="ld";;
 	Solaris) LDSHARED="ld -G";;
 	hp*|HP*) LDSHARED="ld -b";;
-	OSF*) LDSHARED="ld -shared -expect_unresolved '*'";;
+	OSF*)
+           LDSHARED="ld -expect_unresolved '*' -shared -msym -O3"
+        ;;
 	DYNIX/ptx*) LDSHARED="ld -G";;
 	next) LDSHARED='$(CC) $(CFLAGS) -nostdlib -r';;
 	Linux*) LDSHARED="gcc -shared";;
 	FreeBSD*) LDSHARED="ld -Bshareable";;
 	NetBSD) LDSHARED="ld -Bshareable";;
 	SCO_SV*) LDSHARED="cc -G -KPIC -Ki486 -belf -Wl,-Bexport";;
-	*)	LDSHARED="ld";;
+	*) LDSHARED="ld";;
 	esac
 fi
 AC_MSG_RESULT($LDSHARED)
@@ -1393,14 +1400,16 @@ if test -z "$CCSHARED" ; then
 fi
 AC_MSG_RESULT($CCSHARED)
 
+AC_MSG_CHECKING(LINKFORSHARED)
+
+AC_CACHE_VAL(pike_cv_sys_linkforshared,[
 # LINKFORSHARED are the flags passed to the $(CC) command that links
 # the pike executable -- this is only needed for a few systems
-AC_MSG_CHECKING(LINKFORSHARED)
 if test -z "$LINKFORSHARED"
 then
   if test "$GCC" = yes ; then
     case $pike_cv_sys_os in
-	AIX*)	LINKFORSHARED="-Wl,-bE:pike.exp";;
+#	AIX*)	LINKFORSHARED="-Wl,-bE:pike.exp";;
 	hp*|HP*) LINKFORSHARED="-Wl,-E";;
 	Linux*) LINKFORSHARED="-rdynamic";;
 	next) LINKFORSHARED="-u libsys_s";;
@@ -1408,7 +1417,7 @@ then
     esac
   else
     case $pike_cv_sys_os in
-	AIX*)	LINKFORSHARED="-Wl,-bE:pike.exp";;
+#	AIX*)	LINKFORSHARED="-Wl,-bE:pike.exp ";;
 	hp*|HP*) LINKFORSHARED="-Wl,-E";;
 	Linux*) LINKFORSHARED="-rdynamic";;
 	next) LINKFORSHARED="-u libsys_s";;
@@ -1416,6 +1425,16 @@ then
     esac
   fi
 fi
+
+
+   OLD_CFLAGS="$CFLAGS"
+   CFLAGS="$CFLAGS $LINKFORSHARED"
+    AC_TRY_RUN([int main() { exit(0); }], pike_cv_sys_dynamic_linkforshared="$LINKFORSHARED", pike_cv_sys_dynamic_loading='')
+   CFLAGS="$OLD_CFLAGS"
+])
+
+LINKFORSHARED="$pike_cv_sys_linkforshared"
+
 AC_MSG_RESULT($LINKFORSHARED)
 
 #############################################################################
@@ -1424,21 +1443,27 @@ cat >conftest.c <<EOF
 void testfunc(void) { exit(0); }
 EOF
 
-$CC -c $CFLAGS $CCSHARED conftest.c -o conftest.o
-$BINDIR/smartlink $LDSHARED $LDFLAGS conftest.o -o conftest.$SO
-
-mv conftest.$SO myconftest.so
-
 AC_MSG_CHECKING(if dynamic loading works)
 AC_CACHE_VAL(pike_cv_sys_dynamic_loading,
 [
-   OLD_CFLAGS="$CFLAGS"
-   CFLAGS="$CFLAGS $LINKFORSHARED"
+  echo $CC -c $CFLAGS $CCSHARED conftest.c -o conftest.o 1>&5
+  $CC -c $CFLAGS $CCSHARED conftest.c -o conftest.o 1>&5 2>&5
+
+  echo $BINDIR/smartlink $LDSHARED $LDFLAGS conftest.o -o conftest.$SO 1>&5
+  $BINDIR/smartlink $LDSHARED $LDFLAGS conftest.o -o conftest.$SO 1>&5 2>&5
+
+  if test -f conftest.$SO ; then
+    mv conftest.$SO myconftest.so
+
+    OLD_CFLAGS="$CFLAGS"
+    CFLAGS="$CFLAGS $LINKFORSHARED"
     AC_TRY_RUN([
 #define TESTING
 #include "$srcdir/dynamic_load.c"
 ], pike_cv_sys_dynamic_loading=yes, pike_cv_sys_dynamic_loading=no)
-   CFLAGS="$OLD_CFLAGS"
+    CFLAGS="$OLD_CFLAGS"
+  fi
+  rm -f myconftest.so >/dev/null 2>/dev/null
 ])
 AC_MSG_RESULT($pike_cv_sys_dynamic_loading)
 
@@ -1446,7 +1471,6 @@ if test x$pike_cv_sys_dynamic_loading = xno ; then
   with_dynamic_modules=no
 fi
 
-rm myconftest.so
 
 #############################################################################
 
diff --git a/src/modules/_Crypto/lib/Makefile.in b/src/modules/_Crypto/lib/Makefile.in
index da3fbeb5acb8415ada520a01bbbe3b1c6b417938..a1db220ca7a9d97294bba01b7c69363b35a62951 100644
--- a/src/modules/_Crypto/lib/Makefile.in
+++ b/src/modules/_Crypto/lib/Makefile.in
@@ -44,8 +44,8 @@ GO=		desSmallFips.o desSmallCore.o desQuickFips.o desQuickCore.o
 O=		$(SO) $(GO)
 
 # prefer compilation from .i if .i exists
-.SUFFIXES:
-.SUFFIXES:	.i .o .c $(SUFFIXES)
+#.SUFFIXES:
+#.SUFFIXES:	.i .o .c $(SUFFIXES)
 
 desTest:	desCore.a desTest.o
 		$(LINK.c) -o $@ desTest.o desCore.a
@@ -80,32 +80,32 @@ desdata:	desdata.o
 		$(LINK.c) -o $@ desdata.o
 
 # new rules  (note: tr|sed|tr is NOT necessary,  just there so .i is readable)
-#.c.i:
-#	$(CPP) $(CFLAGS) $< > $*.x
-#	@tr ';'\\012 \\012';' < $*.x |			\
-#	 sed	-e 's/[ 	][ 	]*/ /g'		\
-#		-e 's/^ //'				\
-#		-e 's/ $$//'				\
-#		-e '/^$$/d'				\
-#		-e '/^[^;]/s/^/;/'			\
-#		-e 's/#[^;]*;//g'			\
-#		-e 's/\([){]\) *\(register\)/\1;\2/g'	\
-#		-e 's/\([[(]\) /\1/g'			\
-#		-e 's/ \([])]\)/\1/g'			\
-#		-e 's/\([^]+0123 ]\) =/\1  =/g'		\
-#		-e 's/}/};;/g'				\
-#		-e 's/ *; */;/g'			\
-#		-e 's/;;;*/;;/g'			\
-#		-e '1s/^;*//' |				\
-#	 tr ';'\\012 \\012';' > $@
-#	@echo ""  >> $@
-##	@echo "}" >> $@			# last definition must be a procedure
-#
-##		-e 's/\(;[kmxyz][0-9]*\)\([^;]*=\)/\1  \2/g'
-#
-#.i.o:
-#		$(CODEGEN.c) $<
-#		$(COMPILE.c) $*.s
+.c.i:
+	$(CPP) $(CFLAGS) $< > $*.x
+	@tr ';'\\012 \\012';' < $*.x |			\
+	 sed	-e 's/[ 	][ 	]*/ /g'		\
+		-e 's/^ //'				\
+		-e 's/ $$//'				\
+		-e '/^$$/d'				\
+		-e '/^[^;]/s/^/;/'			\
+		-e 's/#[^;]*;//g'			\
+		-e 's/\([){]\) *\(register\)/\1;\2/g'	\
+		-e 's/\([[(]\) /\1/g'			\
+		-e 's/ \([])]\)/\1/g'			\
+		-e 's/\([^]+0123 ]\) =/\1  =/g'		\
+		-e 's/}/};;/g'				\
+		-e 's/ *; */;/g'			\
+		-e 's/;;;*/;;/g'			\
+		-e '1s/^;*//' |				\
+	 tr ';'\\012 \\012';' > $@
+	@echo ""  >> $@
+#	@echo "}" >> $@			# last definition must be a procedure
+
+#		-e 's/\(;[kmxyz][0-9]*\)\([^;]*=\)/\1  \2/g'
+
+.i.o:
+		$(CODEGEN.c) $<
+		$(COMPILE.c) $*.s
 
 # slowest to quickest
 desSmallFips.c:
@@ -139,5 +139,5 @@ OBJS = idea.o sha.o md5.o rc4.o $(O)
 
 algorithms.a: $(OBJS)
 	rm -f algorithms.a
-	$(AR) cq algorithms.a $(OBJS)
+	ar cq algorithms.a $(OBJS)
 	$(RANLIB) algorithms.a
diff --git a/src/modules/spider/stardate.c b/src/modules/spider/stardate.c
index 7a4908cbae64ef6463f66baccdda7c7d95a1f351..60546b4d2f38a81dd56bbe94b0126d6795beb788 100644
--- a/src/modules/spider/stardate.c
+++ b/src/modules/spider/stardate.c
@@ -11,6 +11,7 @@
 #include "mapping.h"
 #include "array.h"
 #include "builtin_functions.h"
+#include "error.h"
 
 #ifdef HAVE_SYS_TIME_H 
 #include <sys/time.h>