diff options
| author | ptitSeb <seebastien.chev@gmail.com> | 2023-08-27 17:16:22 +0200 |
|---|---|---|
| committer | ptitSeb <seebastien.chev@gmail.com> | 2023-08-27 17:16:22 +0200 |
| commit | 103c804c8ef230cb8c102c36a9bd5ed8582f3aed (patch) | |
| tree | 46e0a762c0f644d19e6081daa63951d1926a2e12 /src | |
| parent | c7db4470e4ea0bab6fb05f29b1f4cfb69d7b7afe (diff) | |
| download | box64-103c804c8ef230cb8c102c36a9bd5ed8582f3aed.tar.gz box64-103c804c8ef230cb8c102c36a9bd5ed8582f3aed.zip | |
[ELFLOADER] This was missing from previous elfloader work
Diffstat (limited to 'src')
| -rw-r--r-- | src/elfs/elfloader.c | 4 |
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]) { |