diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2022-07-11 19:55:27 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2022-07-11 19:55:27 +0200 |
| commit | 1bb27f2b807c3a9b67a0fdaf52f7390c6551acdd (patch) | |
| tree | 8a648585ddf6bc7a4ed857ae7273aa9cef9ad2ab /src | |
| parent | 96dae29f4dc438d9eb0c59bc61e4f30cbcfc094c (diff) | |
| download | box64-1bb27f2b807c3a9b67a0fdaf52f7390c6551acdd.tar.gz box64-1bb27f2b807c3a9b67a0fdaf52f7390c6551acdd.zip | |
Added a workaround for missing __gxx_personality_v0 function (for #349)
Diffstat (limited to 'src')
| -rwxr-xr-x | src/elfs/elfloader.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/elfs/elfloader.c b/src/elfs/elfloader.c index 4f054785..f20e9e36 100755 --- a/src/elfs/elfloader.c +++ b/src/elfs/elfloader.c @@ -716,9 +716,13 @@ int RelocateElfRELA(lib_t *maplib, lib_t *local_maplib, int bindnow, elfheader_t break; case R_X86_64_64: if (!offs) { - printf_log(LOG_NONE, "Error: Symbol %s not found, cannot apply R_X86_64_64 @%p (%p) in %s\n", symname, p, *(void**)p, head->name); - ret_ok = 1; - // return -1; + if(symname && !strcmp(symname, "__gxx_personality_v0")) { + printf_dump(LOG_NEVER, "Warning: Symbol %s not found, cannot apply R_X86_64_64 @%p (%p) in %s\n", symname, p, *(void**)p, head->name); + } else { + printf_log(LOG_NONE, "Error: Symbol %s not found, cannot apply R_X86_64_64 @%p (%p) in %s\n", symname, p, *(void**)p, head->name); + ret_ok = 1; + // return -1; + } } else { printf_dump(LOG_NEVER, "Apply %s R_X86_64_64 @%p with sym=%s (ver=%d/%s) addend=0x%lx (%p -> %p)\n", (bind==STB_LOCAL)?"Local":"Global", p, symname, version, vername?vername:"(none)", rela[i].r_addend, *(void**)p, (void*)(offs+rela[i].r_addend/*+*(uint64_t*)p*/)); |