diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2021-05-31 18:04:25 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2021-05-31 18:04:25 +0200 |
| commit | 104cf8a58b5c15b19d961f66375ff70c8d14a8cf (patch) | |
| tree | eacf2f81dc7848abc173feec30a2f214ce588bd8 /src/librarian | |
| parent | 976f175aa9f17adc4dc1530053861fbb8383fee7 (diff) | |
| download | box64-104cf8a58b5c15b19d961f66375ff70c8d14a8cf.tar.gz box64-104cf8a58b5c15b19d961f66375ff70c8d14a8cf.zip | |
Some adjustements to elfloader needed libs loading
Diffstat (limited to 'src/librarian')
| -rwxr-xr-x | src/librarian/librarian.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/src/librarian/librarian.c b/src/librarian/librarian.c index 2cec106b..3273eeda 100755 --- a/src/librarian/librarian.c +++ b/src/librarian/librarian.c @@ -170,14 +170,13 @@ void MapLibAddMapLib(lib_t* dest, lib_t* src) return; for(int i=0; i<src->libsz; ++i) { library_t* lib = src->libraries[i]; - if(!lib) continue; + if(!lib || libraryInMapLib(dest, lib)) continue; + MapLibAddLib(dest, lib); if(lib->maplib && src!=lib->maplib) { //TODO: find why is src!=lib->maplib needed MapLibAddMapLib(dest, lib->maplib); free(lib->maplib); lib->maplib = NULL; } - if(!libraryInMapLib(dest, lib)) - MapLibAddLib(dest, lib); } } @@ -314,13 +313,18 @@ int AddNeededLib(lib_t* maplib, needed_libs_t* neededlibs, library_t* deplib, in int idx = neededlibs->size; // Add libs and symbol for(int i=0; i<npath; ++i) { - if(AddNeededLib_add(maplib, neededlibs, deplib, local, paths[i], box64, emu)) + if(AddNeededLib_add(maplib, neededlibs, deplib, local, paths[i], box64, emu)) { + printf_log(LOG_INFO, "Error loading needed lib %s\n", paths[i]); return 1; + } } + int idx_end = neededlibs->size; // add dependant libs and init them - for (int i=idx; i<neededlibs->size; ++i) - if(AddNeededLib_init(maplib, neededlibs, deplib, local, neededlibs->libs[i], box64, emu)) + for (int i=idx; i<idx_end; ++i) + if(AddNeededLib_init(maplib, neededlibs, deplib, local, neededlibs->libs[i], box64, emu)) { + printf_log(LOG_INFO, "Error initializing needed lib %s\n", neededlibs->libs[i]->name); if(!allow_missing_libs) return 1; + } return 0; } |