Eric Pouech : dbghelp: Beef up SymRefreshModuleList.

Alexandre Julliard julliard at winehq.org
Tue Nov 17 09:28:17 CST 2009


Module: wine
Branch: master
Commit: 68cc7d58757e0a2003350a1759c4970da712a8b0
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=68cc7d58757e0a2003350a1759c4970da712a8b0

Author: Eric Pouech <eric.pouech at orange.fr>
Date:   Mon Nov 16 21:27:08 2009 +0100

dbghelp: Beef up SymRefreshModuleList.

---

 dlls/dbghelp/module.c |   22 +++++++++++++++++-----
 include/dbghelp.h     |    1 +
 2 files changed, 18 insertions(+), 5 deletions(-)

diff --git a/dlls/dbghelp/module.c b/dlls/dbghelp/module.c
index 7d2ad7f..a6778e7 100644
--- a/dlls/dbghelp/module.c
+++ b/dlls/dbghelp/module.c
@@ -455,6 +455,15 @@ enum module_type module_get_type_by_name(const WCHAR* name)
     return DMT_PE;
 }
 
+/******************************************************************
+ *		                refresh_module_list
+ */
+static BOOL refresh_module_list(struct process* pcs)
+{
+    /* force transparent ELF and Mach-O loading / unloading */
+    return elf_synchronize_module_list(pcs) || macho_synchronize_module_list(pcs);
+}
+
 /***********************************************************************
  *			SymLoadModule (DBGHELP.@)
  */
@@ -536,9 +545,7 @@ DWORD64 WINAPI  SymLoadModuleExW(HANDLE hProcess, HANDLE hFile, PCWSTR wImageNam
     if (Flags & ~(SLMFLAG_VIRTUAL))
         FIXME("Unsupported Flags %08x for %s\n", Flags, debugstr_w(wImageName));
 
-    /* force transparent ELF and Mach-O loading / unloading */
-    elf_synchronize_module_list(pcs);
-    macho_synchronize_module_list(pcs);
+    refresh_module_list(pcs);
 
     /* this is a Wine extension to the API just to redo the synchronisation */
     if (!wImageName && !hFile) return 0;
@@ -1058,6 +1065,11 @@ void module_reset_debug_info(struct module* module)
  */
 BOOL WINAPI SymRefreshModuleList(HANDLE hProcess)
 {
-    FIXME("(%p) stub\n", hProcess);
-    return FALSE;
+    struct process*     pcs;
+
+    TRACE("(%p)\n", hProcess);
+
+    if (!(pcs = process_find_by_handle(hProcess))) return FALSE;
+
+    return refresh_module_list(pcs);
 }
diff --git a/include/dbghelp.h b/include/dbghelp.h
index 98695b2..34805f4 100644
--- a/include/dbghelp.h
+++ b/include/dbghelp.h
@@ -1461,6 +1461,7 @@ BOOL    WINAPI SymGetSymPrevW(HANDLE, PIMAGEHLP_SYMBOLW);
 DWORD   WINAPI SymLoadModule(HANDLE, HANDLE, PCSTR, PCSTR, DWORD, DWORD);
 BOOL    WINAPI SymRegisterCallback(HANDLE, PSYMBOL_REGISTERED_CALLBACK, PVOID);
 BOOL    WINAPI SymRegisterFunctionEntryCallback(HANDLE, PSYMBOL_FUNCENTRY_CALLBACK, PVOID);
+BOOL    WINAPI SymRefreshModuleList(HANDLE);
 BOOL    WINAPI SymUnDName(PIMAGEHLP_SYMBOL, PSTR, DWORD);
 BOOL    WINAPI SymUnloadModule(HANDLE, DWORD);
 




More information about the wine-cvs mailing list