diff options
| author | Leslie Zhai <zhaixiang@loongson.cn> | 2025-01-03 21:33:45 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-01-03 14:33:45 +0100 |
| commit | 4065e61ec5fce97d1be4f1e0657037061742d25e (patch) | |
| tree | 1c4eb30ee30af9877947a7f44000858e5e36e476 /src | |
| parent | da6b799a10d34f00fb51164a6d108fd7c8fd81af (diff) | |
| download | box64-4065e61ec5fce97d1be4f1e0657037061742d25e.tar.gz box64-4065e61ec5fce97d1be4f1e0657037061742d25e.zip | |
[DYNAREC] Appended instruction name to symbol (#2228)
Diffstat (limited to 'src')
| -rw-r--r-- | src/core.c | 2 | ||||
| -rw-r--r-- | src/dynarec/arm64/dynarec_arm64_functions.c | 2 | ||||
| -rw-r--r-- | src/dynarec/dynarec_native.c | 4 | ||||
| -rw-r--r-- | src/dynarec/la64/dynarec_la64_functions.c | 2 | ||||
| -rw-r--r-- | src/dynarec/rv64/dynarec_rv64_functions.c | 2 | ||||
| -rw-r--r-- | src/include/dynarec_native.h | 2 |
6 files changed, 7 insertions, 7 deletions
diff --git a/src/core.c b/src/core.c index cf7c7893..253b7dc9 100644 --- a/src/core.c +++ b/src/core.c @@ -925,7 +925,7 @@ void LoadLogEnv() box64_dynarec_perf_map = p[0] - '0'; } if (box64_dynarec_perf_map) - printf_log(LOG_INFO, "Dynarec will generate map file for Linux perf tool\n"); + printf_log(LOG_INFO, "Dynarec will generate map file /tmp/perf-%d.map for Linux perf tool\n", getpid()); } p = getenv("BOX64_DYNAREC_DF"); if(p) { diff --git a/src/dynarec/arm64/dynarec_arm64_functions.c b/src/dynarec/arm64/dynarec_arm64_functions.c index 506a65e0..28673221 100644 --- a/src/dynarec/arm64/dynarec_arm64_functions.c +++ b/src/dynarec/arm64/dynarec_arm64_functions.c @@ -850,7 +850,7 @@ void inst_name_pass3(dynarec_native_t* dyn, int ninst, const char* name, rex_t r dyn->gdbjit_block = GdbJITBlockAddLine(dyn->gdbjit_block, (dyn->native_start + dyn->insts[ninst].address), inst_name); } if (box64_dynarec_perf_map && box64_dynarec_perf_map_fd != -1) { - writePerfMap(dyn->insts[ninst].x64.addr, dyn->native_start + dyn->insts[ninst].address, dyn->insts[ninst].size / 4); + writePerfMap(dyn->insts[ninst].x64.addr, dyn->native_start + dyn->insts[ninst].address, dyn->insts[ninst].size / 4, name); } } diff --git a/src/dynarec/dynarec_native.c b/src/dynarec/dynarec_native.c index 42b557ed..4ffd1048 100644 --- a/src/dynarec/dynarec_native.c +++ b/src/dynarec/dynarec_native.c @@ -853,12 +853,12 @@ void* FillBlock64(dynablock_t* block, uintptr_t addr, int alternate, int is32bit return (void*)block; } -void writePerfMap(uintptr_t func_addr, uintptr_t code_addr, size_t code_size) +void writePerfMap(uintptr_t func_addr, uintptr_t code_addr, size_t code_size, const char* inst_name) { char pbuf[128]; uint64_t sz = 0; uintptr_t start = 0; const char* symbname = FindNearestSymbolName(FindElfAddress(my_context, func_addr), (void*)func_addr, &start, &sz); - snprintf(pbuf, sizeof(pbuf), "0x%lx %ld %s\n", code_addr, code_size, symbname); + snprintf(pbuf, sizeof(pbuf), "0x%lx %ld %s:%s\n", code_addr, code_size, symbname, inst_name); write(box64_dynarec_perf_map_fd, pbuf, strlen(pbuf)); } diff --git a/src/dynarec/la64/dynarec_la64_functions.c b/src/dynarec/la64/dynarec_la64_functions.c index cf3c43d4..5d8b2c77 100644 --- a/src/dynarec/la64/dynarec_la64_functions.c +++ b/src/dynarec/la64/dynarec_la64_functions.c @@ -399,7 +399,7 @@ void inst_name_pass3(dynarec_native_t* dyn, int ninst, const char* name, rex_t r dyn->gdbjit_block = GdbJITBlockAddLine(dyn->gdbjit_block, (dyn->native_start + dyn->insts[ninst].address), inst_name); } if (box64_dynarec_perf_map && box64_dynarec_perf_map_fd != -1) { - writePerfMap(dyn->insts[ninst].x64.addr, dyn->native_start + dyn->insts[ninst].address, dyn->insts[ninst].size / 4); + writePerfMap(dyn->insts[ninst].x64.addr, dyn->native_start + dyn->insts[ninst].address, dyn->insts[ninst].size / 4, name); } } diff --git a/src/dynarec/rv64/dynarec_rv64_functions.c b/src/dynarec/rv64/dynarec_rv64_functions.c index 08dec929..34dbeb47 100644 --- a/src/dynarec/rv64/dynarec_rv64_functions.c +++ b/src/dynarec/rv64/dynarec_rv64_functions.c @@ -773,7 +773,7 @@ void inst_name_pass3(dynarec_native_t* dyn, int ninst, const char* name, rex_t r dyn->gdbjit_block = GdbJITBlockAddLine(dyn->gdbjit_block, (dyn->native_start + dyn->insts[ninst].address), inst_name); } if (box64_dynarec_perf_map && box64_dynarec_perf_map_fd != -1) { - writePerfMap(dyn->insts[ninst].x64.addr, dyn->native_start + dyn->insts[ninst].address, dyn->insts[ninst].size / 4); + writePerfMap(dyn->insts[ninst].x64.addr, dyn->native_start + dyn->insts[ninst].address, dyn->insts[ninst].size / 4, name); } } diff --git a/src/include/dynarec_native.h b/src/include/dynarec_native.h index 4a5219a7..2f305155 100644 --- a/src/include/dynarec_native.h +++ b/src/include/dynarec_native.h @@ -26,6 +26,6 @@ void addInst(instsize_t* insts, size_t* size, int x64_size, int native_size); void CancelBlock64(int need_lock); void* FillBlock64(dynablock_t* block, uintptr_t addr, int alternate, int is32bits); -void writePerfMap(uintptr_t func_addr, uintptr_t code_addr, size_t code_size); +void writePerfMap(uintptr_t func_addr, uintptr_t code_addr, size_t code_size, const char* inst_name); #endif //__DYNAREC_ARM_H_ |