diff --git a/src/configure.in b/src/configure.in
index 0de497d288cac4c2d06789b68c2596c5aa5be8df..278c75ba7d3fa0d442feecbd6b086c4507e92d1c 100644
--- a/src/configure.in
+++ b/src/configure.in
@@ -1,4 +1,4 @@
-AC_REVISION("$Id: configure.in,v 1.150 1998/06/22 19:04:21 grubba Exp $")
+AC_REVISION("$Id: configure.in,v 1.151 1998/07/01 17:52:23 grubba Exp $")
 AC_INIT(interpret.c)
 AC_CONFIG_HEADER(machine.h)
 
@@ -1712,7 +1712,22 @@ then
 	case "$pike_cv_sys_os" in
 	AIX*)
          if test "$GCC" = yes ; then
-           LDSHARED="ld -G -bexpall"
+	   if test "`uname -r`" -ge 2 -a "`uname -v`" -ge 4 ; then
+             LDSHARED="ld -G -bexpall"
+	   else if test "`uname -v`" -gt 4 ; then
+	       # Extra forward compatibility...
+	       # AIX 5+
+	       LDSHARED="ld -G -bexpall"
+	     else
+	       # AIX 4.1 and earlier don't have/have unreliable
+	       # handling of dlopen et al.
+	       #
+	       # Even AIX 4.2.1 has buggy dlopen -- NEVER attempt
+	       # to dlopen a file that hasn't been linked with -G.
+	       pike_cv_sys_dynamic_loading=no
+	       LDSHARED="ld"
+	     fi
+	   fi
          else
            # Dynamic linking turned off for AIX-cc
 	   #