about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2022-03-04 20:15:40 +0100
committerptitSeb <sebastien.chev@gmail.com>2022-03-04 20:15:40 +0100
commitdd60e17835b737ac4df386c59b31c309ee2d97e1 (patch)
tree9d84a156f1672f1f3892a17a7d196815bcc464f1 /src
parentaad680d61d04a68e816fef1c79c1067718e25f65 (diff)
downloadbox64-dd60e17835b737ac4df386c59b31c309ee2d97e1.tar.gz
box64-dd60e17835b737ac4df386c59b31c309ee2d97e1.zip
Improve function name in trace a bit
Diffstat (limited to 'src')
-rwxr-xr-xsrc/emu/x64run_private.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/src/emu/x64run_private.c b/src/emu/x64run_private.c
index 3265386b..c7dac588 100755
--- a/src/emu/x64run_private.c
+++ b/src/emu/x64run_private.c
@@ -957,14 +957,21 @@ const char* getAddrFunctionName(uintptr_t addr)
     static char ret[1000];
     uint64_t sz = 0;
     uintptr_t start = 0;
-    const char* symbname = FindNearestSymbolName(FindElfAddress(my_context, addr), (void*)addr, &start, &sz);
+    elfheader_t* elf = FindElfAddress(my_context, addr);
+    const char* symbname = FindNearestSymbolName(elf, (void*)addr, &start, &sz);
     if(symbname && addr>=start && (addr<(start+sz) || !sz)) {
-        if(addr==start)
-            sprintf(ret, "%s:%s", ElfName(FindElfAddress(my_context, addr)), symbname);
+        if(symbname[0]=='\0')
+            sprintf(ret, "%s + 0x%x", ElfName(elf), addr - (uintptr_t)GetBaseAddress(elf));
+        else if(addr==start)
+            sprintf(ret, "%s/%s", ElfName(elf), symbname);
         else
-            sprintf(ret, "%s:%s + %ld", ElfName(FindElfAddress(my_context, addr)), symbname, addr - start);
-    } else
-        sprintf(ret, "???");
+            sprintf(ret, "%s/%s + %d", ElfName(elf), symbname, addr - start);
+    } else {
+        if(elf) {
+            sprintf(ret, "%s + 0x%x", ElfName(elf), addr - (uintptr_t)GetBaseAddress(elf));
+        } else
+            sprintf(ret, "???");
+    }
     return ret;
 }