<html>
<body>
  <div id="body" style="background-color:#ffffff;" >
<table cellspacing="0" cellpadding="0" border="0" rules="cols">
<tr class="head" style="border-bottom-width:1px;border-bottom-style:solid;" ><td class="headtd" style="padding:0;padding-top:.2em;" colspan="4">Commit in <b><tt>lxdream/src</tt></b></td></tr>
<tr><td><tt>sh4/<a href="#file1">sh4x86.in</a></tt></td><td id="added" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ddffdd;" align="right">+8</td><td id="removed" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ffdddd;" align="right">-4</td><td class="headtd2" style="padding-left:.3em;padding-right:.3em;" nowrap="nowrap">186558374345 -> 7c4ffe27e7b5</td></tr>
<tr class="alt" style=";" ><td><tt><a href="#file2">util.c</a></tt></td><td id="addedalt" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ccf7cc;" align="right">+2</td><td></td><td class="headtd2" style="padding-left:.3em;padding-right:.3em;" nowrap="nowrap">186558374345 -> 7c4ffe27e7b5</td></tr>
<tr><td><tt>x86dasm/<a href="#file3">dis-buf.c</a></tt></td><td id="added" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ddffdd;" align="right">+1</td><td id="removed" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ffdddd;" align="right">-7</td><td class="headtd2" style="padding-left:.3em;padding-right:.3em;" nowrap="nowrap">186558374345 -> 7c4ffe27e7b5</td></tr>
<tr class="alt" style=";" ><td><tt>       /<a href="#file4">x86dasm.c</a></tt></td><td></td><td id="removed" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ffdddd;" align="right">-2</td><td class="headtd2" style="padding-left:.3em;padding-right:.3em;" nowrap="nowrap">186558374345 -> 7c4ffe27e7b5</td></tr>
<tr><td></td><td id="added" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ddffdd;" align="right">+11</td><td id="removed" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ffdddd;" align="right">-13</td><td></td></tr>
</table>
<small id="info" style="color: #888888;" >4 modified files</small><br />
<pre class="comment" style="white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;white-space:pre-wrap;word-wrap:break-word;padding:4px;border:1px dashed #000000;background-color:#ffffdd;" >
Fix 64-bit x86 disassembly
Add crash-report hook to SIGILL and SIGBUS
</pre>
<hr /><a name="file1" /><div class="file" style="border:1px solid #eeeeee;margin-top:1em;margin-bottom:1em;" >
<span class="pathname" style="font-family:monospace; float:right;" >lxdream/src/sh4</span><br />
<div class="fileheader" style="margin-bottom:.5em;" ><big><b>sh4x86.in</b></big> <small id="info" style="color: #888888;" >186558374345 -> 7c4ffe27e7b5</small></div>
<pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >--- lxdream/src/sh4/sh4x86.in
+++ lxdream/src/sh4/sh4x86.in
@@ -163,13 +163,17 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >     uint32_t source_pc = source_start;
     uint32_t source_end = source_pc;
     xlat_recovery_record_t source_recov_table = XLAT_RECOVERY_TABLE(code);
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-    xlat_recovery_record_t source_recov_end = source_recov_table + XLAT_BLOCK_FOR_CODE(code)->recover_table_size;
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+    xlat_recovery_record_t source_recov_end = source_recov_table + XLAT_BLOCK_FOR_CODE(code)->recover_table_size<span id="addedchars" style="background-color:#99ff99;font-weight:bolder;" > - 1</span>;
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > 
     for( target_pc = target_start; target_pc < target_end;  ) {
         uintptr_t pc2 = x86_disasm_instruction( target_pc, buf, sizeof(buf), op );
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-        fprintf( out, "%c%08X: %-20s %-40s", (target_pc == (uintptr_t)native_pc ? '*' : ' '),
-                      (unsigned int)target_pc, op, buf );
-        
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+#if SIZEOF_VOID_P == 8
+        fprintf( out, "%c%016lx: %-30s %-40s", (target_pc == (uintptr_t)native_pc ? '*' : ' '),
+                      target_pc, op, buf );
+#else
+        fprintf( out, "%c%08x: %-30s %-40s", (target_pc == (uintptr_t)native_pc ? '*' : ' '),
+                      target_pc, op, buf );
+#endif        
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >         if( source_recov_table < source_recov_end && 
             target_pc >= (target_start + source_recov_table->xlat_offset) ) {
             source_recov_table++;
</pre></div>
<hr /><a name="file2" /><div class="file" style="border:1px solid #eeeeee;margin-top:1em;margin-bottom:1em;" >
<span class="pathname" style="font-family:monospace; float:right;" >lxdream/src</span><br />
<div class="fileheader" style="margin-bottom:.5em;" ><big><b>util.c</b></big> <small id="info" style="color: #888888;" >186558374345 -> 7c4ffe27e7b5</small></div>
<pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >--- lxdream/src/util.c
+++ lxdream/src/util.c
@@ -58,6 +58,8 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >     sigemptyset(&sa.sa_mask);
     sa.sa_flags = SA_RESETHAND|SA_SIGINFO;
     sigaction( SIGSEGV, &sa, NULL );
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+    sigaction( SIGILL, &sa, NULL );
+    sigaction( SIGBUS, &sa, NULL );
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > }
 
 
</pre></div>
<hr /><a name="file3" /><div class="file" style="border:1px solid #eeeeee;margin-top:1em;margin-bottom:1em;" >
<span class="pathname" style="font-family:monospace; float:right;" >lxdream/src/x86dasm</span><br />
<div class="fileheader" style="margin-bottom:.5em;" ><big><b>dis-buf.c</b></big> <small id="info" style="color: #888888;" >186558374345 -> 7c4ffe27e7b5</small></div>
<pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >--- lxdream/src/x86dasm/dis-buf.c
+++ lxdream/src/x86dasm/dis-buf.c
@@ -31,14 +31,8 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >      struct disassemble_info *info;
 {
   unsigned int opb = info->octets_per_byte;
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-  unsigned int end_addr_offset = length / opb;
-  unsigned int max_addr_offset = info->buffer_length / opb; 
-  unsigned int octets = (memaddr - info->buffer_vma) * opb;
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+  uintptr_t octets = memaddr * opb;
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > 
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-  if (memaddr < info->buffer_vma
-      || memaddr - info->buffer_vma + end_addr_offset > max_addr_offset)
-    /* Out of bounds.  Use EIO because GDB uses it.  */
-    return EIO;
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >   memcpy (myaddr, info->buffer + octets, length);
 
   return 0;
</pre></div>
<hr /><a name="file4" /><div class="file" style="border:1px solid #eeeeee;margin-top:1em;margin-bottom:1em;" >
<span class="pathname" style="font-family:monospace; float:right;" >lxdream/src/x86dasm</span><br />
<div class="fileheader" style="margin-bottom:.5em;" ><big><b>x86dasm.c</b></big> <small id="info" style="color: #888888;" >186558374345 -> 7c4ffe27e7b5</small></div>
<pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >--- lxdream/src/x86dasm/x86dasm.c
+++ lxdream/src/x86dasm/x86dasm.c
@@ -76,8 +76,6 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > #endif
     x86_disasm_info.endian = BFD_ENDIAN_LITTLE;
     x86_disasm_info.buffer = 0;
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-    x86_disasm_info.buffer_vma = 0;
-    x86_disasm_info.buffer_length = -1;
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >     x86_disasm_info.print_address_func = x86_print_address;
 }
 
</pre></div>
<center><small>Chaos Theory</small></center>
</div></body></html>