wine/ dlls/dbghelp/dbghelp.c dlls/dbghelp/dbgh ...

Alexandre Julliard julliard at wine.codeweavers.com
Tue Nov 29 05:06:52 CST 2005


ChangeSet ID:	21534
CVSROOT:	/opt/cvs-commit
Module name:	wine
Changes by:	julliard at winehq.org	2005/11/29 05:06:52

Modified files:
	dlls/dbghelp   : dbghelp.c dbghelp.spec dbghelp_private.h 
	                 module.c 
	include        : dbghelp.h 

Log message:
	Eric Pouech <eric.pouech at wanadoo.fr>
	Implemented SymLoadModuleEx.

Patch: http://cvs.winehq.org/patch.py?id=21534

Old revision  New revision  Changes     Path
 1.15          1.16          +15 -0      wine/dlls/dbghelp/dbghelp.c
 1.13          1.14          +1 -1       wine/dlls/dbghelp/dbghelp.spec
 1.18          1.19          +2 -1       wine/dlls/dbghelp/dbghelp_private.h
 1.13          1.14          +17 -0      wine/dlls/dbghelp/module.c
 1.18          1.19          +1 -1       wine/include/dbghelp.h

Index: wine/dlls/dbghelp/dbghelp.c
diff -u -p wine/dlls/dbghelp/dbghelp.c:1.15 wine/dlls/dbghelp/dbghelp.c:1.16
--- wine/dlls/dbghelp/dbghelp.c:1.15	29 Nov 2005 11: 6:52 -0000
+++ wine/dlls/dbghelp/dbghelp.c	29 Nov 2005 11: 6:52 -0000
@@ -100,6 +100,21 @@ struct process*    process_find_by_handl
 }
 
 /******************************************************************
+ *             validate_addr64 (internal)
+ *
+ */
+BOOL validate_addr64(DWORD64 addr)
+{
+    if (addr >> 32)
+    {
+        FIXME("Unsupported address %s\n", wine_dbgstr_longlong(addr));
+        SetLastError(ERROR_INVALID_PARAMETER);
+        return FALSE;
+    }
+    return TRUE;
+}
+
+/******************************************************************
  *		SymSetSearchPath (DBGHELP.@)
  *
  */
Index: wine/dlls/dbghelp/dbghelp.spec
diff -u -p wine/dlls/dbghelp/dbghelp.spec:1.13 wine/dlls/dbghelp/dbghelp.spec:1.14
--- wine/dlls/dbghelp/dbghelp.spec:1.13	29 Nov 2005 11: 6:52 -0000
+++ wine/dlls/dbghelp/dbghelp.spec	29 Nov 2005 11: 6:52 -0000
@@ -72,7 +72,7 @@
 @ stdcall SymInitialize(long str long)
 @ stdcall SymLoadModule64(long long str str double long)
 @ stdcall SymLoadModule(long long str str long long)
-@ stub SymLoadModuleEx
+@ stdcall SymLoadModuleEx(long long str str double long ptr long)
 @ stdcall SymMatchFileName(str str ptr ptr)
 @ stub SymMatchString
 @ stdcall SymRegisterCallback64(long ptr double)
Index: wine/dlls/dbghelp/dbghelp_private.h
diff -u -p wine/dlls/dbghelp/dbghelp_private.h:1.18 wine/dlls/dbghelp/dbghelp_private.h:1.19
--- wine/dlls/dbghelp/dbghelp_private.h:1.18	29 Nov 2005 11: 6:52 -0000
+++ wine/dlls/dbghelp/dbghelp_private.h	29 Nov 2005 11: 6:52 -0000
@@ -312,7 +312,8 @@ struct line_info
 /* dbghelp.c */
 extern struct process* process_find_by_handle(HANDLE hProcess);
 extern HANDLE hMsvcrt;
-
+extern BOOL validate_addr64(DWORD64 addr);
+	
 /* elf_module.c */
 typedef BOOL (*elf_enum_modules_cb)(const char*, unsigned long addr, void* user);
 extern BOOL         elf_enum_modules(HANDLE hProc, elf_enum_modules_cb, void*);
Index: wine/dlls/dbghelp/module.c
diff -u -p wine/dlls/dbghelp/module.c:1.13 wine/dlls/dbghelp/module.c:1.14
--- wine/dlls/dbghelp/module.c:1.13	29 Nov 2005 11: 6:52 -0000
+++ wine/dlls/dbghelp/module.c	29 Nov 2005 11: 6:52 -0000
@@ -375,6 +375,23 @@ done:
 }
 
 /***********************************************************************
+ *			SymLoadModuleEx (DBGHELP.@)
+ */
+DWORD64 WINAPI  SymLoadModuleEx(HANDLE hProcess, HANDLE hFile, PCSTR ImageName,
+                                PCSTR ModuleName, DWORD64 BaseOfDll, DWORD DllSize,
+                                PMODLOAD_DATA Data, DWORD Flags)
+{
+    if (Data || Flags)
+    {
+        FIXME("Unsupported parameters (%p, %lx) for %s\n", Data, Flags, ImageName);
+        if (Flags & 1) return TRUE;
+    }
+    if (!validate_addr64(BaseOfDll)) return FALSE;
+    return SymLoadModule(hProcess, hFile, (char*)ImageName, (char*)ModuleName,
+                         (DWORD)BaseOfDll, DllSize);
+}
+
+/***********************************************************************
  *                     SymLoadModule64 (DBGHELP.@)
  */
 DWORD WINAPI SymLoadModule64(HANDLE hProcess, HANDLE hFile, char* ImageName,
Index: wine/include/dbghelp.h
diff -u -p wine/include/dbghelp.h:1.18 wine/include/dbghelp.h:1.19
--- wine/include/dbghelp.h:1.18	29 Nov 2005 11: 6:52 -0000
+++ wine/include/dbghelp.h	29 Nov 2005 11: 6:52 -0000
@@ -614,7 +614,7 @@ BOOL    WINAPI SymGetModuleInfo(HANDLE, 
 BOOL    WINAPI SymGetModuleInfoW(HANDLE, DWORD, PIMAGEHLP_MODULEW);
 DWORD   WINAPI SymGetModuleBase(HANDLE, DWORD);
 DWORD   WINAPI SymLoadModule(HANDLE, HANDLE, PSTR, PSTR, DWORD, DWORD);
-DWORD64 WINAPI SymLoadModuleEx(HANDLE, HANDLE, PSTR, PSTR, DWORD64, DWORD,
+DWORD64 WINAPI SymLoadModuleEx(HANDLE, HANDLE, PCSTR, PCSTR, DWORD64, DWORD,
                                PMODLOAD_DATA, DWORD);
 BOOL    WINAPI SymUnloadModule(HANDLE, DWORD);
 



More information about the wine-cvs mailing list