about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2024-05-05 12:39:27 +0200
committerptitSeb <sebastien.chev@gmail.com>2024-05-05 12:39:27 +0200
commitff030fcbec7ae479b72551ccb094e70a6c3320a6 (patch)
treeb8f6128e8e989ea1d1e1752f5163dcb1007d3a2e /src
parentecf19029f55cbcd3646b032d7775eced4ba677bc (diff)
downloadbox64-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.c7
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)