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