diff options
| author | Yang Liu <liuyang22@iscas.ac.cn> | 2024-12-18 22:26:17 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-12-18 15:26:17 +0100 |
| commit | 955f6e74ab0ed1c99d5d6dccb6e799e0432d4080 (patch) | |
| tree | 70a329248a5b1ae690efbd1d5092b54d83946da0 /src | |
| parent | 8a982e8b5e9cbf12ee6e30b83f0014ceb8cd22ea (diff) | |
| download | box64-955f6e74ab0ed1c99d5d6dccb6e799e0432d4080.tar.gz box64-955f6e74ab0ed1c99d5d6dccb6e799e0432d4080.zip | |
[GDBJIT] Refined RV64 and LA64 support (#2165)
Diffstat (limited to 'src')
| -rw-r--r-- | src/dynarec/arm64/dynarec_arm64_functions.c | 4 | ||||
| -rw-r--r-- | src/dynarec/la64/dynarec_la64_functions.c | 4 | ||||
| -rw-r--r-- | src/dynarec/rv64/dynarec_rv64_functions.c | 4 | ||||
| -rw-r--r-- | src/tools/gdbjit.c | 4 |
4 files changed, 10 insertions, 6 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_functions.c b/src/dynarec/arm64/dynarec_arm64_functions.c index e473e6ca..c0a2c087 100644 --- a/src/dynarec/arm64/dynarec_arm64_functions.c +++ b/src/dynarec/arm64/dynarec_arm64_functions.c @@ -750,8 +750,8 @@ void inst_name_pass3(dynarec_native_t* dyn, int ninst, const char* name, rex_t r dynarec_log(LOG_NONE, "%s\n", (box64_dynarec_dump>1)?"\e[m":""); } if (box64_dynarec_gdbjit) { - zydis_dec_t* dec = rex.is32bits?my_context->dec32:my_context->dec; - const char *inst_name = dec ? DecodeX64Trace(dec, dyn->insts[ninst].x64.addr) : name; + zydis_dec_t* dec = rex.is32bits ? my_context->dec32 : my_context->dec; + const char* inst_name = dec ? DecodeX64Trace(dec, dyn->insts[ninst].x64.addr) : name; dyn->gdbjit_block = GdbJITBlockAddLine(dyn->gdbjit_block, (dyn->native_start + dyn->insts[ninst].address), inst_name); } } diff --git a/src/dynarec/la64/dynarec_la64_functions.c b/src/dynarec/la64/dynarec_la64_functions.c index bdb60094..753410f2 100644 --- a/src/dynarec/la64/dynarec_la64_functions.c +++ b/src/dynarec/la64/dynarec_la64_functions.c @@ -308,7 +308,9 @@ void inst_name_pass3(dynarec_native_t* dyn, int ninst, const char* name, rex_t r dynarec_log(LOG_NONE, "%s\n", (box64_dynarec_dump > 1) ? "\e[m" : ""); } if (box64_dynarec_gdbjit) { - dyn->gdbjit_block = GdbJITBlockAddLine(dyn->gdbjit_block, dyn->insts[ninst].address, name); + zydis_dec_t* dec = rex.is32bits ? my_context->dec32 : my_context->dec; + const char* inst_name = dec ? DecodeX64Trace(dec, dyn->insts[ninst].x64.addr) : name; + dyn->gdbjit_block = GdbJITBlockAddLine(dyn->gdbjit_block, (dyn->native_start + dyn->insts[ninst].address), inst_name); } } diff --git a/src/dynarec/rv64/dynarec_rv64_functions.c b/src/dynarec/rv64/dynarec_rv64_functions.c index e14be4f2..341305bf 100644 --- a/src/dynarec/rv64/dynarec_rv64_functions.c +++ b/src/dynarec/rv64/dynarec_rv64_functions.c @@ -724,7 +724,9 @@ void inst_name_pass3(dynarec_native_t* dyn, int ninst, const char* name, rex_t r dynarec_log(LOG_NONE, "%s\n", (box64_dynarec_dump > 1) ? "\e[m" : ""); } if (box64_dynarec_gdbjit) { - dyn->gdbjit_block = GdbJITBlockAddLine(dyn->gdbjit_block, dyn->insts[ninst].address, name); + zydis_dec_t* dec = rex.is32bits ? my_context->dec32 : my_context->dec; + const char* inst_name = dec ? DecodeX64Trace(dec, dyn->insts[ninst].x64.addr) : name; + dyn->gdbjit_block = GdbJITBlockAddLine(dyn->gdbjit_block, (dyn->native_start + dyn->insts[ninst].address), inst_name); } } diff --git a/src/tools/gdbjit.c b/src/tools/gdbjit.c index baf45fe6..a1ae725f 100644 --- a/src/tools/gdbjit.c +++ b/src/tools/gdbjit.c @@ -34,7 +34,7 @@ typedef struct gdbjit_descriptor_s { } gdbjit_descriptor_t; /* GDB puts a breakpoint in this function. This can't be optimized out. */ -void __attribute__((noinline)) __jit_debug_register_code() +EXPORT void __attribute__((noinline)) __jit_debug_register_code() { asm volatile("" ::: "memory"); }; @@ -42,7 +42,7 @@ void __attribute__((noinline)) __jit_debug_register_code() /* Make sure to specify the version statically, because the debugger may check * the version before we can set it. */ -gdbjit_descriptor_t __jit_debug_descriptor = { 1, GDBJIT_NOACTION, NULL, NULL }; +EXPORT gdbjit_descriptor_t __jit_debug_descriptor = { 1, GDBJIT_NOACTION, NULL, NULL }; /* --------------------------------------------------------------------------- */ |