Robert Shearman : dbghelp: Implement SymGetSymFromAddr64.
Alexandre Julliard
julliard at wine.codeweavers.com
Wed Jul 26 04:22:45 CDT 2006
Module: wine
Branch: refs/heads/master
Commit: 5c8b22f385b8b87116294cf6f8cdabc5c779d01a
URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=5c8b22f385b8b87116294cf6f8cdabc5c779d01a
Author: Robert Shearman <rob at codeweavers.com>
Date: Tue Jul 25 10:35:49 2006 +0100
dbghelp: Implement SymGetSymFromAddr64.
---
dlls/dbghelp/dbghelp.spec | 2 +-
dlls/dbghelp/symbol.c | 28 ++++++++++++++++++++++++++++
2 files changed, 29 insertions(+), 1 deletions(-)
diff --git a/dlls/dbghelp/dbghelp.spec b/dlls/dbghelp/dbghelp.spec
index ca688ee..8457a35 100644
--- a/dlls/dbghelp/dbghelp.spec
+++ b/dlls/dbghelp/dbghelp.spec
@@ -99,7 +99,7 @@
@ stub SymGetSourceVarFromToken
@ stub SymGetSourceVarFromTokenW
@ stdcall SymGetSymFromAddr(long long ptr ptr)
-@ stub SymGetSymFromAddr64
+@ stdcall SymGetSymFromAddr64(long long long ptr ptr)
@ stdcall SymGetSymFromName(long str ptr)
@ stub SymGetSymFromName64
@ stdcall SymGetSymNext(long ptr)
diff --git a/dlls/dbghelp/symbol.c b/dlls/dbghelp/symbol.c
index 2d1e4ed..d93bdd2 100644
--- a/dlls/dbghelp/symbol.c
+++ b/dlls/dbghelp/symbol.c
@@ -1046,6 +1046,34 @@ BOOL WINAPI SymGetSymFromAddr(HANDLE hPr
return TRUE;
}
+/******************************************************************
+ * SymGetSymFromAddr64 (DBGHELP.@)
+ *
+ */
+BOOL WINAPI SymGetSymFromAddr64(HANDLE hProcess, DWORD64 Address,
+ PDWORD64 Displacement, PIMAGEHLP_SYMBOL64 Symbol)
+{
+ char buffer[sizeof(SYMBOL_INFO) + MAX_SYM_NAME];
+ SYMBOL_INFO*si = (SYMBOL_INFO*)buffer;
+ size_t len;
+ DWORD64 Displacement64;
+
+ if (Symbol->SizeOfStruct < sizeof(*Symbol)) return FALSE;
+ si->SizeOfStruct = sizeof(*si);
+ si->MaxNameLen = MAX_SYM_NAME;
+ if (!SymFromAddr(hProcess, Address, &Displacement64, si))
+ return FALSE;
+
+ if (Displacement)
+ *Displacement = Displacement64;
+ Symbol->Address = si->Address;
+ Symbol->Size = si->Size;
+ Symbol->Flags = si->Flags;
+ len = min(Symbol->MaxNameLength, si->MaxNameLen);
+ lstrcpynA(Symbol->Name, si->Name, len);
+ return TRUE;
+}
+
static BOOL find_name(struct process* pcs, struct module* module, const char* name,
SYMBOL_INFO* symbol)
{
More information about the wine-cvs
mailing list