[WINESYNC] dbghelp: Don't use elf_fetch_file_info and macho_fetch_file_info in module...
authorwinesync <ros-dev@reactos.org>
Fri, 11 Sep 2020 15:14:18 +0000 (17:14 +0200)
committerJérôme Gardou <jerome.gardou@reactos.org>
Wed, 16 Sep 2020 08:35:48 +0000 (10:35 +0200)
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
wine commit id adecdb1d01487af16f5f708ae92a05ba4707187e by Jacek Caban <jacek@codeweavers.com>

dll/win32/dbghelp/path.c
sdk/tools/winesync/dbghelp.cfg

index a5b8b4f..023adfa 100644 (file)
@@ -24,6 +24,7 @@
 #include <string.h>
 
 #include "dbghelp_private.h"
+#include "image_private.h"
 #include "winnls.h"
 #include "winternl.h"
 #include "wine/debug.h"
@@ -523,34 +524,28 @@ static BOOL CALLBACK module_find_cb(PCWSTR buffer, PVOID user)
             if (timestamp == mf->dw1 && size == mf->dw2) matched++;
         }
         break;
-    case DMT_ELF:
-        if (elf_fetch_file_info(buffer, 0, &size, &checksum))
-        {
-            matched++;
-            if (checksum == mf->dw1) matched++;
-            else
-                WARN("Found %s, but wrong checksums: %08x %08x\n",
-                     debugstr_w(buffer), checksum, mf->dw1);
-        }
-        else
-        {
-            WARN("Couldn't read %s\n", debugstr_w(buffer));
-            return FALSE;
-        }
-        break;
     case DMT_MACHO:
-        if (macho_fetch_file_info(NULL, buffer, 0, 0, &size, &checksum))
+    case DMT_ELF:
         {
-            matched++;
-            if (checksum == mf->dw1) matched++;
+            HANDLE file;
+
+            file = CreateFileW(buffer, GENERIC_READ, FILE_SHARE_READ, NULL,
+                               OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
+            if (file == INVALID_HANDLE_VALUE) break;
+
+            checksum = calc_crc32(file);
+            if (checksum == mf->dw1) matched += 2;
             else
-                WARN("Found %s, but wrong checksums: %08x %08x\n",
-                     debugstr_w(buffer), checksum, mf->dw1);
-        }
-        else
-        {
-            WARN("Couldn't read %s\n", debugstr_w(buffer));
-            return FALSE;
+            {
+                struct image_file_map fmap;
+                WARN("Found %s, but wrong checksums: %08x %08x\n", debugstr_w(buffer), checksum, mf->dw1);
+                if (elf_map_handle(file, &fmap)) /* FIXME: validate macho files */
+                {
+                    image_unmap_file(&fmap);
+                    matched++;
+                }
+            }
+            CloseHandle(file);
         }
         break;
     case DMT_PDB:
index 59039ad..528e63f 100644 (file)
@@ -4,4 +4,4 @@ files:
   include/dbghelp.h: sdk/include/psdk/dbghelp.h
   include/wine/mscvpdb.h: sdk/include/reactos/wine/mscvpdb.h
 tags:
-  wine: fec0157585e9d8bd03a8a71d1ed9b9d7ca59cb56
+  wine: adecdb1d01487af16f5f708ae92a05ba4707187e