diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2025-04-27 11:53:33 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2025-04-27 11:53:33 +0200 |
| commit | 7334bb46c6b398e85977d6f9d2341a9b53434687 (patch) | |
| tree | 327dc331061afa916e87aa085558381bd41a3247 /src | |
| parent | 9c962f8b2c60638a3bfcbee4ee8e5a33b090374e (diff) | |
| download | box64-7334bb46c6b398e85977d6f9d2341a9b53434687.tar.gz box64-7334bb46c6b398e85977d6f9d2341a9b53434687.zip | |
[ELFLOADER] Added lib loading/unloading logs to DLSYM_ERROR
Diffstat (limited to 'src')
| -rw-r--r-- | src/include/debug.h | 7 | ||||
| -rw-r--r-- | src/librarian/library.c | 12 |
2 files changed, 13 insertions, 6 deletions
diff --git a/src/include/debug.h b/src/include/debug.h index be216bd1..92425ad1 100644 --- a/src/include/debug.h +++ b/src/include/debug.h @@ -89,6 +89,13 @@ void printf_ftrace(int prefix, const char* fmt, ...); #define printf_dlsym_prefix(prefix, L, ...) \ do { \ + if (BOX64ENV(dlsym_error) || BOX64ENV(dump) || ((L) <= BOX64ENV(log))) { printf_ftrace(prefix, __VA_ARGS__); } \ + } while (0) + +#define printf_dlsym_dump(L, ...) printf_dlsym_dump_prefix(1, L, __VA_ARGS__) + +#define printf_dlsym_dump_prefix(prefix, L, ...) \ + do { \ if (BOX64ENV(dlsym_error) || ((L) <= BOX64ENV(log))) { printf_ftrace(prefix, __VA_ARGS__); } \ } while (0) diff --git a/src/librarian/library.c b/src/librarian/library.c index 670a8ef0..300d17cf 100644 --- a/src/librarian/library.c +++ b/src/librarian/library.c @@ -286,13 +286,13 @@ static void initWrappedLib(library_t *lib, box64context_t* context) { linkmap_t *lm = addLinkMapLib(lib); if(!lm) { // Crashed already - printf_dump(LOG_DEBUG, "Failure to add lib %s linkmap\n", lib->name); + printf_dlsym_dump(LOG_DEBUG, "Failure to add lib %s linkmap\n", lib->name); break; } struct link_map real_lm; #ifndef ANDROID if(dlinfo(lib->w.lib, RTLD_DI_LINKMAP, &real_lm)) { - printf_dump(LOG_DEBUG, "Failed to dlinfo lib %s\n", lib->name); + printf_dlsym_dump(LOG_DEBUG, "Failed to dlinfo lib %s\n", lib->name); } #endif lm->l_addr = real_lm.l_addr; @@ -314,7 +314,7 @@ static int loadEmulatedLib(const char* libname, library_t *lib, box64context_t* } elfheader_t *elf_header = LoadAndCheckElfHeader(f, libname, 0); if(!elf_header) { - printf_dump(LOG_DEBUG, "Error: reading elf header of %s\n", libname); // this one can be too alarming... + printf_dlsym_dump(LOG_DEBUG, "Error: reading elf header of %s\n", libname); // this one can be too alarming... fclose(f); return 0; } @@ -463,7 +463,7 @@ static size_t lib_cap = 0; library_t *NewLibrary(const char* path, box64context_t* context, elfheader_t* verneeded) { - printf_dump(LOG_DEBUG, "Trying to load \"%s\"\n", path); + printf_dlsym_dump(LOG_DEBUG, "Trying to load \"%s\"\n", path); //library_t *lib = (library_t*)box_calloc(1, sizeof(library_t)); if(cur_lib==lib_cap) { lib_brick_t *new_brick = box_calloc(1, sizeof(lib_brick_t)); @@ -488,7 +488,7 @@ library_t *NewLibrary(const char* path, box64context_t* context, elfheader_t* ve lib->name = Path2Name(path); lib->nbdot = NbDot(lib->name); lib->type = LIB_UNNKNOW; - printf_dump(LOG_DEBUG, "Simplified name is \"%s\"\n", lib->name); + printf_dlsym_dump(LOG_DEBUG, "Simplified name is \"%s\"\n", lib->name); if(BOX64ENV(nopulse)) { if(strstr(lib->name, "libpulse.so")==lib->name || strstr(lib->name, "libpulse-simple.so")==lib->name) { box_free(lib->name); @@ -618,7 +618,7 @@ void Free1Library(library_t **the_lib, x64emu_t* emu) FiniLibrary(lib, emu); - printf_dump(LOG_DEBUG, "Free1Library %s\n", lib->name?:"???"); + printf_dlsym_dump(LOG_DEBUG, "Free1Library %s\n", lib->name?:"???"); // remove lib from maplib/local_maplib... if(my_context) { MapLibRemoveLib(my_context->maplib, lib); |