Ken Thomases : dbghelp: Include Mach-O modules in minidumps.

Alexandre Julliard julliard at winehq.org
Wed Mar 25 10:31:31 CDT 2009


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

Author: Ken Thomases <ken at codeweavers.com>
Date:   Fri Mar 13 11:48:27 2009 -0500

dbghelp: Include Mach-O modules in minidumps.

---

 dlls/dbghelp/minidump.c |   22 ++++++++++++++++++++++
 1 files changed, 22 insertions(+), 0 deletions(-)

diff --git a/dlls/dbghelp/minidump.c b/dlls/dbghelp/minidump.c
index da0632a..78e754f 100644
--- a/dlls/dbghelp/minidump.c
+++ b/dlls/dbghelp/minidump.c
@@ -316,6 +316,27 @@ static BOOL fetch_elf_module_info_cb(const WCHAR* name, unsigned long base,
     return TRUE;
 }
 
+/******************************************************************
+ *		fetch_macho_module_info_cb
+ *
+ * Callback for accumulating in dump_context a Mach-O modules set
+ */
+static BOOL fetch_macho_module_info_cb(const WCHAR* name, unsigned long base,
+                                       void* user)
+{
+    struct dump_context*        dc = (struct dump_context*)user;
+    DWORD                       rbase, size, checksum;
+
+    /* FIXME: there's no relevant timestamp on Mach-O modules */
+    /* NB: if we have a non-null base from the live-target use it.  If we have
+     * a null base, then grab its base address from Mach-O file.
+     */
+    if (!macho_fetch_file_info(name, &rbase, &size, &checksum))
+        size = checksum = 0;
+    add_module(dc, name, base ? base : rbase, size, 0 /* FIXME */, checksum, TRUE);
+    return TRUE;
+}
+
 static void fetch_modules_info(struct dump_context* dc)
 {
     EnumerateLoadedModulesW64(dc->hProcess, fetch_pe_module_info_cb, dc);
@@ -325,6 +346,7 @@ static void fetch_modules_info(struct dump_context* dc)
      * a given application in a post mortem debugging condition.
      */
     elf_enum_modules(dc->hProcess, fetch_elf_module_info_cb, dc);
+    macho_enum_modules(dc->hProcess, fetch_macho_module_info_cb, dc);
 }
 
 static void fetch_module_versioninfo(LPCWSTR filename, VS_FIXEDFILEINFO* ffi)




More information about the wine-cvs mailing list