diff options
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]) { |