diff --git a/bin/feature_list b/bin/feature_list
new file mode 100755
index 0000000000000000000000000000000000000000..64b104cff7bcb89612a7660e30d10b6ab14eeced
--- /dev/null
+++ b/bin/feature_list
@@ -0,0 +1,19 @@
+#!/usr/local/bin/pike
+
+int main(int argc, string *argv)
+{
+  write("Features: ");
+
+  if(!_static_modules["Regexp"])
+    write("dynamic_modules ");
+
+#if efun(thread_create)
+  write("threads ");
+#endif
+
+  catch { if(master()->resolv("Gdbm")->gdbm) write("Gdbm "); };
+  catch { if(master()->resolv("Gmp")->mpz)   write("Gmp ");  };
+  catch { if(master()->resolv("Gz")->deflate)write("Gz ");   };
+
+  write("\n");
+}
diff --git a/src/Makefile.in b/src/Makefile.in
index 579d0f0d32a72475d55041370ac4baca4460cc1c..b57dfdbf38e7b4e96ab4c3dc9be37d399ffa5782 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -184,6 +184,8 @@ verify: testsuite verify_modules
 
 check: verify
 
+sure: verify
+
 # verify / debug verbose
 verbose_verify: testsuite verbose_verify_modules
 	$(RUNPIKE) $(TMP_BINDIR)/test_pike.pike testsuite --verbose
@@ -200,6 +202,9 @@ gdb_verify: testsuite
 run_hilfe:
 	$(RUNPIKE) $(TMP_BINDIR)/hilfe
 
+feature_list:
+	$(RUNPIKE) $(TMP_BINDIR)/feature_list
+
 lib: $(LIBDIR_SRC) $(LIBDIR_SRC)/master.pike $(LIBDIR_SRC)/modules $(LIBDIR_SRC)/include
 	cp -r $(LIBDIR_SRC) .
 	touch ./lib
diff --git a/src/configure.in b/src/configure.in
index 111079109e0617097c1c5da8d9734f5c863bfeff..99c5ccdaf3c1eade9c4b685e0ab9a89387f6df08 100644
--- a/src/configure.in
+++ b/src/configure.in
@@ -1,4 +1,4 @@
-AC_REVISION("$Id: configure.in,v 1.87 1997/04/17 02:58:45 hubbe Exp $")
+AC_REVISION("$Id: configure.in,v 1.88 1997/04/17 05:08:29 hubbe Exp $")
 AC_INIT(interpret.c)
 AC_CONFIG_HEADER(machine.h)
 
@@ -1429,7 +1429,8 @@ fi
 
    OLD_CFLAGS="$CFLAGS"
    CFLAGS="$CFLAGS $LINKFORSHARED"
-    AC_TRY_RUN([int main() { exit(0); }], pike_cv_sys_sys_linkforshared="$LINKFORSHARED", pike_cv_sys_linkforshared='')
+   AC_TRY_RUN([int main() { exit(0); }],
+ pike_cv_sys_linkforshared="$LINKFORSHARED", pike_cv_sys_linkforshared='')
    CFLAGS="$OLD_CFLAGS"
 ])
 
@@ -1440,7 +1441,7 @@ AC_MSG_RESULT($LINKFORSHARED)
 #############################################################################
 
 cat >conftest.c <<EOF
-void testfunc(void) { exit(0); }
+void testfunc(void) { testfunc2(); exit(1); }
 EOF
 
 AC_MSG_CHECKING(if dynamic loading works)
@@ -1460,6 +1461,7 @@ AC_CACHE_VAL(pike_cv_sys_dynamic_loading,
     AC_TRY_RUN([
 #define TESTING
 #include "$srcdir/dynamic_load.c"
+void testfunc2(void) { exit(0); }
 ], pike_cv_sys_dynamic_loading=yes, pike_cv_sys_dynamic_loading=no)
     CFLAGS="$OLD_CFLAGS"
   fi
diff --git a/src/dynamic_load.c b/src/dynamic_load.c
index adc1e321994200cd1739cad88af16205424ff8db..e4ed6d8e8cadae8c28bc487b46c306a7279aabbd 100644
--- a/src/dynamic_load.c
+++ b/src/dynamic_load.c
@@ -144,9 +144,9 @@ void f_load_module(INT32 args)
 
 void init_dynamic_load(void)
 {
+#if defined(HAVE_DLOPEN) || defined(USE_DLD)
   dlinit();
 
-#if defined(HAVE_DLOPEN) || defined(USE_DLD)
   add_efun("load_module",f_load_module,"function(string:program)",OPT_EXTERNAL_DEPEND);
 #endif
 }