about summary refs log tree commit diff stats
path: root/src/librarian
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2023-07-15 16:57:57 +0200
committerptitSeb <sebastien.chev@gmail.com>2023-07-15 16:57:57 +0200
commit0b3097cd0b15eedd3e33ae2331f32fc261ee1231 (patch)
tree3f2034d75b595670e68971d0c9dc125000960da4 /src/librarian
parentc7e0ba82b4a586fed8f4d45acd0c774ddf0f777b (diff)
downloadbox64-0b3097cd0b15eedd3e33ae2331f32fc261ee1231.tar.gz
box64-0b3097cd0b15eedd3e33ae2331f32fc261ee1231.zip
[ELFLOADER] Reworked R_X86_64_COPY and R_X86_64_GLOB_DAT handling, improving c++ program compatibility
Diffstat (limited to 'src/librarian')
-rwxr-xr-xsrc/librarian/librarian.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/librarian/librarian.c b/src/librarian/librarian.c
index 8ed3fe8b..5de70936 100755
--- a/src/librarian/librarian.c
+++ b/src/librarian/librarian.c
@@ -590,6 +590,10 @@ int GetGlobalNoWeakSymbolStartEnd(lib_t *maplib, const char* name, uintptr_t* st
 {
     int weak = 0;
     size_t size = 0;
+    // check global GLOB_DAT kind of symbols
+    if(GetSymbolStartEnd(GetGlobalData(maplib), name, start, end, version, vername, 1, defver))
+        if(*start || *end)
+            return 1;
     // check with default version...
     if(GetSymbolStartEnd(GetMapSymbols(my_context->elfs[0]), name, start, end, version, vername, 1, defver))
         if(*start || *end)