[3/5] dbghelp: Don't define 32-bit symbol handling functions in Win64.

Mike Ruprecht cmaiku at gmail.com
Fri Mar 6 17:04:11 CST 2009


---
 dlls/dbghelp/dbghelp.c    |    2 ++
 dlls/dbghelp/dbghelp.spec |   16 ++++++++--------
 dlls/dbghelp/symbol.c     |   12 ++++++++++++
 include/dbghelp.h         |   32 ++++++++++++++++++++++++++++++++
 4 files changed, 54 insertions(+), 8 deletions(-)

diff --git a/dlls/dbghelp/dbghelp.c b/dlls/dbghelp/dbghelp.c
index 1bfc338..e24e6e5 100644
--- a/dlls/dbghelp/dbghelp.c
+++ b/dlls/dbghelp/dbghelp.c
@@ -562,6 +562,7 @@ static BOOL sym_register_cb(HANDLE hProcess,
     return TRUE;
 }
 
+#ifndef _WIN64
 /***********************************************************************
  *		SymRegisterCallback (DBGHELP.@)
  */
@@ -574,6 +575,7 @@ BOOL WINAPI SymRegisterCallback(HANDLE hProcess,
           hProcess, CallbackFunction, UserContext);
     return sym_register_cb(hProcess, reg_cb64to32, tmp, FALSE);
 }
+#endif
 
 /***********************************************************************
  *		SymRegisterCallback64 (DBGHELP.@)
diff --git a/dlls/dbghelp/dbghelp.spec b/dlls/dbghelp/dbghelp.spec
index 6728d79..81b46d4 100644
--- a/dlls/dbghelp/dbghelp.spec
+++ b/dlls/dbghelp/dbghelp.spec
@@ -60,9 +60,9 @@
 @ stdcall -i386 SymEnumerateModules(long ptr ptr)
 @ stdcall SymEnumerateModules64(long ptr ptr)
 @ stdcall SymEnumerateModulesW64(long ptr ptr)
-@ stdcall SymEnumerateSymbols(long long ptr ptr)
+@ stdcall -i386 SymEnumerateSymbols(long long ptr ptr)
 @ stdcall SymEnumerateSymbols64(long double ptr ptr)
-@ stub SymEnumerateSymbolsW
+@ stub -i386 SymEnumerateSymbolsW
 @ stub SymEnumerateSymbolsW64
 @ stub SymFindDebugInfoFile
 @ stub SymFindDebugInfoFileW
@@ -115,13 +115,13 @@
 @ stub SymGetSourceFileW
 @ stub SymGetSourceVarFromToken
 @ stub SymGetSourceVarFromTokenW
-@ stdcall SymGetSymFromAddr(long long ptr ptr)
+@ stdcall -i386 SymGetSymFromAddr(long long ptr ptr)
 @ stdcall SymGetSymFromAddr64(long double ptr ptr)
-@ stdcall SymGetSymFromName(long str ptr)
+@ stdcall -i386 SymGetSymFromName(long str ptr)
 @ stub SymGetSymFromName64
-@ stdcall SymGetSymNext(long ptr)
+@ stdcall -i386 SymGetSymNext(long ptr)
 @ stub SymGetSymNext64
-@ stdcall SymGetSymPrev(long ptr)
+@ stdcall -i386 SymGetSymPrev(long ptr)
 @ stub SymGetSymPrev64
 @ stub SymGetSymbolFile
 @ stub SymGetSymbolFileW
@@ -145,7 +145,7 @@
 @ stub SymPrev
 @ stub SymPrevW
 @ stub SymRefreshModuleList
-@ stdcall SymRegisterCallback(long ptr ptr)
+@ stdcall -i386 SymRegisterCallback(long ptr ptr)
 @ stdcall SymRegisterCallback64(long ptr double)
 @ stdcall SymRegisterCallbackW64(long ptr double)
 @ stdcall SymRegisterFunctionEntryCallback(ptr ptr ptr)
@@ -179,7 +179,7 @@
 @ stub SymSrvStoreSupplementW
 # @ stub SymSetSymWithAddr64 no longer present ??
 @ stub SymSetSymWithAddr64
-@ stdcall SymUnDName(ptr str long)
+@ stdcall -i386 SymUnDName(ptr str long)
 @ stub SymUnDName64
 @ stdcall -i386 SymUnloadModule(long long)
 @ stdcall SymUnloadModule64(long double)
diff --git a/dlls/dbghelp/symbol.c b/dlls/dbghelp/symbol.c
index 0810506..50eb23d 100644
--- a/dlls/dbghelp/symbol.c
+++ b/dlls/dbghelp/symbol.c
@@ -1124,6 +1124,7 @@ BOOL WINAPI SymEnumSymbolsW(HANDLE hProcess, ULONG64 BaseOfDll, PCWSTR Mask,
     return ret;
 }
 
+#ifndef _WIN64
 struct sym_enumerate
 {
     void*                       ctx;
@@ -1150,6 +1151,7 @@ BOOL WINAPI SymEnumerateSymbols(HANDLE hProcess, DWORD BaseOfDll,
     
     return SymEnumSymbols(hProcess, BaseOfDll, NULL, sym_enumerate_cb, &se);
 }
+#endif
 
 struct sym_enumerate64
 {
@@ -1224,6 +1226,7 @@ BOOL WINAPI SymFromAddrW(HANDLE hProcess, DWORD64 Address,
     return ret;
 }
 
+#ifndef _WIN64
 /******************************************************************
  *		SymGetSymFromAddr (DBGHELP.@)
  *
@@ -1251,6 +1254,7 @@ BOOL WINAPI SymGetSymFromAddr(HANDLE hProcess, DWORD Address,
     lstrcpynA(Symbol->Name, si->Name, len);
     return TRUE;
 }
+#endif
 
 /******************************************************************
  *		SymGetSymFromAddr64 (DBGHELP.@)
@@ -1348,6 +1352,7 @@ BOOL WINAPI SymFromName(HANDLE hProcess, PCSTR Name, PSYMBOL_INFO Symbol)
     return FALSE;
 }
 
+#ifndef _WIN64
 /***********************************************************************
  *		SymGetSymFromName (DBGHELP.@)
  */
@@ -1369,6 +1374,7 @@ BOOL WINAPI SymGetSymFromName(HANDLE hProcess, PCSTR Name, PIMAGEHLP_SYMBOL Symb
     lstrcpynA(Symbol->Name, si->Name, len);
     return TRUE;
 }
+#endif
 
 /******************************************************************
  *		sym_fill_func_line_info
@@ -1405,6 +1411,7 @@ BOOL symt_fill_func_line_info(const struct module* module, const struct symt_fun
     return FALSE;
 }
 
+#ifndef _WIN64
 /***********************************************************************
  *		SymGetSymNext (DBGHELP.@)
  */
@@ -1420,7 +1427,9 @@ BOOL WINAPI SymGetSymNext(HANDLE hProcess, PIMAGEHLP_SYMBOL Symbol)
     SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
     return FALSE;
 }
+#endif
 
+#ifndef _WIN64
 /***********************************************************************
  *		SymGetSymPrev (DBGHELP.@)
  */
@@ -1431,6 +1440,7 @@ BOOL WINAPI SymGetSymPrev(HANDLE hProcess, PIMAGEHLP_SYMBOL Symbol)
     SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
     return FALSE;
 }
+#endif
 
 /******************************************************************
  *		SymGetLineFromAddr (DBGHELP.@)
@@ -1679,6 +1689,7 @@ PVOID WINAPI SymFunctionTableAccess64(HANDLE hProcess, DWORD64 AddrBase)
     return NULL;
 }
 
+#ifndef _WIN64
 /***********************************************************************
  *		SymUnDName (DBGHELP.@)
  */
@@ -1688,6 +1699,7 @@ BOOL WINAPI SymUnDName(PIMAGEHLP_SYMBOL sym, PSTR UnDecName, DWORD UnDecNameLeng
     return UnDecorateSymbolName(sym->Name, UnDecName, UnDecNameLength,
                                 UNDNAME_COMPLETE) != 0;
 }
+#endif
 
 static void* und_alloc(size_t len) { return HeapAlloc(GetProcessHeap(), 0, len); }
 static void  und_free (void* ptr)  { HeapFree(GetProcessHeap(), 0, ptr); }
diff --git a/include/dbghelp.h b/include/dbghelp.h
index ea6a4bc..2a778d6 100644
--- a/include/dbghelp.h
+++ b/include/dbghelp.h
@@ -1062,16 +1062,32 @@ BOOL WINAPI SymFromToken(HANDLE, DWORD64, DWORD, PSYMBOL_INFO);
 BOOL WINAPI SymFromTokenW(HANDLE, DWORD64, DWORD, PSYMBOL_INFOW);
 BOOL WINAPI SymFromName(HANDLE, PCSTR, PSYMBOL_INFO);
 BOOL WINAPI SymFromNameW(HANDLE, PCWSTR, PSYMBOL_INFOW);
+#if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
+#define SymGetSymFromAddr SymGetSymFromAddr64
+#else
 BOOL WINAPI SymGetSymFromAddr(HANDLE, DWORD, PDWORD, PIMAGEHLP_SYMBOL);
+#endif
 BOOL WINAPI SymGetSymFromAddr64(HANDLE, DWORD64, PDWORD64, PIMAGEHLP_SYMBOL64);
+#if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
+#define SymGetSymFromName SymGetSymFromName64
+#else
 BOOL WINAPI SymGetSymFromName(HANDLE, PCSTR, PIMAGEHLP_SYMBOL);
+#endif
 BOOL WINAPI SymGetSymFromName64(HANDLE, PCSTR, PIMAGEHLP_SYMBOL64);
 BOOL WINAPI SymGetTypeFromName(HANDLE, ULONG64, PCSTR, PSYMBOL_INFO);
 BOOL WINAPI SymGetTypeFromNameW(HANDLE, ULONG64, PCWSTR, PSYMBOL_INFOW);
+#if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
+#define SymGetSymNext SymGetSymNext64
+#else
 BOOL WINAPI SymGetSymNext(HANDLE, PIMAGEHLP_SYMBOL);
+#endif
 BOOL WINAPI SymGetSymNext64(HANDLE, PIMAGEHLP_SYMBOL64);
 BOOL WINAPI SymGetSymNextW64(HANDLE, PIMAGEHLP_SYMBOLW64);
+#if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
+#define SymGetSymPrev SymGetSymPrev64
+#else
 BOOL WINAPI SymGetSymPrev(HANDLE, PIMAGEHLP_SYMBOL);
+#endif
 BOOL WINAPI SymGetSymPrev64(HANDLE, PIMAGEHLP_SYMBOL64);
 BOOL WINAPI SymGetSymPrevW64(HANDLE, PIMAGEHLP_SYMBOLW64);
 BOOL WINAPI SymEnumSym(HANDLE,ULONG64,PSYM_ENUMERATESYMBOLS_CALLBACK,PVOID);
@@ -1079,22 +1095,38 @@ BOOL WINAPI SymEnumSymbols(HANDLE, ULONG64, PCSTR, PSYM_ENUMERATESYMBOLS_CALLBAC
                            PVOID);
 BOOL WINAPI SymEnumSymbolsW(HANDLE, ULONG64, PCWSTR, PSYM_ENUMERATESYMBOLS_CALLBACKW,
                             PVOID);
+#if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
+#define PSYM_ENUMSYMBOLS_CALLBACK PSYM_ENUMSYMBOLS_CALLBACK64
+#define PSYM_ENUMSYMBOLS_CALLBACKW PSYM_ENUMSYMBOLS_CALLBACKW64
+#define SymEnumerateSymbols SymEnumerateSymbols64
+#define SymEnumerateSymbolsW SymEnumerateSymbolsW64
+#else
 typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK)(PCSTR, ULONG, ULONG, PVOID);
 typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACKW)(PCWSTR, ULONG, ULONG, PVOID);
 BOOL WINAPI SymEnumerateSymbols(HANDLE, ULONG, PSYM_ENUMSYMBOLS_CALLBACK, PVOID);
 BOOL WINAPI SymEnumerateSymbolsW(HANDLE, ULONG, PSYM_ENUMSYMBOLS_CALLBACKW, PVOID);
+#endif
 typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK64)(PCSTR, DWORD64, ULONG, PVOID);
 typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK64W)(PCWSTR, DWORD64, ULONG, PVOID);
 BOOL WINAPI SymEnumerateSymbols64(HANDLE, ULONG64, PSYM_ENUMSYMBOLS_CALLBACK64, PVOID);
 BOOL WINAPI SymEnumerateSymbolsW64(HANDLE, ULONG64, PSYM_ENUMSYMBOLS_CALLBACK64W, PVOID);
 BOOL WINAPI SymEnumSymbolsForAddr(HANDLE, DWORD64, PSYM_ENUMERATESYMBOLS_CALLBACK, PVOID);
 BOOL WINAPI SymEnumSymbolsForAddrW(HANDLE, DWORD64, PSYM_ENUMERATESYMBOLS_CALLBACKW, PVOID);
+#if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
+#define PSYMBOL_REGISTERED_CALLBACK PSYMBOL_REGISTERED_CALLBACK64
+#define SymRegisterCallback SymRegisterCallback64
+#else
 typedef BOOL (CALLBACK *PSYMBOL_REGISTERED_CALLBACK)(HANDLE, ULONG, PVOID, PVOID);
 BOOL WINAPI SymRegisterCallback(HANDLE, PSYMBOL_REGISTERED_CALLBACK, PVOID);
+#endif
 typedef BOOL (CALLBACK *PSYMBOL_REGISTERED_CALLBACK64)(HANDLE, ULONG, ULONG64, ULONG64);
 BOOL WINAPI SymRegisterCallback64(HANDLE, PSYMBOL_REGISTERED_CALLBACK64, ULONG64);
 BOOL WINAPI SymRegisterCallbackW64(HANDLE, PSYMBOL_REGISTERED_CALLBACK64, ULONG64);
+#if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
+#define SymUnDName SymUnDName64
+#else
 BOOL WINAPI SymUnDName(PIMAGEHLP_SYMBOL, PSTR, DWORD);
+#endif
 BOOL WINAPI SymUnDName64(PIMAGEHLP_SYMBOL64, PSTR, DWORD);
 BOOL WINAPI SymMatchString(PCSTR, PCSTR, BOOL);
 BOOL WINAPI SymMatchStringA(PCSTR, PCSTR, BOOL);
-- 
1.6.0.4




More information about the wine-patches mailing list