diff options
| author | rajdakin <rajdakin@gmail.com> | 2021-04-14 14:16:21 +0200 |
|---|---|---|
| committer | rajdakin <rajdakin@gmail.com> | 2021-04-14 14:25:02 +0200 |
| commit | cdf71c4cbc8c07510708cb7396cd1035300f587f (patch) | |
| tree | 8d790b143339b5b910594dd919754622b0885d40 /src/elfs | |
| parent | e93a280d2c94476df79f586ed352cb68f3a28867 (diff) | |
| download | box64-cdf71c4cbc8c07510708cb7396cd1035300f587f.tar.gz box64-cdf71c4cbc8c07510708cb7396cd1035300f587f.zip | |
Oops-es
Diffstat (limited to 'src/elfs')
| -rwxr-xr-x | src/elfs/elfloader.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/elfs/elfloader.c b/src/elfs/elfloader.c index 072d780c..dd7ab1d1 100755 --- a/src/elfs/elfloader.c +++ b/src/elfs/elfloader.c @@ -460,10 +460,12 @@ int RelocateElfREL(lib_t *maplib, lib_t *local_maplib, elfheader_t* head, int cn } printf_log(LOG_DUMP, "Apply %s R_X86_64_COPY @%p with sym=%s, @%p size=%ld (", (bind==STB_LOCAL)?"Local":"Global", p, symname, (void*)offs, sym->st_size); memmove(p, (void*)offs, sym->st_size); - uint32_t *k = (uint32_t*)p; - for (unsigned j=0; j<((sym->st_size>128u)?128u:sym->st_size); j+=4, ++k) - printf_log(LOG_DUMP, "%s0x%08X", j?" ":"", *k); - printf_log(LOG_DUMP, "%s)\n", (sym->st_size>128u)?" ...":""); + if(box64_log >= LOG_DUMP) { + uint64_t *k = (uint64_t*)p; + for (unsigned j=0; j<((sym->st_size>128u)?128u:sym->st_size); j+=8, ++k) + printf_log(LOG_DUMP, "%s0x%016lX", j?" ":"", *k); + printf_log(LOG_DUMP, "%s)\n", (sym->st_size>128u)?" ...":""); + } } else { printf_log(LOG_NONE, "Error: Symbol %s not found, cannot apply R_X86_64_COPY @%p (%p) in %s\n", symname, p, *(void**)p, head->name); } @@ -1112,7 +1114,7 @@ const char* FindNearestSymbolName(elfheader_t* h, void* p, uintptr_t* start, uin if(!h || h->fini_done) return ret; - for (size_t i=0; i<h->numSymTab && distance!=0; ++i) { + for (size_t i=0; i<h->numSymTab && distance!=0; ++i) { const char * symname = h->StrTab+h->SymTab[i].st_name; uintptr_t offs = h->SymTab[i].st_value + h->delta; @@ -1125,7 +1127,7 @@ const char* FindNearestSymbolName(elfheader_t* h, void* p, uintptr_t* start, uin } } } - for (size_t i=0; i<h->numDynSym && distance!=0; ++i) { + for (size_t i=0; i<h->numDynSym && distance!=0; ++i) { const char * symname = h->DynStr+h->DynSym[i].st_name; uintptr_t offs = h->DynSym[i].st_value + h->delta; |