The unified diff between revisions [04aa5b48..] and [8482057d..] is displayed below. It can also be downloaded as a raw diff.

#
# old_revision [04aa5b488cdcfccafef4ba9d99749b84e1b76083]
# new_revision [8482057dd1a991674bb30b63b9397a3c5d069df9]
#
# patch "src/lsi/makeabi"
#  from [007086efc8065fc0857d86ae0fac503e708cb961]
#    to [af04da9852be189b121ae5a7e48a4664afc10c7d]
#
============================================================
--- src/lsi/makeabi	007086efc8065fc0857d86ae0fac503e708cb961
+++ src/lsi/makeabi	af04da9852be189b121ae5a7e48a4664afc10c7d
@@ -8,9 +8,26 @@ fi
 	exit 1
 fi
 
+if [ ! -f "${INFILE}" ]
+then
+	echo "$0: ${INFILE}: not found"
+	exit 1
+fi
+
 ABI=abi.c
 HEADER=abi.lh
 
+
+# This is pretty evil. We use sed to produce shell commands which set
+# variables which contain 8-character chunks of the sha1 hash.
+# eval takes care of defining them in the current shell, rather than in
+# a subshell.
+for VER in `sha1 -n ${INFILE} | sed 's/\(........\)\(........\)\(........\)\(........\)\(........\).*$/ABIVER1=\1 ABIVER2=\2 ABIVER3=\3 ABIVER4=\4 ABIVER5=\5/'`
+do
+	eval ${VER}
+done
+
+
 FNCOUNT=0
 
 do_function()
@@ -26,6 +43,12 @@ cat <<EOF >${ABI}
 
 #include "abi.h"
 
+const long vm_abiversion1 = 0x${ABIVER1};
+const long vm_abiversion2 = 0x${ABIVER2};
+const long vm_abiversion3 = 0x${ABIVER3};
+const long vm_abiversion4 = 0x${ABIVER4};
+const long vm_abiversion5 = 0x${ABIVER5};
+
 vm_intfn vm_intfn_table[] = {
 EOF
 
@@ -33,6 +56,12 @@ cat <<EOF >${HEADER}
 /* abi.lh */
 /* autogenerated - do not edit */
 
+constant __abiversion1 0x${ABIVER1};
+constant __abiversion2 0x${ABIVER2};
+constant __abiversion3 0x${ABIVER3};
+constant __abiversion4 0x${ABIVER4};
+constant __abiversion5 0x${ABIVER5};
+
 EOF
 
 while read TYPE ARG1 ARG2