diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2024-05-05 12:39:27 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2024-05-05 12:39:27 +0200 |
| commit | ff030fcbec7ae479b72551ccb094e70a6c3320a6 (patch) | |
| tree | b8f6128e8e989ea1d1e1752f5163dcb1007d3a2e /src | |
| parent | ecf19029f55cbcd3646b032d7775eced4ba677bc (diff) | |
| download | box64-ff030fcbec7ae479b72551ccb094e70a6c3320a6.tar.gz box64-ff030fcbec7ae479b72551ccb094e70a6c3320a6.zip | |
[ELFLOADER] Added a fix for Uniengine Heaven linux crashing at load, but might need something more generic at some point
Diffstat (limited to 'src')
| -rw-r--r-- | src/elfs/elfloader.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/elfs/elfloader.c b/src/elfs/elfloader.c index ebd5f667..1afda4be 100644 --- a/src/elfs/elfloader.c +++ b/src/elfs/elfloader.c @@ -691,6 +691,13 @@ int RelocateElfRELA(lib_t *maplib, lib_t *local_maplib, int bindnow, int deepbin } break; case R_X86_64_64: + if(GetSymbolStartEnd(my_context->globdata, symname, &globoffs, &globend, version, vername, 1, veropt)) { + if(offs!=globoffs) { + offs = globoffs; + sym_elf = my_context->elfs[0]; + elfsym = ElfDynSymLookup(sym_elf, symname); + } + } if (!offs && !elfsym) { printf_log(LOG_INFO, "%s: Symbol %s not found, cannot apply R_X86_64_64 @%p (%p) in %s\n", (bind==STB_GLOBAL)?"Error":"Warning", symname, p, *(void**)p, head->name); if(bind==STB_GLOBAL) |