about summary refs log tree commit diff stats
path: root/src/dynarec
diff options
context:
space:
mode:
Diffstat (limited to 'src/dynarec')
-rw-r--r--src/dynarec/dynablock_private.h3
-rw-r--r--src/dynarec/dynarec_native.c6
2 files changed, 8 insertions, 1 deletions
diff --git a/src/dynarec/dynablock_private.h b/src/dynarec/dynablock_private.h
index 388fcc4d..8220be0c 100644
--- a/src/dynarec/dynablock_private.h
+++ b/src/dynarec/dynablock_private.h
@@ -31,6 +31,9 @@ typedef struct dynablock_s {
     void*           arch;       // arch dependant per inst info (can be NULL)
     callret_t*      callrets;   // array of callret return, with NOP / UDF depending if the block is clean or dirty
     void*           jmpnext;    // a branch jmpnext code when block is marked
+    #ifdef GDBJIT
+    void*           gdbjit_block;
+    #endif
 } dynablock_t;
 
 #endif //__DYNABLOCK_PRIVATE_H_
diff --git a/src/dynarec/dynarec_native.c b/src/dynarec/dynarec_native.c
index 1de71094..9ea02962 100644
--- a/src/dynarec/dynarec_native.c
+++ b/src/dynarec/dynarec_native.c
@@ -886,7 +886,11 @@ void* FillBlock64(dynablock_t* block, uintptr_t addr, int alternate, int is32bit
     block->x64_size = end-start;
     // all done...
     if (BOX64ENV(dynarec_gdbjit) && (!BOX64ENV(dynarec_gdbjit_end) || (addr >= BOX64ENV(dynarec_gdbjit_start) && addr < BOX64ENV(dynarec_gdbjit_end)))) {
-        GdbJITBlockReady(helper.gdbjit_block);
+        if (BOX64ENV(dynarec_gdbjit) != 3) GdbJITBlockReady(helper.gdbjit_block);
+        GdbJITBlockCleanup(helper.gdbjit_block);
+        #ifdef GDBJIT
+        block->gdbjit_block = helper.gdbjit_block;
+        #endif
     }
     ClearCache(actual_p+sizeof(void*), native_size);   // need to clear the cache before execution...
     block->hash = X31_hash_code(block->x64_addr, block->x64_size);