From 8ee4b7f7b0ce260a9b92ceeda9e705114674234a Mon Sep 17 00:00:00 2001
From: losfair <zhy20000919@hotmail.com>
Date: Thu, 10 Oct 2019 22:08:52 +0800
Subject: [PATCH] Replace brk with undefined instruction.

---
 .../src/translator_aarch64.rs                 | 110 +++++++++---------
 1 file changed, 55 insertions(+), 55 deletions(-)

diff --git a/lib/singlepass-backend/src/translator_aarch64.rs b/lib/singlepass-backend/src/translator_aarch64.rs
index 331d33779..107a290e9 100644
--- a/lib/singlepass-backend/src/translator_aarch64.rs
+++ b/lib/singlepass-backend/src/translator_aarch64.rs
@@ -687,7 +687,7 @@ impl Emitter for Assembler {
             self
             ; b >ok
             ; fail:
-            ; brk 0
+            ; .dword 0 ; .dword 0
             ; ok:
         );
     }
@@ -1089,7 +1089,7 @@ impl Emitter for Assembler {
     fn emit_popcnt(&mut self, sz: Size, src: Location, dst: Location) {
         dynasm!(
             self
-            ; brk 90 // TODO: Implement
+            ; .dword 0 ; .dword 90 // TODO: Implement
         );
     }
     fn emit_movzx(&mut self, sz_src: Size, src: Location, _sz_dst: Size, dst: Location) {
@@ -1182,175 +1182,175 @@ impl Emitter for Assembler {
 
     // TODO: These instructions are only used in FP opcodes. Implement later.
     fn emit_btc_gpr_imm8_32(&mut self, src: u8, dst: GPR) {
-        dynasm!(self ; brk 29)
+        dynasm!(self ; .dword 0 ; .dword 29)
     }
     fn emit_btc_gpr_imm8_64(&mut self, src: u8, dst: GPR) {
-        dynasm!(self ; brk 29)
+        dynasm!(self ; .dword 0 ; .dword 29)
     }
     fn emit_cmovae_gpr_32(&mut self, src: GPR, dst: GPR) {
-        dynasm!(self ; brk 29)
+        dynasm!(self ; .dword 0 ; .dword 29)
     }
     fn emit_cmovae_gpr_64(&mut self, src: GPR, dst: GPR) {
-        dynasm!(self ; brk 29)
+        dynasm!(self ; .dword 0 ; .dword 29)
     }
 
     fn emit_vaddss(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM) {
-        dynasm!(self ; brk 29)
+        dynasm!(self ; .dword 0 ; .dword 29)
     }
     fn emit_vaddsd(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM) {
-        dynasm!(self ; brk 29)
+        dynasm!(self ; .dword 0 ; .dword 29)
     }
     fn emit_vsubss(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM) {
-        dynasm!(self ; brk 29)
+        dynasm!(self ; .dword 0 ; .dword 29)
     }
     fn emit_vsubsd(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM) {
-        dynasm!(self ; brk 29)
+        dynasm!(self ; .dword 0 ; .dword 29)
     }
     fn emit_vmulss(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM) {
-        dynasm!(self ; brk 29)
+        dynasm!(self ; .dword 0 ; .dword 29)
     }
     fn emit_vmulsd(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM) {
-        dynasm!(self ; brk 29)
+        dynasm!(self ; .dword 0 ; .dword 29)
     }
     fn emit_vdivss(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM) {
-        dynasm!(self ; brk 29)
+        dynasm!(self ; .dword 0 ; .dword 29)
     }
     fn emit_vdivsd(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM) {
-        dynasm!(self ; brk 29)
+        dynasm!(self ; .dword 0 ; .dword 29)
     }
     fn emit_vmaxss(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM) {
-        dynasm!(self ; brk 29)
+        dynasm!(self ; .dword 0 ; .dword 29)
     }
     fn emit_vmaxsd(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM) {
-        dynasm!(self ; brk 29)
+        dynasm!(self ; .dword 0 ; .dword 29)
     }
     fn emit_vminss(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM) {
-        dynasm!(self ; brk 29)
+        dynasm!(self ; .dword 0 ; .dword 29)
     }
     fn emit_vminsd(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM) {
-        dynasm!(self ; brk 29)
+        dynasm!(self ; .dword 0 ; .dword 29)
     }
 
     fn emit_vcmpeqss(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM) {
-        dynasm!(self ; brk 29)
+        dynasm!(self ; .dword 0 ; .dword 29)
     }
     fn emit_vcmpeqsd(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM) {
-        dynasm!(self ; brk 29)
+        dynasm!(self ; .dword 0 ; .dword 29)
     }
 
     fn emit_vcmpneqss(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM) {
-        dynasm!(self ; brk 29)
+        dynasm!(self ; .dword 0 ; .dword 29)
     }
     fn emit_vcmpneqsd(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM) {
-        dynasm!(self ; brk 29)
+        dynasm!(self ; .dword 0 ; .dword 29)
     }
 
     fn emit_vcmpltss(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM) {
-        dynasm!(self ; brk 29)
+        dynasm!(self ; .dword 0 ; .dword 29)
     }
     fn emit_vcmpltsd(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM) {
-        dynasm!(self ; brk 29)
+        dynasm!(self ; .dword 0 ; .dword 29)
     }
 
     fn emit_vcmpless(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM) {
-        dynasm!(self ; brk 29)
+        dynasm!(self ; .dword 0 ; .dword 29)
     }
     fn emit_vcmplesd(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM) {
-        dynasm!(self ; brk 29)
+        dynasm!(self ; .dword 0 ; .dword 29)
     }
 
     fn emit_vcmpgtss(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM) {
-        dynasm!(self ; brk 29)
+        dynasm!(self ; .dword 0 ; .dword 29)
     }
     fn emit_vcmpgtsd(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM) {
-        dynasm!(self ; brk 29)
+        dynasm!(self ; .dword 0 ; .dword 29)
     }
 
     fn emit_vcmpgess(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM) {
-        dynasm!(self ; brk 29)
+        dynasm!(self ; .dword 0 ; .dword 29)
     }
     fn emit_vcmpgesd(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM) {
-        dynasm!(self ; brk 29)
+        dynasm!(self ; .dword 0 ; .dword 29)
     }
 
     fn emit_vsqrtss(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM) {
-        dynasm!(self ; brk 29)
+        dynasm!(self ; .dword 0 ; .dword 29)
     }
     fn emit_vsqrtsd(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM) {
-        dynasm!(self ; brk 29)
+        dynasm!(self ; .dword 0 ; .dword 29)
     }
 
     fn emit_vroundss_nearest(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM) {
-        dynasm!(self ; brk 29)
+        dynasm!(self ; .dword 0 ; .dword 29)
     }
     fn emit_vroundss_floor(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM) {
-        dynasm!(self ; brk 29)
+        dynasm!(self ; .dword 0 ; .dword 29)
     }
     fn emit_vroundss_ceil(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM) {
-        dynasm!(self ; brk 29)
+        dynasm!(self ; .dword 0 ; .dword 29)
     }
     fn emit_vroundss_trunc(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM) {
-        dynasm!(self ; brk 29)
+        dynasm!(self ; .dword 0 ; .dword 29)
     }
     fn emit_vroundsd_nearest(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM) {
-        dynasm!(self ; brk 29)
+        dynasm!(self ; .dword 0 ; .dword 29)
     }
     fn emit_vroundsd_floor(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM) {
-        dynasm!(self ; brk 29)
+        dynasm!(self ; .dword 0 ; .dword 29)
     }
     fn emit_vroundsd_ceil(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM) {
-        dynasm!(self ; brk 29)
+        dynasm!(self ; .dword 0 ; .dword 29)
     }
     fn emit_vroundsd_trunc(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM) {
-        dynasm!(self ; brk 29)
+        dynasm!(self ; .dword 0 ; .dword 29)
     }
 
     fn emit_vcvtss2sd(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM) {
-        dynasm!(self ; brk 29)
+        dynasm!(self ; .dword 0 ; .dword 29)
     }
     fn emit_vcvtsd2ss(&mut self, src1: XMM, src2: XMMOrMemory, dst: XMM) {
-        dynasm!(self ; brk 29)
+        dynasm!(self ; .dword 0 ; .dword 29)
     }
 
     fn emit_ucomiss(&mut self, src: XMMOrMemory, dst: XMM) {
-        dynasm!(self ; brk 29)
+        dynasm!(self ; .dword 0 ; .dword 29)
     }
     fn emit_ucomisd(&mut self, src: XMMOrMemory, dst: XMM) {
-        dynasm!(self ; brk 29)
+        dynasm!(self ; .dword 0 ; .dword 29)
     }
 
     fn emit_cvttss2si_32(&mut self, src: XMMOrMemory, dst: GPR) {
-        dynasm!(self ; brk 29)
+        dynasm!(self ; .dword 0 ; .dword 29)
     }
     fn emit_cvttss2si_64(&mut self, src: XMMOrMemory, dst: GPR) {
-        dynasm!(self ; brk 29)
+        dynasm!(self ; .dword 0 ; .dword 29)
     }
     fn emit_cvttsd2si_32(&mut self, src: XMMOrMemory, dst: GPR) {
-        dynasm!(self ; brk 29)
+        dynasm!(self ; .dword 0 ; .dword 29)
     }
     fn emit_cvttsd2si_64(&mut self, src: XMMOrMemory, dst: GPR) {
-        dynasm!(self ; brk 29)
+        dynasm!(self ; .dword 0 ; .dword 29)
     }
 
     fn emit_vcvtsi2ss_32(&mut self, src1: XMM, src2: GPROrMemory, dst: XMM) {
-        dynasm!(self ; brk 29)
+        dynasm!(self ; .dword 0 ; .dword 29)
     }
     fn emit_vcvtsi2ss_64(&mut self, src1: XMM, src2: GPROrMemory, dst: XMM) {
-        dynasm!(self ; brk 29)
+        dynasm!(self ; .dword 0 ; .dword 29)
     }
     fn emit_vcvtsi2sd_32(&mut self, src1: XMM, src2: GPROrMemory, dst: XMM) {
-        dynasm!(self ; brk 29)
+        dynasm!(self ; .dword 0 ; .dword 29)
     }
     fn emit_vcvtsi2sd_64(&mut self, src1: XMM, src2: GPROrMemory, dst: XMM) {
-        dynasm!(self ; brk 29)
+        dynasm!(self ; .dword 0 ; .dword 29)
     }
 
     fn emit_test_gpr_64(&mut self, reg: GPR) {
-        dynasm!(self ; brk 29)
+        dynasm!(self ; .dword 0 ; .dword 29)
     }
 
     fn emit_ud2(&mut self) {
-        dynasm!(self ; brk 2)
+        dynasm!(self ; .dword 0 ; .dword 2)
     }
     fn emit_ret(&mut self) {
         dynasm!(self
@@ -1418,7 +1418,7 @@ impl Emitter for Assembler {
     }
 
     fn emit_bkpt(&mut self) {
-        dynasm!(self ; brk 1)
+        dynasm!(self ; .dword 0 ; .dword 1)
     }
 
     fn emit_homomorphic_host_redirection(&mut self, target: GPR) {