diff --git a/tools/load-foreign.csh b/tools/load-foreign.csh
index bcc7ceceb0fe69cf80d9c4630098be507df5b95f..0e8498ffa7042e955a35431f5201626da6bd40e6 100755
--- a/tools/load-foreign.csh
+++ b/tools/load-foreign.csh
@@ -13,8 +13,14 @@ switch ( `uname` )
    breaksw
 
  case FreeBSD:
- case NetBSD:
+   ld -shared -R $argv[1] -Ttext $argv[2] -o $argv[3] $argv[5-]
+   if ($status != 0) exit 1
 
+   nm -gp $argv[3] > $argv[4]
+   if ($status != 0) exit 2
+   breaksw
+
+ case NetBSD:
    ld -N -R $argv[1] -Ttext $argv[2] -o $argv[3] $argv[5-]
    if ($status != 0) exit 1