about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorYang Liu <liuyang22@iscas.ac.cn>2024-12-18 22:26:17 +0800
committerGitHub <noreply@github.com>2024-12-18 15:26:17 +0100
commit955f6e74ab0ed1c99d5d6dccb6e799e0432d4080 (patch)
tree70a329248a5b1ae690efbd1d5092b54d83946da0 /src
parent8a982e8b5e9cbf12ee6e30b83f0014ceb8cd22ea (diff)
downloadbox64-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.c4
-rw-r--r--src/dynarec/la64/dynarec_la64_functions.c4
-rw-r--r--src/dynarec/rv64/dynarec_rv64_functions.c4
-rw-r--r--src/tools/gdbjit.c4
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 };
 
 /* --------------------------------------------------------------------------- */