diff --git a/ChangeLog b/ChangeLog
index c12754fc820bd31e3e5d37cdce0551af23f8f97c..0f2bb66b86d43f1299dc8c9687c2f4a2a92889a7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2000-11-09  David Edelsohn  <edelsohn@gnu.org>
+
+	* ltcf-c.sh (aix4): Improve shared library configuration; require
+	exporting symbols.
+	* ltcf-cxx.sh (aix4): Define.
+	* ltconfig (aix4): Define library and soname specs appropriate for
+	AIX.  Define command to create export symbols list.
+
 Mon Nov  6 14:19:35 2000  Christopher Faylor <cgf@cygnus.com>
 
 	* config.sub: Add support for Sun Chorus
diff --git a/ltcf-c.sh b/ltcf-c.sh
index e57abb1cb2b243ee47c7d4b8b787d3ca36285dfd..6bccb11c5d6805625b001775952f2d541a7bdf99 100644
--- a/ltcf-c.sh
+++ b/ltcf-c.sh
@@ -277,13 +277,13 @@ else
       hardcode_direct=yes
     fi
     allow_undefined_flag=' ${wl}-berok'
-    archive_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bexpall ${wl}-bnoentry${allow_undefined_flag}'
-    archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}'
-    case "$host_os" in aix4.[01]|aix4.[01].*)
-      # According to Greg Wooledge, -bexpall is only supported from AIX 4.2 on
-      always_export_symbols=yes ;;
-    esac
-   ;;
+    archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+    # -bexpall does not export symbols beginning with underscore (_)
+    always_export_symbols=yes
+    # Exported symbols can be pulled into shared objects from archives
+    whole_archive_flag_spec=' '
+    build_libtool_need_lc=yes
+    ;;
 
   amigaos*)
     archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
diff --git a/ltcf-cxx.sh b/ltcf-cxx.sh
index c134a4294864fca39e6a7804dc4de4b8c13a4862..cefa0085624a6868760c38c6a04d7032a9e50a2b 100644
--- a/ltcf-cxx.sh
+++ b/ltcf-cxx.sh
@@ -135,8 +135,12 @@ case "$host_os" in
     ld_shlibs=no
     ;;
   aix4*)
-    # FIXME: insert proper C++ library support
-    ld_shlibs=no
+    archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+    # -bexpall does not export symbols beginning with underscore (_)
+    always_export_symbols=yes
+    # Exported symbols can be pulled into shared objects from archives
+    whole_archive_flag_spec=' '
+    build_libtool_need_lc=yes
     ;;
   chorus*)
     case "$cc_basename" in
diff --git a/ltconfig b/ltconfig
index fb0bf8b8b181b785402a541da2b61c08c77bb0e7..a79434264e437ec94f13544c56488e9c30032f4e 100755
--- a/ltconfig
+++ b/ltconfig
@@ -949,8 +949,10 @@ aix4*)
   # collect2, so additional links can be useful in future.
   # We preserve .a as extension for shared libraries though AIX4.2
   # and later linker supports .so
-  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.a'
+  library_names_spec='${libname}${release}.a $libname.a'
   shlibpath_var=LIBPATH
+  soname_spec='${libname}${release}.so$major.o'
+  export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
   ;;
 
 amigaos*)