diff --git a/mk/config.mk.in b/mk/config.mk.in
index 14195e9a0969280a54f1e1610317459d6dcf4303..2a2982110487f1df6946770f5009c23cdf6ca0e0 100644
--- a/mk/config.mk.in
+++ b/mk/config.mk.in
@@ -148,7 +148,7 @@ ProjectPatchLevel = $($(Project)ProjectPatchLevel)
 
 GhcProjectName         = The Glorious Glasgow Haskell Compilation System
 GhcProjectNameShort    = ghc
-GhcProjectVersion      = 3.02
+GhcProjectVersion = proto-3.02-6-May
 GhcProjectVersionInt   = 302
 GhcProjectPatchLevel   = 0
 
@@ -275,6 +275,11 @@ ReadlineIncludePath=
 #
 GhcLibsWithSockets=YES
 
+# Strip local symbols from libraries?  This can make the libraries smaller,
+# but makes debugging somewhat more difficult.  Doesn't work with all ld's.
+#
+StripLibraries=NO
+
 # what to include in a binary distribution
 
 GhcMainDir = ghc
diff --git a/mk/target.mk b/mk/target.mk
index 3c46011cff1db89637378e47cd53eaad21f06da6..463e0bc2e6adc1c7dfe5d74ab81bd2e9ca767be8 100644
--- a/mk/target.mk
+++ b/mk/target.mk
@@ -324,6 +324,23 @@ endef
 endif # $(filter...
 endif
 
+#
+# Remove local symbols from library objects if requested.
+#
+
+ifneq "$(StripLibraries)" ""
+ifneq "$(filter -split-objs,$(HC_OPTS))" ""
+SRC_HC_POST_OPTS += \
+  for i in $(basename $@)/*; do \
+	ld -r -x -o $$i.tmp $$i; \
+	$(MV) $$i.tmp $$i; \
+  done
+else
+SRC_HC_POST_OPTS += \
+  ld -r -x -o $@.tmp; $(MV) $@.tmp $@
+endif
+endif
+
 $(LIBRARY) :: $(LIBOBJS)
 	$(BUILD_LIB)
 endif