[5/6] dbghelp: Don't define 32-bit stack management functions in Win64.

Mike Ruprecht cmaiku at gmail.com
Fri Mar 6 01:36:22 CST 2009


---
 dlls/dbghelp/dbghelp.spec |    6 +++---
 dlls/dbghelp/stack.c      |    4 ++++
 dlls/dbghelp/symbol.c     |    4 +++-
 include/dbghelp.h         |   20 ++++++++++++++++++++
 4 files changed, 30 insertions(+), 4 deletions(-)

diff --git a/dlls/dbghelp/dbghelp.spec b/dlls/dbghelp/dbghelp.spec
index cfbcf90..693d8c6 100644
--- a/dlls/dbghelp/dbghelp.spec
+++ b/dlls/dbghelp/dbghelp.spec
@@ -30,7 +30,7 @@
 @ stdcall MiniDumpWriteDump(ptr long ptr long long long long)
 @ stdcall SearchTreeForFile(str str ptr)
 @ stdcall SearchTreeForFileW(wstr wstr ptr)
-@ stdcall StackWalk(long long long ptr ptr ptr ptr ptr ptr)
+@ stdcall -i386 StackWalk(long long long ptr ptr ptr ptr ptr ptr)
 @ stdcall StackWalk64(long long long ptr ptr ptr ptr ptr ptr)
 @ stub SymAddSourceStream
 @ stub SymAddSourceStreamA
@@ -78,7 +78,7 @@
 @ stub SymFromNameW
 @ stub SymFromToken
 @ stub SymFromTokenW
-@ stdcall SymFunctionTableAccess(long long)
+@ stdcall -i386 SymFunctionTableAccess(long long)
 @ stdcall SymFunctionTableAccess64(long double)
 @ stub SymGetFileLineOffsets64
 @ stub SymGetHomeDirectory
@@ -148,7 +148,7 @@
 @ stdcall -i386 SymRegisterCallback(long ptr ptr)
 @ stdcall SymRegisterCallback64(long ptr double)
 @ stdcall SymRegisterCallbackW64(long ptr double)
-@ stdcall SymRegisterFunctionEntryCallback(ptr ptr ptr)
+@ stdcall -i386 SymRegisterFunctionEntryCallback(ptr ptr ptr)
 @ stdcall SymRegisterFunctionEntryCallback64(ptr ptr double)
 @ stdcall SymSearch(long double long long str double ptr ptr long)
 @ stdcall SymSearchW(long double long long wstr double ptr ptr long)
diff --git a/dlls/dbghelp/stack.c b/dlls/dbghelp/stack.c
index 3c66fcb..48ec210 100644
--- a/dlls/dbghelp/stack.c
+++ b/dlls/dbghelp/stack.c
@@ -461,6 +461,7 @@ done_err:
     return FALSE;
 }
 
+#if defined(_IMAGEHLP_SOURCE_) || !defined(_IMAGEHLP64)
 /***********************************************************************
  *		StackWalk (DBGHELP.@)
  */
@@ -495,6 +496,7 @@ BOOL WINAPI StackWalk(DWORD MachineType, HANDLE hProcess, HANDLE hThread,
 
     return stack_walk(&swcb, frame);
 }
+#endif
 
 
 /***********************************************************************
@@ -575,6 +577,7 @@ BOOL WINAPI StackWalk64(DWORD MachineType, HANDLE hProcess, HANDLE hThread,
     return ret;
 }
 
+#if defined(_IMAGEHLP_SOURCE_) || !defined(_IMAGEHLP64)
 /******************************************************************
  *		SymRegisterFunctionEntryCallback (DBGHELP.@)
  *
@@ -587,6 +590,7 @@ BOOL WINAPI SymRegisterFunctionEntryCallback(HANDLE hProc,
     SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
     return FALSE;
 }
+#endif
 
 /******************************************************************
  *		SymRegisterFunctionEntryCallback64 (DBGHELP.@)
diff --git a/dlls/dbghelp/symbol.c b/dlls/dbghelp/symbol.c
index 4d4a0b6..11b3a73 100644
--- a/dlls/dbghelp/symbol.c
+++ b/dlls/dbghelp/symbol.c
@@ -1676,7 +1676,8 @@ BOOL WINAPI SymGetLineNext64(HANDLE hProcess, PIMAGEHLP_LINE64 Line)
     copy_line_64_from_32(Line, &line32);
     return TRUE;
 }
-    
+
+#if defined(_IMAGEHLP_SOURCE_) || !defined(_IMAGEHLP64)
 /***********************************************************************
  *		SymFunctionTableAccess (DBGHELP.@)
  */
@@ -1685,6 +1686,7 @@ PVOID WINAPI SymFunctionTableAccess(HANDLE hProcess, DWORD AddrBase)
     WARN("(%p, 0x%08x): stub\n", hProcess, AddrBase);
     return NULL;
 }
+#endif
 
 /***********************************************************************
  *		SymFunctionTableAccess64 (DBGHELP.@)
diff --git a/include/dbghelp.h b/include/dbghelp.h
index 821a979..e2d165e 100644
--- a/include/dbghelp.h
+++ b/include/dbghelp.h
@@ -1352,6 +1352,13 @@ typedef struct _STACKFRAME64
     KDHELP64    KdHelp;
 } STACKFRAME64, *LPSTACKFRAME64;
 
+#if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
+#define PREAD_PROCESS_MEMORY_ROUTINE PREAD_PROCESS_MEMORY_ROUTINE64
+#define PFUNCTION_TABLE_ACCESS_ROUTINE PFUNCTION_TABLE_ACCESS_ROUTINE64
+#define PGET_MODULE_BASE_ROUTINE PGET_MODULE_BASE_ROUTINE64
+#define PTRANSLATE_ADDRESS_ROUTINE PTRANSLATE_ADDRESS_ROUTINE64
+#define StackWalk StackWalk64
+#else
 typedef BOOL (CALLBACK *PREAD_PROCESS_MEMORY_ROUTINE)
     (HANDLE, DWORD, PVOID, DWORD, PDWORD);
 typedef PVOID (CALLBACK *PFUNCTION_TABLE_ACCESS_ROUTINE)(HANDLE, DWORD);
@@ -1362,6 +1369,7 @@ BOOL WINAPI StackWalk(DWORD, HANDLE, HANDLE, LPSTACKFRAME, PVOID,
                       PFUNCTION_TABLE_ACCESS_ROUTINE,
                       PGET_MODULE_BASE_ROUTINE,
                       PTRANSLATE_ADDRESS_ROUTINE);
+#endif
 
 typedef BOOL (CALLBACK *PREAD_PROCESS_MEMORY_ROUTINE64)
     (HANDLE, DWORD64, PVOID, DWORD, PDWORD);
@@ -1374,13 +1382,25 @@ BOOL WINAPI StackWalk64(DWORD, HANDLE, HANDLE, LPSTACKFRAME64, PVOID,
                         PGET_MODULE_BASE_ROUTINE64,
                         PTRANSLATE_ADDRESS_ROUTINE64);
 
+#if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
+#define SymFunctionTableAccess SymFunctionTableAccess64
+#else
 PVOID WINAPI SymFunctionTableAccess(HANDLE, DWORD);
+#endif
 PVOID WINAPI SymFunctionTableAccess64(HANDLE, DWORD64);
 
+#if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
+#define PSYMBOL_FUNCENTRY_CALLBACK PSYMBOL_FUNCENTRY_CALLBACK64
+#else
 typedef PVOID (CALLBACK *PSYMBOL_FUNCENTRY_CALLBACK)(HANDLE, DWORD, PVOID);
+#endif
 typedef PVOID (CALLBACK *PSYMBOL_FUNCENTRY_CALLBACK64)(HANDLE, ULONG64, ULONG64);
 
+#if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
+#define SymRegisterFunctionEntryCallback SymRegisterFunctionEntryCallback64
+#else
 BOOL WINAPI SymRegisterFunctionEntryCallback(HANDLE, PSYMBOL_FUNCENTRY_CALLBACK, PVOID);
+#endif
 BOOL WINAPI SymRegisterFunctionEntryCallback64(HANDLE, PSYMBOL_FUNCENTRY_CALLBACK64, ULONG64);
 
 /*************************
-- 
1.6.0.4




More information about the wine-patches mailing list