Skip to content

Commit f2660cd

Browse files
committed
Improved log when PltResolver don't find a symbol
1 parent b34b7ac commit f2660cd

File tree

2 files changed

+6
-2
lines changed

2 files changed

+6
-2
lines changed

src/elfs/elfloader.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1919,8 +1919,9 @@ EXPORT void PltResolver64(x64emu_t* emu)
19191919
GetGlobalSymbolStartEnd(local_maplib, symname, &offs, &end, h, version, vername, veropt, (void**)&elfsym);
19201920
}
19211921
if (!offs) {
1922-
printf_log(LOG_NONE, "Error: PltResolver: Symbol %s %s(%sver %d: %s%s%s) not found, cannot apply R_X86_64_JUMP_SLOT %p (%p) in %s (local_maplib=%p, global maplib=%p, deepbind=%d)\n", (bind==STB_LOCAL)?"Local":((bind==STB_WEAK)?"Weak":""), symname, veropt?"opt":"", version, symname, vername?"@":"", vername?vername:"", p, *(void**)p, h->name, local_maplib, my_context->maplib, deepbind);
1922+
printf_log(LOG_NONE, "Error: PltResolver: Symbol %s %s(%sver %d: %s%s%s) not found, cannot apply R_X86_64_JUMP_SLOT %p in %s (local_maplib=%p, global maplib=%p, deepbind=%d)\n", (bind==STB_LOCAL)?"Local":((bind==STB_WEAK)?"Weak":""), symname, veropt?"opt":"", version, symname, vername?"@":"", vername?vername:"", p, (h && h->name)?h->name:"???", local_maplib, my_context->maplib, deepbind);
19231923
emu->quit = 1;
1924+
R_RIP = 0; //stop....
19241925
return;
19251926
} else {
19261927
elfheader_t* sym_elf = FindElfSymbol(my_context, elfsym);

src/emu/x64int3.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,7 @@ void x64Int3(x64emu_t* emu, uintptr_t* addr)
153153
if(!s)
154154
s = GetNativeName((void*)a);
155155
if(a==(uintptr_t)PltResolver64) {
156+
post = 100;
156157
if(BOX64ENV(rolling_log)) {
157158
uintptr_t addr = *((uint64_t*)(R_RSP));
158159
int slot = *((uint64_t*)(R_RSP+8));
@@ -410,7 +411,9 @@ void x64Int3(x64emu_t* emu, uintptr_t* addr)
410411
uint8_t type = *(uint8_t*)(R_RAX);
411412
snprintf(buff2, 64, "[type=%d]", type);
412413
}
413-
break;
414+
case 100:
415+
snprintf(buff2, 64, "[function: %p]", (void*)R_RIP);
416+
break;
414417
}
415418
if(perr==1 && (S_EAX)<0)
416419
snprintf(buff3, 64, " (errno=%d:\"%s\")", e, strerror(e));

0 commit comments

Comments
 (0)