diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2023-07-22 20:43:59 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2023-07-22 20:43:59 +0200 |
| commit | 7ab299b2465cda2b9fb0ce5c4014906cc7d20e31 (patch) | |
| tree | 1ead2dc45a83caea80e2d2722fa75e91e20f3173 /src/librarian/librarian.c | |
| parent | 0733a872798b438d392cb71750abd0ac7fa3093c (diff) | |
| download | box64-7ab299b2465cda2b9fb0ce5c4014906cc7d20e31.tar.gz box64-7ab299b2465cda2b9fb0ce5c4014906cc7d20e31.zip | |
[TRACE] Fixed crash when tracing a function that is not defined in main at beggining
Diffstat (limited to 'src/librarian/librarian.c')
| -rw-r--r-- | src/librarian/librarian.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/librarian/librarian.c b/src/librarian/librarian.c index 5de70936..8d4c6cbb 100644 --- a/src/librarian/librarian.c +++ b/src/librarian/librarian.c @@ -400,12 +400,14 @@ int GetNoSelfSymbolStartEnd(lib_t *maplib, const char* name, uintptr_t* start, u } if(go<0) go = 0; // not found... + if(maplib) for(int i=go; i<maplib->libsz; ++i) { if(GetElfIndex(maplib->libraries[i])==-1 || (GetElf(maplib->libraries[i])!=self)) if(GetLibGlobalSymbolStartEnd(maplib->libraries[i], name, start, end, size, &weak, version, vername, 0, globdefver)) if(*start) return 1; } + if(maplib) for(int i=go; i<maplib->libsz; ++i) if(GetElfIndex(maplib->libraries[i])==-1 || (GetElf(maplib->libraries[i])!=self)) GetLibWeakSymbolStartEnd(maplib->libraries[i], name, start, end, size, &weak, version, vername, 0, weakdefver); @@ -428,6 +430,7 @@ int GetNoSelfSymbolStartEnd(lib_t *maplib, const char* name, uintptr_t* start, u if(*start) return 1; } + if(maplib) for(int i=0; i<go; ++i) { if(GetElfIndex(maplib->libraries[i])==-1 || (GetElf(maplib->libraries[i])!=self)) GetLibWeakSymbolStartEnd(maplib->libraries[i], name, start, end, size, &weak, version, vername, 1, weakdefver); @@ -460,6 +463,7 @@ static int GetGlobalSymbolStartEnd_internal(lib_t *maplib, const char* name, uin if(*start) return 1; // search in global symbols + if(maplib) for(int i=0; i<maplib->libsz; ++i) { if(GetLibGlobalSymbolStartEnd(maplib->libraries[i], name, start, end, size, &weak, version, vername, isLocal(self, maplib->libraries[i]), globdefver)) if(*start) @@ -473,6 +477,7 @@ static int GetGlobalSymbolStartEnd_internal(lib_t *maplib, const char* name, uin if(*start) ok = 1; + if(maplib) for(int i=0; i<maplib->libsz; ++i) { if(GetLibWeakSymbolStartEnd(maplib->libraries[i], name, start, end, size, &weak, version, vername, isLocal(self, maplib->libraries[i]), weakdefver)) if(*start) |