about summary refs log tree commit diff stats
path: root/ntranslate
diff options
context:
space:
mode:
authorKartik Agaram <vc@akkartik.com>2019-11-18 12:50:01 -0800
committerKartik Agaram <vc@akkartik.com>2019-11-18 12:50:01 -0800
commit6488bfcf851023e1b8e84be6ebbb793f895f3d0f (patch)
tree6e279f6850a7f9c0ccf77c1d6549892c8d5fffb9 /ntranslate
parent442fdabe305fa35bf1649a072b9a7b3b87cd50e9 (diff)
downloadmu-6488bfcf851023e1b8e84be6ebbb793f895f3d0f.tar.gz
5753
Binaries are now identical again.
There's a little hack here that we should clean up at some point. But it
requires more thought.

Ordering compiler phases is hard. So far we're only at the start of the
slippery slope into that abyss.
Diffstat (limited to 'ntranslate')
-rwxr-xr-xntranslate19
1 files changed, 16 insertions, 3 deletions
diff --git a/ntranslate b/ntranslate
index 9b8eb28c..e1c6f99b 100755
--- a/ntranslate
+++ b/ntranslate
@@ -27,11 +27,24 @@ cat a.calls     |apps/sigils   > a.sigils
 
 cat a.sigils    |apps/tests    > a.tests
 
-cat a.tests     |apps/dquotes  > a.dquotes
+cat a.tests     |apps/assort   > a.assort
 
-cat a.dquotes   |apps/assort   > a.assort
+cat a.assort    |apps/dquotes  > a.dquotes
 
-cat a.assort    |apps/pack     > a.pack
+# A little hack. We want ntranslate to always emit identical binaries to the
+# C++ translator. The C++ translator assorts segments before it processes
+# string literals, so we follow the same order above.
+#
+# However, dquotes currently emits a separate data segment for string literals.
+# So we need to run assort a second time to clean up after it.
+#
+# Potential solutions:
+#   a) modify C++ translator to process string literals before assorting.
+#   b) clean up dquotes to assume assorted segments, and append to the
+#   existing data segment.
+cat a.dquotes   |apps/assort   > a.assort2
+
+cat a.assort2   |apps/pack     > a.pack
 
 cat a.pack      |apps/survey   > a.survey