about summary refs log tree commit diff stats
path: root/src/librarian
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2023-04-26 12:07:31 +0200
committerptitSeb <sebastien.chev@gmail.com>2023-04-26 12:07:31 +0200
commit68a31c902a3467b570146ae3726af42619bbfce5 (patch)
tree20bbac5e3a37e0d3e69b2f70b557eaf153424ba7 /src/librarian
parent78e6fbcf07336fc33817b561c7b3cd0ed821d0b4 (diff)
downloadbox64-68a31c902a3467b570146ae3726af42619bbfce5.tar.gz
box64-68a31c902a3467b570146ae3726af42619bbfce5.zip
Added 1st implementation for _dl_find_object (for #742 and #711, maybe #487, #465, #410 and #210 too)
Diffstat (limited to 'src/librarian')
-rwxr-xr-xsrc/librarian/library.c12
-rwxr-xr-xsrc/librarian/library_private.h1
2 files changed, 12 insertions, 1 deletions
diff --git a/src/librarian/library.c b/src/librarian/library.c
index 4c7995a7..4f9c95c8 100755
--- a/src/librarian/library.c
+++ b/src/librarian/library.c
@@ -982,6 +982,16 @@ linkmap_t* getLinkMapLib(library_t* lib)
     }
     return NULL;
 }
+linkmap_t* getLinkMapElf(elfheader_t* h)
+{
+    linkmap_t* lm = my_context->linkmap;
+    while(lm) {
+        if(lm->l_lib && lm->l_lib->type==LIB_EMULATED && lm->l_lib->e.elf == h)
+            return lm;
+        lm = lm->l_next;
+    }
+    return NULL;
+}
 linkmap_t* addLinkMapLib(library_t* lib)
 {
     if(!my_context->linkmap) {
@@ -1062,7 +1072,7 @@ void add1lib_neededlib(needed_libs_t* needed, library_t* lib, const char* name)
     needed->libs = (library_t**)realloc(needed->libs, needed->cap*sizeof(library_t*));
     needed->names = (char**)realloc(needed->names, needed->cap*sizeof(char*));
     needed->libs[needed->size] = lib;
-    needed->names[needed->size] = name;
+    needed->names[needed->size] = (char*)name;
     needed->size++;
 }
 needed_libs_t* copy_neededlib(needed_libs_t* needed)
diff --git a/src/librarian/library_private.h b/src/librarian/library_private.h
index d50da99e..27d3fef6 100755
--- a/src/librarian/library_private.h
+++ b/src/librarian/library_private.h
@@ -109,6 +109,7 @@ typedef struct linkmap_s {
 } linkmap_t;
 
 linkmap_t* getLinkMapLib(library_t* lib);
+linkmap_t* getLinkMapElf(elfheader_t* h);
 linkmap_t* addLinkMapLib(library_t* lib);
 void removeLinkMapLib(library_t* lib);