--- tcl.m4.orig	2003-07-21 18:29:44.000000000 -0400
+++ tcl.m4	2003-08-20 23:56:13.000000000 -0400
@@ -1189,16 +1189,21 @@ dnl AC_CHECK_TOOL(AR, ar)
 	NetBSD-*|FreeBSD-[[1-2]].*|OpenBSD-*)
 	    # Not available on all versions:  check for include file.
 	    AC_CHECK_HEADER(dlfcn.h, [
-		# NetBSD/SPARC needs -fPIC, -fpic will not do.
-		SHLIB_CFLAGS="-fPIC"
-		SHLIB_LD="ld -Bshareable -x"
+		# OpenBSD/SPARC[64] needs -fPIC, -fpic will not do.
+		case `machine` in
+		sparc|sparc64)
+			SHLIB_CFLAGS="-fPIC";;
+		*)
+			SHLIB_CFLAGS="-fpic";;
+		esac
+		SHLIB_LD="${CC} -shared ${SHLIB_CFLAGS}"
 		SHLIB_LD_LIBS=""
 		SHLIB_SUFFIX=".so"
 		DL_OBJS="tclLoadDl.o"
 		DL_LIBS=""
-		LDFLAGS=""
 		CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
-		LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
+		LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+		SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so.1.0'
 		AC_MSG_CHECKING(for ELF)
 		AC_EGREP_CPP(yes, [
 #ifdef __ELF__
@@ -1206,9 +1211,9 @@ dnl AC_CHECK_TOOL(AR, ar)
 #endif
 		],
 		    AC_MSG_RESULT(yes)
-		    SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so',
+		    [ LDFLAGS=-Wl,-export-dynamic ],
 		    AC_MSG_RESULT(no)
-		    SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so.1.0'
+		    LDFLAGS=""
 		)
 	    ], [
 		SHLIB_CFLAGS=""
