ChangeSet ID: 21534 CVSROOT: /opt/cvs-commit Module name: wine Changes by: julliard@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@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);