about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2023-12-06 17:16:51 +0100
committerptitSeb <sebastien.chev@gmail.com>2023-12-06 17:16:51 +0100
commit28a1581bb6dc89eafee24e2b5c0a026e3688034c (patch)
tree441f03d9fbb9eeb31cbc69fe7c003e313919909c /src
parent66b8e697eaffbf1f98bd24fdb2f438d3efe7fd72 (diff)
downloadbox64-28a1581bb6dc89eafee24e2b5c0a026e3688034c.tar.gz
box64-28a1581bb6dc89eafee24e2b5c0a026e3688034c.zip
[TRACE] Better trace for an issue inside a wrapper
Diffstat (limited to 'src')
-rw-r--r--src/elfs/elfloader.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/elfs/elfloader.c b/src/elfs/elfloader.c
index d2b08637..76cf3230 100644
--- a/src/elfs/elfloader.c
+++ b/src/elfs/elfloader.c
@@ -38,6 +38,7 @@
 #endif
 #include "../emu/x64emu_private.h"
 #include "../emu/x64run_private.h"
+#include "../tools/bridge_private.h"
 #include "x64tls.h"
 
 void* my__IO_2_1_stderr_ = NULL;
@@ -1451,13 +1452,14 @@ const char* FindNearestSymbolName(elfheader_t* h, void* p, uintptr_t* start, uin
         return ret;
     if(!h) {
         if(getProtection((uintptr_t)p)&(PROT_READ)) {
-            if(*(uint8_t*)(p)==0xCC && *(uint8_t*)(p+1)=='S' && *(uint8_t*)(p+2)=='C') {
-                ret = getBridgeName(p);
+            uintptr_t adj_p = ((uintptr_t)p)&~(sizeof(onebridge_t));
+            if(*(uint8_t*)(adj_p)==0xCC && *(uint8_t*)(adj_p+1)=='S' && *(uint8_t*)(adj_p+2)=='C') {
+                ret = getBridgeName(adj_p);
                 if(ret) {
                     if(start)
-                        *start = (uintptr_t)p;
+                        *start = (uintptr_t)adj_p;
                     if(sz)
-                        *sz = 32;
+                        *sz = sizeof(onebridge_t);
                 }
             }
         }