From a930a972dfc3cb066efed48c9508496b710e63d0 Mon Sep 17 00:00:00 2001 From: Daniel Collins Date: Sun, 12 Jan 2014 17:26:51 +0000 Subject: [PATCH] Log entry and target of stub calls. --- changes.txt | 2 ++ mkstubs.pl | 3 ++- src/common.c | 5 +++-- src/common.h | 2 +- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/changes.txt b/changes.txt index dc05b36..ecab38d 100644 --- a/changes.txt +++ b/changes.txt @@ -7,6 +7,8 @@ Version XXX: Bugfix: Removed conflicting send and connect functions. Bugfix: Fixed segfault in recvfrom when called with NULL addrlen. + + Update: Log entry and target DLL of stub calls. Version 0.4.1: Feature: Added workaround for point-to-point links. diff --git a/mkstubs.pl b/mkstubs.pl index 9be892a..cc5e046 100644 --- a/mkstubs.pl +++ b/mkstubs.pl @@ -70,8 +70,9 @@ foreach my $func(@stubs) { print CODE "_$f_name:\n"; if($do_logging) { - print CODE "\tpush\t$f_name\_sym\n"; print CODE "\tpush\tdword ".$func->{"dllnum"}."\n"; + print CODE "\tpush\t$f_name\_sym\n"; + print CODE "\tpush\tdword $dllnum\n"; print CODE "\tcall\t_log_call\n"; } diff --git a/src/common.c b/src/common.c index 4be9d50..f3d75d2 100644 --- a/src/common.c +++ b/src/common.c @@ -272,6 +272,7 @@ void __stdcall *find_sym(unsigned int dllnum, const char *symbol) { return ptr; } -void __stdcall log_call(unsigned int dllnum, const char *symbol) { - log_printf(LOG_CALL, "%s:%s", dll_names[dllnum], symbol); +void __stdcall log_call(unsigned int entry, const char *symbol, unsigned int target) +{ + log_printf(LOG_CALL, "%s:%s -> %s", dll_names[entry], symbol, dll_names[target]); } diff --git a/src/common.h b/src/common.h index de343e4..a38d836 100644 --- a/src/common.h +++ b/src/common.h @@ -62,7 +62,7 @@ bool reg_set_addr48(HKEY key, const char *name, addr48_t value); void load_dll(unsigned int dllnum); void unload_dlls(void); void __stdcall *find_sym(unsigned int dllnum, const char *symbol); -void __stdcall log_call(unsigned int dllnum, const char *symbol); +void __stdcall log_call(unsigned int entry, const char *symbol, unsigned int target); void log_open(const char *file); void log_close();