about summary refs log tree commit diff stats
path: root/src/librarian
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2021-05-31 18:04:25 +0200
committerptitSeb <sebastien.chev@gmail.com>2021-05-31 18:04:25 +0200
commit104cf8a58b5c15b19d961f66375ff70c8d14a8cf (patch)
treeeacf2f81dc7848abc173feec30a2f214ce588bd8 /src/librarian
parent976f175aa9f17adc4dc1530053861fbb8383fee7 (diff)
downloadbox64-104cf8a58b5c15b19d961f66375ff70c8d14a8cf.tar.gz
box64-104cf8a58b5c15b19d961f66375ff70c8d14a8cf.zip
Some adjustements to elfloader needed libs loading
Diffstat (limited to 'src/librarian')
-rwxr-xr-xsrc/librarian/librarian.c16
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;
 }