diff options
| author | Yang Liu <liuyang22@iscas.ac.cn> | 2025-05-09 16:21:41 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-05-09 10:21:41 +0200 |
| commit | 22fdc90fe28171e3e7566684f60305a4f2d04dcf (patch) | |
| tree | 8e0c1ded237fa62b6cf9dd56455a9338d5db5fd0 /src/dynarec | |
| parent | 78193c5f1acb4fd0311bbf96ed0f692016d6e350 (diff) | |
| download | box64-22fdc90fe28171e3e7566684f60305a4f2d04dcf.tar.gz box64-22fdc90fe28171e3e7566684f60305a4f2d04dcf.zip | |
[GDBJIT] Added a new option to register debuginfo only after trapped into signalhandler (#2614)
Diffstat (limited to 'src/dynarec')
| -rw-r--r-- | src/dynarec/dynablock_private.h | 3 | ||||
| -rw-r--r-- | src/dynarec/dynarec_native.c | 6 |
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); |