diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2023-12-06 17:16:51 +0100 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2023-12-06 17:16:51 +0100 |
| commit | 28a1581bb6dc89eafee24e2b5c0a026e3688034c (patch) | |
| tree | 441f03d9fbb9eeb31cbc69fe7c003e313919909c /src | |
| parent | 66b8e697eaffbf1f98bd24fdb2f438d3efe7fd72 (diff) | |
| download | box64-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.c | 10 |
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); } } } |