diff options
Diffstat (limited to 'linux/translate_subx_debug')
-rwxr-xr-x | linux/translate_subx_debug | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/linux/translate_subx_debug b/linux/translate_subx_debug new file mode 100755 index 00000000..e18eca31 --- /dev/null +++ b/linux/translate_subx_debug @@ -0,0 +1,30 @@ +#!/bin/sh +# Translate given SubX files with debug information on Linux. +# +# Mu provides 3 canonical ways to translate unsafe SubX programs: +# 0. The C++ translator 'bootstrap translate' can generate traces for +# debugging on Linux or BSD or Mac, but doesn't support any syntax sugar. +# 1. The self-hosted translator can be run natively on Linux using +# 'translate_subx'. It is fast and supports all syntax sugar, but you get no +# trace for debugging. +# 2. The self-hosted translator can be run emulated on Linux or BSD or Mac +# using 'translate_subx_emulated'. It supports all syntax sugar. However, it +# can be slow if you generate traces. +# +# This script fills in the gap above by stitching together aspects from +# multiple approaches. It translates syntax sugar natively, but emulates lower +# levels using the C++ translator. The result is complete and relatively fast +# even when generating traces. +# +# The cost: it needs Linux. There is no script to generate traces while +# running emulated on BSD or Mac. That's often impractically slow. + +set -e + +cat $* |./braces > a.braces +cat a.braces |./calls > a.calls +cat a.calls |./sigils > a.sigils + +bootstrap/bootstrap --debug translate a.sigils -o a.elf + +chmod +x a.elf |