diff --git a/ChangeLog b/ChangeLog
index b9dafdc0d9c63b4ce7919c0ca17304fc1b0554cb..df4e6ca6af5e6af652aa9489dbc1370def87bcc5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2001-04-10  Loren J. Rittle  <ljrittle@acm.org>
+
+	* ltcf-cxx.sh: Support creation of C++ shared libraries on
+	recent versions of FreeBSD (release 3 or later).
+	* ltconfig: On FreeBSD, -lc must not be provided when building
+	a shared library or else the standard -pthread gcc option is
+	rendered worthless to later users of the built library.
+
 2001-04-06  Joseph S. Myers  <jsm28@cam.ac.uk>
 
 	* MAINTAINERS: Add self and RTH as C front end maintainers.
diff --git a/ltcf-cxx.sh b/ltcf-cxx.sh
index c399d34c9dc254696b8a391c862891299a34f870..a5f089be04f9b610040e0be29b520d50486d62dd 100644
--- a/ltcf-cxx.sh
+++ b/ltcf-cxx.sh
@@ -233,11 +233,15 @@ case $host_os in
         ;;
     esac
     ;;
-  freebsd*)
-    # FreeBSD uses GNU C++ and GNU ld
-    # FIXME: insert proper C++ library support
+  freebsd[12]*)
+    # C++ shared libraries reported to be fairly broken before switch to ELF
     ld_shlibs=no
     ;;
+  freebsd*)
+    # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+    # conventions
+    ld_shlibs=yes
+    ;;
   hpux*)
     hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
     hardcode_libdir_separator=:
diff --git a/ltconfig b/ltconfig
index 739e6529ded21f3d96699077eb827239073bbf2d..423e47bae0c469ae719b4625175a1bf4ba589f07 100755
--- a/ltconfig
+++ b/ltconfig
@@ -1108,6 +1108,7 @@ freebsd*)
     freebsd-elf*)
       library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so'
       need_version=no
+      need_lc=no
       need_lib_prefix=no
       ;;
     freebsd-*)