diff --git a/bin/smartlink b/bin/smartlink
index a8f712c455bc61183027a54db868ed7020720518..4c2f494443cb9060f15c244a9474981503787a1f 100755
--- a/bin/smartlink
+++ b/bin/smartlink
@@ -108,6 +108,11 @@ if test x$# != x0 ; then
   esac
 fi
 
+if test "x$NO_ULIMIT" = "x"; then
+  # Limit virtual memory usage to 64MB.
+  ulimit -v 65536 >/dev/null 2>&1
+fi
+
 # Used to be exec, but Digital-Unix's stupid sh has buggy variable-expansion.
 # /grubba
 eval $LINKER $LDOPTS