wine/ dlls/dbghelp/dbghelp.spec dlls/dbghelp/m ...
Alexandre Julliard
julliard at wine.codeweavers.com
Tue Nov 29 05:08:28 CST 2005
ChangeSet ID: 21543
CVSROOT: /opt/cvs-commit
Module name: wine
Changes by: julliard at winehq.org 2005/11/29 05:08:28
Modified files:
dlls/dbghelp : dbghelp.spec module.c
include : dbghelp.h
Log message:
Eric Pouech <eric.pouech at wanadoo.fr>
Implemented SymGetModuleInfo64.
Patch: http://cvs.winehq.org/patch.py?id=21543
Old revision New revision Changes Path
1.15 1.16 +1 -1 wine/dlls/dbghelp/dbghelp.spec
1.15 1.16 +55 -0 wine/dlls/dbghelp/module.c
1.20 1.21 +30 -1 wine/include/dbghelp.h
Index: wine/dlls/dbghelp/dbghelp.spec
diff -u -p wine/dlls/dbghelp/dbghelp.spec:1.15 wine/dlls/dbghelp/dbghelp.spec:1.16
--- wine/dlls/dbghelp/dbghelp.spec:1.15 29 Nov 2005 11: 8:28 -0000
+++ wine/dlls/dbghelp/dbghelp.spec 29 Nov 2005 11: 8:28 -0000
@@ -53,7 +53,7 @@
@ stdcall SymGetLinePrev(long ptr)
@ stub SymGetModuleBase64
@ stdcall SymGetModuleBase(long long)
-@ stub SymGetModuleInfo64
+@ stdcall SymGetModuleInfo64(long double ptr)
@ stdcall SymGetModuleInfo(long long ptr)
@ stub SymGetModuleInfoW64
@ stub SymGetModuleInfoW
Index: wine/dlls/dbghelp/module.c
diff -u -p wine/dlls/dbghelp/module.c:1.15 wine/dlls/dbghelp/module.c:1.16
--- wine/dlls/dbghelp/module.c:1.15 29 Nov 2005 11: 8:28 -0000
+++ wine/dlls/dbghelp/module.c 29 Nov 2005 11: 8:28 -0000
@@ -551,6 +551,61 @@ BOOL WINAPI SymGetModuleInfo(HANDLE hPr
return TRUE;
}
+/******************************************************************
+ * SymGetModuleInfo64 (DBGHELP.@)
+ *
+ */
+BOOL WINAPI SymGetModuleInfo64(HANDLE hProcess, DWORD64 dwAddr,
+ PIMAGEHLP_MODULE64 ModuleInfo)
+{
+ struct process* pcs = process_find_by_handle(hProcess);
+ struct module* module;
+ DWORD sz;
+ IMAGEHLP_MODULE64 mod;
+
+ TRACE("%p %s %p\n", hProcess, wine_dbgstr_longlong(dwAddr), ModuleInfo);
+
+ if (!pcs) return FALSE;
+ if (ModuleInfo->SizeOfStruct > sizeof(*ModuleInfo)) return FALSE;
+ module = module_find_by_addr(pcs, dwAddr, DMT_UNKNOWN);
+ if (!module) return FALSE;
+
+ mod.BaseOfImage = module->module.BaseOfImage;
+ mod.ImageSize = module->module.ImageSize;
+ mod.TimeDateStamp = module->module.TimeDateStamp;
+ mod.CheckSum = module->module.CheckSum;
+ mod.NumSyms = module->module.NumSyms;
+ mod.SymType = module->module.SymType;
+ strcpy(mod.ModuleName, module->module.ModuleName);
+ strcpy(mod.ImageName, module->module.ImageName);
+ strcpy(mod.LoadedImageName, module->module.LoadedImageName);
+ /* FIXME: all following attributes need to be set */
+ mod.LoadedPdbName[0] = '\0';
+ mod.CVSig = 0;
+ memset(mod.CVData, 0, sizeof(mod.CVData));
+ mod.PdbSig = 0;
+ memset(&mod.PdbSig70, 0, sizeof(mod.PdbSig70));
+ mod.PdbAge = 0;
+ mod.PdbUnmatched = 0;
+ mod.DbgUnmatched = 0;
+ mod.LineNumbers = 0;
+ mod.GlobalSymbols = 0;
+ mod.TypeInfo = 0;
+ mod.SourceIndexed = 0;
+ mod.Publics = 0;
+
+ if (module->module.SymType == SymNone)
+ {
+ module = module_get_container(pcs, module);
+ if (module && module->module.SymType != SymNone)
+ mod.SymType = module->module.SymType;
+ }
+ sz = ModuleInfo->SizeOfStruct;
+ memcpy(ModuleInfo, &mod, sz);
+ ModuleInfo->SizeOfStruct = sz;
+ return TRUE;
+}
+
/***********************************************************************
* SymGetModuleBase (IMAGEHLP.@)
*/
Index: wine/include/dbghelp.h
diff -u -p wine/include/dbghelp.h:1.20 wine/include/dbghelp.h:1.21
--- wine/include/dbghelp.h:1.20 29 Nov 2005 11: 8:28 -0000
+++ wine/include/dbghelp.h 29 Nov 2005 11: 8:28 -0000
@@ -113,7 +113,8 @@ typedef struct _IMAGEHLP_MODULE
CHAR LoadedImageName[256];
} IMAGEHLP_MODULE, *PIMAGEHLP_MODULE;
-typedef struct _IMAGEHLP_MODULEW {
+typedef struct _IMAGEHLP_MODULEW
+{
DWORD SizeOfStruct;
DWORD BaseOfImage;
DWORD ImageSize;
@@ -126,6 +127,33 @@ typedef struct _IMAGEHLP_MODULEW {
WCHAR LoadedImageName[256];
} IMAGEHLP_MODULEW, *PIMAGEHLP_MODULEW;
+typedef struct _IMAGEHLP_MODULE64
+{
+ DWORD SizeOfStruct;
+ DWORD64 BaseOfImage;
+ DWORD ImageSize;
+ DWORD TimeDateStamp;
+ DWORD CheckSum;
+ DWORD NumSyms;
+ SYM_TYPE SymType;
+ CHAR ModuleName[32];
+ CHAR ImageName[256];
+ CHAR LoadedImageName[256];
+ CHAR LoadedPdbName[256];
+ DWORD CVSig;
+ CHAR CVData[MAX_PATH*3];
+ DWORD PdbSig;
+ GUID PdbSig70;
+ DWORD PdbAge;
+ BOOL PdbUnmatched;
+ BOOL DbgUnmatched;
+ BOOL LineNumbers;
+ BOOL GlobalSymbols;
+ BOOL TypeInfo;
+ BOOL SourceIndexed;
+ BOOL Publics;
+} IMAGEHLP_MODULE64, *PIMAGEHLP_MODULE64;
+
typedef struct _IMAGEHLP_LINE
{
DWORD SizeOfStruct;
@@ -612,6 +640,7 @@ typedef BOOL (CALLBACK *PSYM_ENUMMODULES
BOOL WINAPI SymEnumerateModules(HANDLE, PSYM_ENUMMODULES_CALLBACK, PVOID);
BOOL WINAPI SymGetModuleInfo(HANDLE, DWORD, PIMAGEHLP_MODULE);
BOOL WINAPI SymGetModuleInfoW(HANDLE, DWORD, PIMAGEHLP_MODULEW);
+BOOL WINAPI SymGetModuleInfo64(HANDLE, DWORD64, PIMAGEHLP_MODULE64);
DWORD WINAPI SymGetModuleBase(HANDLE, DWORD);
DWORD WINAPI SymLoadModule(HANDLE, HANDLE, PSTR, PSTR, DWORD, DWORD);
DWORD64 WINAPI SymLoadModuleEx(HANDLE, HANDLE, PCSTR, PCSTR, DWORD64, DWORD,
More information about the wine-cvs
mailing list