about summary refs log tree commit diff stats
path: root/html/subx/028translate.cc.html
diff options
context:
space:
mode:
authorKartik Agaram <vc@akkartik.com>2019-03-29 00:47:30 -0700
committerKartik Agaram <vc@akkartik.com>2019-03-29 00:47:30 -0700
commit9c1056f531217f3c1c12b3b3a648ca1cffe4beab (patch)
tree0e5a0bd0619e481470be58c11805434c630d996b /html/subx/028translate.cc.html
parentd689ac180ad47222aa59944d42c1e26e7b2423c6 (diff)
downloadmu-9c1056f531217f3c1c12b3b3a648ca1cffe4beab.tar.gz
5033
Diffstat (limited to 'html/subx/028translate.cc.html')
-rw-r--r--html/subx/028translate.cc.html63
1 files changed, 32 insertions, 31 deletions
diff --git a/html/subx/028translate.cc.html b/html/subx/028translate.cc.html
index 4f340449..0788458f 100644
--- a/html/subx/028translate.cc.html
+++ b/html/subx/028translate.cc.html
@@ -14,11 +14,12 @@ pre { white-space: pre-wrap; font-family: monospace; color: #000000; background-
 body { font-size:12pt; font-family: monospace; color: #000000; background-color: #c6c6c6; }
 a { color:inherit; }
 * { font-size:12pt; font-size: 1em; }
+.PreProc { color: #c000c0; }
 .LineNr { }
 .Constant { color: #008787; }
-.Special { color: #d70000; }
-.Delimiter { color: #c000c0; }
 .SalientComment { color: #0000af; }
+.Delimiter { color: #c000c0; }
+.Special { color: #d70000; }
 .Identifier { color: #af5f00; }
 .Normal { color: #000000; background-color: #c6c6c6; padding-bottom: 1px; }
 .Comment { color: #005faf; }
@@ -78,10 +79,10 @@ if ('onhashchange' in window) {
 <span id="L18" class="LineNr"> 18 </span>
 <span id="L19" class="LineNr"> 19 </span><span class="Delimiter">:(before &quot;End Main&quot;)</span>
 <span id="L20" class="LineNr"> 20 </span><span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L98'>is_equal</a><span class="Delimiter">(</span>argv[<span class="Constant">1</span>]<span class="Delimiter">,</span> <span class="Constant">&quot;translate&quot;</span><span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L21" class="LineNr"> 21 </span>  <a href='003trace.cc.html#L197'>START_TRACING_UNTIL_END_OF_SCOPE</a><span class="Delimiter">;</span>
+<span id="L21" class="LineNr"> 21 </span>  <a href='003trace.cc.html#L182'>START_TRACING_UNTIL_END_OF_SCOPE</a><span class="Delimiter">;</span>
 <span id="L22" class="LineNr"> 22 </span>  <a href='000organization.cc.html#L148'>reset</a><span class="Delimiter">();</span>
 <span id="L23" class="LineNr"> 23 </span>  <span class="Comment">// Begin subx translate</span>
-<span id="L24" class="LineNr"> 24 </span>  <a href='011run.cc.html#L95'>program</a> p<span class="Delimiter">;</span>
+<span id="L24" class="LineNr"> 24 </span>  <a href='011run.cc.html#L102'>program</a> p<span class="Delimiter">;</span>
 <span id="L25" class="LineNr"> 25 </span>  string output_filename<span class="Delimiter">;</span>
 <span id="L26" class="LineNr"> 26 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Comment">/*</span><span class="Comment">skip 'subx translate'</span><span class="Comment">*/</span><span class="Constant">2</span><span class="Delimiter">;</span>  i &lt; argc<span class="Delimiter">;</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L27" class="LineNr"> 27 </span>    <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L98'>is_equal</a><span class="Delimiter">(</span>argv[i]<span class="Delimiter">,</span> <span class="Constant">&quot;-o&quot;</span><span class="Delimiter">))</span> <span class="Delimiter">{</span>
@@ -94,17 +95,17 @@ if ('onhashchange' in window) {
 <span id="L34" class="LineNr"> 34 </span>      output_filename = argv[i]<span class="Delimiter">;</span>
 <span id="L35" class="LineNr"> 35 </span>    <span class="Delimiter">}</span>
 <span id="L36" class="LineNr"> 36 </span>    <span class="Normal">else</span> <span class="Delimiter">{</span>
-<span id="L37" class="LineNr"> 37 </span>      <a href='003trace.cc.html#L98'>trace</a><span class="Delimiter">(</span><span class="Constant">2</span><span class="Delimiter">,</span> <span class="Constant">&quot;parse&quot;</span><span class="Delimiter">)</span> &lt;&lt; argv[i] &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L37" class="LineNr"> 37 </span>      <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Constant">2</span><span class="Delimiter">,</span> <span class="Constant">&quot;parse&quot;</span><span class="Delimiter">)</span> &lt;&lt; argv[i] &lt;&lt; end<span class="Delimiter">();</span>
 <span id="L38" class="LineNr"> 38 </span>      ifstream fin<span class="Delimiter">(</span>argv[i]<span class="Delimiter">);</span>
 <span id="L39" class="LineNr"> 39 </span>      <span class="Normal">if</span> <span class="Delimiter">(</span>!fin<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L40" class="LineNr"> 40 </span>        cerr &lt;&lt; <span class="Constant">&quot;could not open &quot;</span> &lt;&lt; argv[i] &lt;&lt; <span class="cSpecial">'\n'</span><span class="Delimiter">;</span>
 <span id="L41" class="LineNr"> 41 </span>        <span class="Identifier">return</span> <span class="Constant">1</span><span class="Delimiter">;</span>
 <span id="L42" class="LineNr"> 42 </span>      <span class="Delimiter">}</span>
 <span id="L43" class="LineNr"> 43 </span>      parse<span class="Delimiter">(</span>fin<span class="Delimiter">,</span> p<span class="Delimiter">);</span>
-<span id="L44" class="LineNr"> 44 </span>      <span class="Normal">if</span> <span class="Delimiter">(</span><a href='003trace.cc.html#L230'>trace_contains_errors</a><span class="Delimiter">())</span> <span class="Identifier">return</span> <span class="Constant">1</span><span class="Delimiter">;</span>
+<span id="L44" class="LineNr"> 44 </span>      <span class="Normal">if</span> <span class="Delimiter">(</span><a href='003trace.cc.html#L238'>trace_contains_errors</a><span class="Delimiter">())</span> <span class="Identifier">return</span> <span class="Constant">1</span><span class="Delimiter">;</span>
 <span id="L45" class="LineNr"> 45 </span>    <span class="Delimiter">}</span>
 <span id="L46" class="LineNr"> 46 </span>  <span class="Delimiter">}</span>
-<span id="L47" class="LineNr"> 47 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>p<span class="Delimiter">.</span><a href='011run.cc.html#L96'>segments</a><span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
+<span id="L47" class="LineNr"> 47 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>p<span class="Delimiter">.</span><a href='011run.cc.html#L103'>segments</a><span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
 <span id="L48" class="LineNr"> 48 </span>    <a href='028translate.cc.html#L71'>print_translate_usage</a><span class="Delimiter">();</span>
 <span id="L49" class="LineNr"> 49 </span>    cerr &lt;&lt; <span class="Constant">&quot;nothing to do; must provide at least one file to read\n&quot;</span><span class="Delimiter">;</span>
 <span id="L50" class="LineNr"> 50 </span>    exit<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">);</span>
@@ -114,12 +115,12 @@ if ('onhashchange' in window) {
 <span id="L54" class="LineNr"> 54 </span>    cerr &lt;&lt; <span class="Constant">&quot;must provide a filename to write to using '-o'\n&quot;</span><span class="Delimiter">;</span>
 <span id="L55" class="LineNr"> 55 </span>    exit<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">);</span>
 <span id="L56" class="LineNr"> 56 </span>  <span class="Delimiter">}</span>
-<span id="L57" class="LineNr"> 57 </span>  <a href='003trace.cc.html#L98'>trace</a><span class="Delimiter">(</span><span class="Constant">2</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;begin&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L58" class="LineNr"> 58 </span>  <a href='011run.cc.html#L227'>transform</a><span class="Delimiter">(</span>p<span class="Delimiter">);</span>
-<span id="L59" class="LineNr"> 59 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='003trace.cc.html#L230'>trace_contains_errors</a><span class="Delimiter">())</span> <span class="Identifier">return</span> <span class="Constant">1</span><span class="Delimiter">;</span>
-<span id="L60" class="LineNr"> 60 </span>  <a href='003trace.cc.html#L98'>trace</a><span class="Delimiter">(</span><span class="Constant">2</span><span class="Delimiter">,</span> <span class="Constant">&quot;translate&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;begin&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L57" class="LineNr"> 57 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Constant">2</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;begin&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L58" class="LineNr"> 58 </span>  transform<span class="Delimiter">(</span>p<span class="Delimiter">);</span>
+<span id="L59" class="LineNr"> 59 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='003trace.cc.html#L238'>trace_contains_errors</a><span class="Delimiter">())</span> <span class="Identifier">return</span> <span class="Constant">1</span><span class="Delimiter">;</span>
+<span id="L60" class="LineNr"> 60 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Constant">2</span><span class="Delimiter">,</span> <span class="Constant">&quot;translate&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;begin&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
 <span id="L61" class="LineNr"> 61 </span>  <a href='028translate.cc.html#L76'>save_elf</a><span class="Delimiter">(</span>p<span class="Delimiter">,</span> output_filename<span class="Delimiter">);</span>
-<span id="L62" class="LineNr"> 62 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='003trace.cc.html#L230'>trace_contains_errors</a><span class="Delimiter">())</span> <span class="Delimiter">{</span>
+<span id="L62" class="LineNr"> 62 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='003trace.cc.html#L238'>trace_contains_errors</a><span class="Delimiter">())</span> <span class="Delimiter">{</span>
 <span id="L63" class="LineNr"> 63 </span>    unlink<span class="Delimiter">(</span>output_filename<span class="Delimiter">.</span>c_str<span class="Delimiter">());</span>
 <span id="L64" class="LineNr"> 64 </span>    <span class="Identifier">return</span> <span class="Constant">1</span><span class="Delimiter">;</span>
 <span id="L65" class="LineNr"> 65 </span>  <span class="Delimiter">}</span>
@@ -136,16 +137,16 @@ if ('onhashchange' in window) {
 <span id="L76" class="LineNr"> 76 </span><span class="Normal">void</span> <a href='028translate.cc.html#L76'>save_elf</a><span class="Delimiter">(</span><span class="Normal">const</span> program&amp; p<span class="Delimiter">,</span> <span class="Normal">const</span> string&amp; filename<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L77" class="LineNr"> 77 </span>  ofstream out<span class="Delimiter">(</span>filename<span class="Delimiter">.</span>c_str<span class="Delimiter">(),</span> ios::binary<span class="Delimiter">);</span>
 <span id="L78" class="LineNr"> 78 </span>  <a href='028translate.cc.html#L84'>write_elf_header</a><span class="Delimiter">(</span>out<span class="Delimiter">,</span> p<span class="Delimiter">);</span>
-<span id="L79" class="LineNr"> 79 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">size_t</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; p<span class="Delimiter">.</span><a href='011run.cc.html#L96'>segments</a><span class="Delimiter">.</span>size<span class="Delimiter">();</span>  ++i<span class="Delimiter">)</span>
-<span id="L80" class="LineNr"> 80 </span>    <a href='028translate.cc.html#L179'>write_segment</a><span class="Delimiter">(</span>p<span class="Delimiter">.</span><a href='011run.cc.html#L96'>segments</a><span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> out<span class="Delimiter">);</span>
+<span id="L79" class="LineNr"> 79 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">size_t</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; p<span class="Delimiter">.</span><a href='011run.cc.html#L103'>segments</a><span class="Delimiter">.</span>size<span class="Delimiter">();</span>  ++i<span class="Delimiter">)</span>
+<span id="L80" class="LineNr"> 80 </span>    <a href='028translate.cc.html#L179'>write_segment</a><span class="Delimiter">(</span>p<span class="Delimiter">.</span><a href='011run.cc.html#L103'>segments</a><span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> out<span class="Delimiter">);</span>
 <span id="L81" class="LineNr"> 81 </span>  out<span class="Delimiter">.</span>close<span class="Delimiter">();</span>
 <span id="L82" class="LineNr"> 82 </span><span class="Delimiter">}</span>
 <span id="L83" class="LineNr"> 83 </span>
 <span id="L84" class="LineNr"> 84 </span><span class="Normal">void</span> <a href='028translate.cc.html#L84'>write_elf_header</a><span class="Delimiter">(</span>ostream&amp; out<span class="Delimiter">,</span> <span class="Normal">const</span> program&amp; p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L85" class="LineNr"> 85 </span>  <span class="Normal">char</span> c = <span class="cSpecial">'\0'</span><span class="Delimiter">;</span>
-<span id="L86" class="LineNr"> 86 </span><span class="Comment">#define O(X)  c = (X); out.write(&amp;c, sizeof(c))</span>
+<span id="L86" class="LineNr"> 86 </span><span class="PreProc">#define </span><span class="Special">O</span><span class="PreProc">(</span><span class="Special">X</span><span class="PreProc">)  c = (</span><span class="Special">X</span><span class="PreProc">)</span><span class="Delimiter">;</span><span class="PreProc"> out</span><span class="Delimiter">.</span><span class="PreProc">write(&amp;c</span><span class="Delimiter">,</span><span class="PreProc"> </span><span class="Normal">sizeof</span><span class="PreProc">(c))</span>
 <span id="L87" class="LineNr"> 87 </span><span class="Comment">// host is required to be little-endian</span>
-<span id="L88" class="LineNr"> 88 </span><span class="Comment">#define emit(X)  out.write(reinterpret_cast&lt;const char*&gt;(&amp;X), sizeof(X))</span>
+<span id="L88" class="LineNr"> 88 </span><span class="PreProc">#define emit(</span><span class="Special">X</span><span class="PreProc">)  out</span><span class="Delimiter">.</span><span class="PreProc">write(</span><span class="Normal">reinterpret_cast</span><span class="PreProc">&lt;</span><span class="Normal">const</span><span class="PreProc"> </span><span class="Normal">char</span><span class="PreProc">*&gt;(&amp;</span><span class="Special">X</span><span class="PreProc">)</span><span class="Delimiter">,</span><span class="PreProc"> </span><span class="Normal">sizeof</span><span class="PreProc">(</span><span class="Special">X</span><span class="PreProc">))</span>
 <span id="L89" class="LineNr"> 89 </span>  <span class="SalientComment">//// ehdr</span>
 <span id="L90" class="LineNr"> 90 </span>  <span class="Comment">// e_ident</span>
 <span id="L91" class="LineNr"> 91 </span>  <span class="Special">O</span><span class="Delimiter">(</span><span class="Constant">0x7f</span><span class="Delimiter">);</span> <span class="Special">O</span><span class="Delimiter">(</span><span class="Comment">/*</span><span class="Comment">E</span><span class="Comment">*/</span><span class="Constant">0x45</span><span class="Delimiter">);</span> <span class="Special">O</span><span class="Delimiter">(</span><span class="Comment">/*</span><span class="Comment">L</span><span class="Comment">*/</span><span class="Constant">0x4c</span><span class="Delimiter">);</span> <span class="Special">O</span><span class="Delimiter">(</span><span class="Comment">/*</span><span class="Comment">F</span><span class="Comment">*/</span><span class="Constant">0x46</span><span class="Delimiter">);</span>
@@ -160,9 +161,9 @@ if ('onhashchange' in window) {
 <span id="L100" class="LineNr">100 </span>  <span class="Comment">// e_version</span>
 <span id="L101" class="LineNr">101 </span>  <span class="Special">O</span><span class="Delimiter">(</span><span class="Constant">0x01</span><span class="Delimiter">);</span> <span class="Special">O</span><span class="Delimiter">(</span><span class="Constant">0x00</span><span class="Delimiter">);</span> <span class="Special">O</span><span class="Delimiter">(</span><span class="Constant">0x00</span><span class="Delimiter">);</span> <span class="Special">O</span><span class="Delimiter">(</span><span class="Constant">0x00</span><span class="Delimiter">);</span>
 <span id="L102" class="LineNr">102 </span>  <span class="Comment">// e_entry</span>
-<span id="L103" class="LineNr">103 </span>  <span class="Normal">uint32_t</span> <a href='035labels.cc.html#L39'>e_entry</a> = p<span class="Delimiter">.</span><a href='011run.cc.html#L96'>segments</a><span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>start<span class="Delimiter">;</span>  <span class="Comment">// convention</span>
+<span id="L103" class="LineNr">103 </span>  <span class="Normal">uint32_t</span> <a href='035labels.cc.html#L44'>e_entry</a> = p<span class="Delimiter">.</span><a href='011run.cc.html#L103'>segments</a><span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>start<span class="Delimiter">;</span>  <span class="Comment">// convention</span>
 <span id="L104" class="LineNr">104 </span>  <span class="Comment">// Override e_entry</span>
-<span id="L105" class="LineNr">105 </span>  emit<span class="Delimiter">(</span><a href='035labels.cc.html#L39'>e_entry</a><span class="Delimiter">);</span>
+<span id="L105" class="LineNr">105 </span>  emit<span class="Delimiter">(</span><a href='035labels.cc.html#L44'>e_entry</a><span class="Delimiter">);</span>
 <span id="L106" class="LineNr">106 </span>  <span class="Comment">// e_phoff -- immediately after ELF header</span>
 <span id="L107" class="LineNr">107 </span>  <span class="Normal">uint32_t</span> e_phoff = <span class="Constant">0x34</span><span class="Delimiter">;</span>
 <span id="L108" class="LineNr">108 </span>  emit<span class="Delimiter">(</span>e_phoff<span class="Delimiter">);</span>
@@ -178,7 +179,7 @@ if ('onhashchange' in window) {
 <span id="L118" class="LineNr">118 </span>  <span class="Normal">uint16_t</span> e_phentsize = <span class="Constant">0x20</span><span class="Delimiter">;</span>
 <span id="L119" class="LineNr">119 </span>  emit<span class="Delimiter">(</span>e_phentsize<span class="Delimiter">);</span>
 <span id="L120" class="LineNr">120 </span>  <span class="Comment">// e_phnum</span>
-<span id="L121" class="LineNr">121 </span>  <span class="Normal">uint16_t</span> e_phnum = <a href='001help.cc.html#L166'>SIZE</a><span class="Delimiter">(</span>p<span class="Delimiter">.</span><a href='011run.cc.html#L96'>segments</a><span class="Delimiter">);</span>
+<span id="L121" class="LineNr">121 </span>  <span class="Normal">uint16_t</span> e_phnum = <a href='001help.cc.html#L166'>SIZE</a><span class="Delimiter">(</span>p<span class="Delimiter">.</span><a href='011run.cc.html#L103'>segments</a><span class="Delimiter">);</span>
 <span id="L122" class="LineNr">122 </span>  emit<span class="Delimiter">(</span>e_phnum<span class="Delimiter">);</span>
 <span id="L123" class="LineNr">123 </span>  <span class="Comment">// e_shentsize</span>
 <span id="L124" class="LineNr">124 </span>  <span class="Normal">uint16_t</span> dummy16 = <span class="Constant">0x0</span><span class="Delimiter">;</span>
@@ -188,8 +189,8 @@ if ('onhashchange' in window) {
 <span id="L128" class="LineNr">128 </span>  <span class="Comment">// e_shstrndx</span>
 <span id="L129" class="LineNr">129 </span>  emit<span class="Delimiter">(</span>dummy16<span class="Delimiter">);</span>
 <span id="L130" class="LineNr">130 </span>
-<span id="L131" class="LineNr">131 </span>  <span class="Normal">uint32_t</span> p_offset = <span class="Comment">/*</span><span class="Comment">size of ehdr</span><span class="Comment">*/</span><span class="Constant">0x34</span> + <a href='001help.cc.html#L166'>SIZE</a><span class="Delimiter">(</span>p<span class="Delimiter">.</span><a href='011run.cc.html#L96'>segments</a><span class="Delimiter">)</span>*<span class="Constant">0x20</span><span class="Comment">/*</span><span class="Comment">size of each phdr</span><span class="Comment">*/</span><span class="Delimiter">;</span>
-<span id="L132" class="LineNr">132 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L166'>SIZE</a><span class="Delimiter">(</span>p<span class="Delimiter">.</span><a href='011run.cc.html#L96'>segments</a><span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L131" class="LineNr">131 </span>  <span class="Normal">uint32_t</span> p_offset = <span class="Comment">/*</span><span class="Comment">size of ehdr</span><span class="Comment">*/</span><span class="Constant">0x34</span> + <a href='001help.cc.html#L166'>SIZE</a><span class="Delimiter">(</span>p<span class="Delimiter">.</span><a href='011run.cc.html#L103'>segments</a><span class="Delimiter">)</span>*<span class="Constant">0x20</span><span class="Comment">/*</span><span class="Comment">size of each phdr</span><span class="Comment">*/</span><span class="Delimiter">;</span>
+<span id="L132" class="LineNr">132 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L166'>SIZE</a><span class="Delimiter">(</span>p<span class="Delimiter">.</span><a href='011run.cc.html#L103'>segments</a><span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L133" class="LineNr">133 </span>    <span class="SalientComment">//// phdr</span>
 <span id="L134" class="LineNr">134 </span>    <span class="Comment">// p_type</span>
 <span id="L135" class="LineNr">135 </span>    <span class="Normal">uint32_t</span> p_type = <span class="Constant">0x1</span><span class="Delimiter">;</span>
@@ -197,12 +198,12 @@ if ('onhashchange' in window) {
 <span id="L137" class="LineNr">137 </span>    <span class="Comment">// p_offset</span>
 <span id="L138" class="LineNr">138 </span>    emit<span class="Delimiter">(</span>p_offset<span class="Delimiter">);</span>
 <span id="L139" class="LineNr">139 </span>    <span class="Comment">// p_vaddr</span>
-<span id="L140" class="LineNr">140 </span>    <span class="Normal">uint32_t</span> p_start = p<span class="Delimiter">.</span><a href='011run.cc.html#L96'>segments</a><span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>start<span class="Delimiter">;</span>
+<span id="L140" class="LineNr">140 </span>    <span class="Normal">uint32_t</span> p_start = p<span class="Delimiter">.</span><a href='011run.cc.html#L103'>segments</a><span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span>start<span class="Delimiter">;</span>
 <span id="L141" class="LineNr">141 </span>    emit<span class="Delimiter">(</span>p_start<span class="Delimiter">);</span>
 <span id="L142" class="LineNr">142 </span>    <span class="Comment">// p_paddr</span>
 <span id="L143" class="LineNr">143 </span>    emit<span class="Delimiter">(</span>p_start<span class="Delimiter">);</span>
 <span id="L144" class="LineNr">144 </span>    <span class="Comment">// p_filesz</span>
-<span id="L145" class="LineNr">145 </span>    <span class="Normal">uint32_t</span> size = <a href='028translate.cc.html#L189'>num_words</a><span class="Delimiter">(</span>p<span class="Delimiter">.</span><a href='011run.cc.html#L96'>segments</a><span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">));</span>
+<span id="L145" class="LineNr">145 </span>    <span class="Normal">uint32_t</span> size = <a href='028translate.cc.html#L189'>num_words</a><span class="Delimiter">(</span>p<span class="Delimiter">.</span><a href='011run.cc.html#L103'>segments</a><span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">));</span>
 <span id="L146" class="LineNr">146 </span>    assert<span class="Delimiter">(</span>p_offset + size &lt; <a href='010---vm.cc.html#L115'>SEGMENT_ALIGNMENT</a><span class="Delimiter">);</span>
 <span id="L147" class="LineNr">147 </span>    emit<span class="Delimiter">(</span>size<span class="Delimiter">);</span>
 <span id="L148" class="LineNr">148 </span>    <span class="Comment">// p_memsz</span>
@@ -225,22 +226,22 @@ if ('onhashchange' in window) {
 <span id="L165" class="LineNr">165 </span>    <span class="Normal">uint32_t</span> p_align = <span class="Constant">0x1000</span><span class="Delimiter">;</span>  <span class="Comment">// default page size on linux</span>
 <span id="L166" class="LineNr">166 </span>    emit<span class="Delimiter">(</span>p_align<span class="Delimiter">);</span>
 <span id="L167" class="LineNr">167 </span>    <span class="Normal">if</span> <span class="Delimiter">(</span>p_offset % p_align != p_start % p_align<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L168" class="LineNr">168 </span>      <a href='003trace.cc.html#L217'>raise</a> &lt;&lt; <span class="Constant">&quot;segment starting at 0x&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L433'>HEXWORD</a> &lt;&lt; p_start &lt;&lt; <span class="Constant">&quot; is improperly aligned; alignment for p_offset &quot;</span> &lt;&lt; p_offset &lt;&lt; <span class="Constant">&quot; should be &quot;</span> &lt;&lt; <span class="Delimiter">(</span>p_offset % p_align<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; but is &quot;</span> &lt;&lt; <span class="Delimiter">(</span>p_start % p_align<span class="Delimiter">)</span> &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L168" class="LineNr">168 </span>      <a href='003trace.cc.html#L202'>raise</a> &lt;&lt; <span class="Constant">&quot;segment starting at 0x&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L440'>HEXWORD</a> &lt;&lt; p_start &lt;&lt; <span class="Constant">&quot; is improperly aligned; alignment for p_offset &quot;</span> &lt;&lt; p_offset &lt;&lt; <span class="Constant">&quot; should be &quot;</span> &lt;&lt; <span class="Delimiter">(</span>p_offset % p_align<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; but is &quot;</span> &lt;&lt; <span class="Delimiter">(</span>p_start % p_align<span class="Delimiter">)</span> &lt;&lt; <span class="cSpecial">'\n'</span> &lt;&lt; end<span class="Delimiter">();</span>
 <span id="L169" class="LineNr">169 </span>      <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L170" class="LineNr">170 </span>    <span class="Delimiter">}</span>
 <span id="L171" class="LineNr">171 </span>
 <span id="L172" class="LineNr">172 </span>    <span class="Comment">// prepare for next segment</span>
 <span id="L173" class="LineNr">173 </span>    p_offset += size<span class="Delimiter">;</span>
 <span id="L174" class="LineNr">174 </span>  <span class="Delimiter">}</span>
-<span id="L175" class="LineNr">175 </span><span class="Comment">#undef O</span>
-<span id="L176" class="LineNr">176 </span><span class="Comment">#undef emit</span>
+<span id="L175" class="LineNr">175 </span><span class="PreProc">#undef </span><span class="Special">O</span>
+<span id="L176" class="LineNr">176 </span><span class="PreProc">#undef emit</span>
 <span id="L177" class="LineNr">177 </span><span class="Delimiter">}</span>
 <span id="L178" class="LineNr">178 </span>
 <span id="L179" class="LineNr">179 </span><span class="Normal">void</span> <a href='028translate.cc.html#L179'>write_segment</a><span class="Delimiter">(</span><span class="Normal">const</span> segment&amp; s<span class="Delimiter">,</span> ostream&amp; out<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L180" class="LineNr">180 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L166'>SIZE</a><span class="Delimiter">(</span>s<span class="Delimiter">.</span><a href='011run.cc.html#L105'>lines</a><span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L181" class="LineNr">181 </span>    <span class="Normal">const</span> vector&lt;word&gt;&amp; w = s<span class="Delimiter">.</span><a href='011run.cc.html#L105'>lines</a><span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span><a href='011run.cc.html#L114'>words</a><span class="Delimiter">;</span>
+<span id="L180" class="LineNr">180 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L166'>SIZE</a><span class="Delimiter">(</span>s<span class="Delimiter">.</span><a href='011run.cc.html#L112'>lines</a><span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L181" class="LineNr">181 </span>    <span class="Normal">const</span> vector&lt;word&gt;&amp; w = s<span class="Delimiter">.</span><a href='011run.cc.html#L112'>lines</a><span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span><a href='011run.cc.html#L121'>words</a><span class="Delimiter">;</span>
 <span id="L182" class="LineNr">182 </span>    <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> j = <span class="Constant">0</span><span class="Delimiter">;</span>  j &lt; <a href='001help.cc.html#L166'>SIZE</a><span class="Delimiter">(</span>w<span class="Delimiter">);</span>  ++j<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L183" class="LineNr">183 </span>      <span class="Normal">uint8_t</span> x = <a href='011run.cc.html#L266'>hex_byte</a><span class="Delimiter">(</span>w<span class="Delimiter">.</span>at<span class="Delimiter">(</span>j<span class="Delimiter">).</span>data<span class="Delimiter">);</span>  <span class="Comment">// we're done with metadata by this point</span>
+<span id="L183" class="LineNr">183 </span>      <span class="Normal">uint8_t</span> x = <a href='011run.cc.html#L277'>hex_byte</a><span class="Delimiter">(</span>w<span class="Delimiter">.</span>at<span class="Delimiter">(</span>j<span class="Delimiter">).</span>data<span class="Delimiter">);</span>  <span class="Comment">// we're done with metadata by this point</span>
 <span id="L184" class="LineNr">184 </span>      out<span class="Delimiter">.</span>write<span class="Delimiter">(</span><span class="Normal">reinterpret_cast</span>&lt;<span class="Normal">const</span> <span class="Normal">char</span>*&gt;<span class="Delimiter">(</span>&amp;x<span class="Delimiter">),</span> <span class="Comment">/*</span><span class="Comment">sizeof(byte)</span><span class="Comment">*/</span><span class="Constant">1</span><span class="Delimiter">);</span>
 <span id="L185" class="LineNr">185 </span>    <span class="Delimiter">}</span>
 <span id="L186" class="LineNr">186 </span>  <span class="Delimiter">}</span>
@@ -248,8 +249,8 @@ if ('onhashchange' in window) {
 <span id="L188" class="LineNr">188 </span>
 <span id="L189" class="LineNr">189 </span><span class="Normal">uint32_t</span> <a href='028translate.cc.html#L189'>num_words</a><span class="Delimiter">(</span><span class="Normal">const</span> segment&amp; s<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L190" class="LineNr">190 </span>  <span class="Normal">uint32_t</span> sum = <span class="Constant">0</span><span class="Delimiter">;</span>
-<span id="L191" class="LineNr">191 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L166'>SIZE</a><span class="Delimiter">(</span>s<span class="Delimiter">.</span><a href='011run.cc.html#L105'>lines</a><span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
-<span id="L192" class="LineNr">192 </span>    sum += <a href='001help.cc.html#L166'>SIZE</a><span class="Delimiter">(</span>s<span class="Delimiter">.</span><a href='011run.cc.html#L105'>lines</a><span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span><a href='011run.cc.html#L114'>words</a><span class="Delimiter">);</span>
+<span id="L191" class="LineNr">191 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L166'>SIZE</a><span class="Delimiter">(</span>s<span class="Delimiter">.</span><a href='011run.cc.html#L112'>lines</a><span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span>
+<span id="L192" class="LineNr">192 </span>    sum += <a href='001help.cc.html#L166'>SIZE</a><span class="Delimiter">(</span>s<span class="Delimiter">.</span><a href='011run.cc.html#L112'>lines</a><span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">).</span><a href='011run.cc.html#L121'>words</a><span class="Delimiter">);</span>
 <span id="L193" class="LineNr">193 </span>  <span class="Identifier">return</span> sum<span class="Delimiter">;</span>
 <span id="L194" class="LineNr">194 </span><span class="Delimiter">}</span>
 <span id="L195" class="LineNr">195 </span>
>
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163