about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <seebastien.chev@gmail.com>2023-08-27 17:16:22 +0200
committerptitSeb <seebastien.chev@gmail.com>2023-08-27 17:16:22 +0200
commit103c804c8ef230cb8c102c36a9bd5ed8582f3aed (patch)
tree46e0a762c0f644d19e6081daa63951d1926a2e12 /src
parentc7db4470e4ea0bab6fb05f29b1f4cfb69d7b7afe (diff)
downloadbox64-103c804c8ef230cb8c102c36a9bd5ed8582f3aed.tar.gz
box64-103c804c8ef230cb8c102c36a9bd5ed8582f3aed.zip
[ELFLOADER] This was missing from previous elfloader work
Diffstat (limited to 'src')
-rw-r--r--src/elfs/elfloader.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/elfs/elfloader.c b/src/elfs/elfloader.c
index 6a516601..1f6f6c65 100644
--- a/src/elfs/elfloader.c
+++ b/src/elfs/elfloader.c
@@ -471,7 +471,7 @@ int RelocateElfREL(lib_t *maplib, lib_t *local_maplib, int bindnow, elfheader_t*
         if(version!=-1) version &=0x7fff;
         const char* vername = GetSymbolVersion(head, version);
         const char* globdefver = (bind==STB_WEAK)?NULL:GetMaplibDefaultVersion(maplib, local_maplib, 0, symname);
-        const char* weakdefver = (bind==STB_WEAK)?GetMaplibDefaultVersion(maplib, local_maplib, 1, symname):NULL;
+        const char* weakdefver = (bind==STB_WEAK || !globdefver)?GetMaplibDefaultVersion(maplib, local_maplib, 1, symname):NULL;
         if(bind==STB_LOCAL) {
             if(!symname || !symname[0]) {
                 offs = sym->st_value + head->delta;
@@ -676,7 +676,7 @@ int RelocateElfRELA(lib_t *maplib, lib_t *local_maplib, int bindnow, elfheader_t
             weakdefver = old_weakdefver;
         } else {
             old_globdefver = globdefver = (bind==STB_WEAK)?NULL:GetMaplibDefaultVersion(maplib, local_maplib, 0, symname);
-            old_weakdefver = weakdefver = (bind==STB_WEAK)?GetMaplibDefaultVersion(maplib, local_maplib, 1, symname):NULL;
+            old_weakdefver = weakdefver = (bind==STB_WEAK || !globdefver)?GetMaplibDefaultVersion(maplib, local_maplib, 1, symname):NULL;
         }
         if(bind==STB_LOCAL) {
             if(!symname || !symname[0]) {