https://git.reactos.org/?p=reactos.git;a=commitdiff;h=56b57ef7c518da75d8d8e53af6b9378266ea86af

commit 56b57ef7c518da75d8d8e53af6b9378266ea86af
Author:     winesync <[email protected]>
AuthorDate: Fri Sep 11 17:05:17 2020 +0200
Commit:     Jérôme Gardou <[email protected]>
CommitDate: Wed Sep 16 10:35:45 2020 +0200

    [WINESYNC] dbghelp: Use elf_check_debug_link in elf_locate_build_id_target.
    
    Signed-off-by: Jacek Caban <[email protected]>
    Signed-off-by: Alexandre Julliard <[email protected]>
    
    wine commit id 171c6fadab8eb444968c1b3a4b364e2e978a639a by Jacek Caban 
<[email protected]>
---
 dll/win32/dbghelp/elf_module.c | 24 +++++++++++++-----------
 sdk/tools/winesync/dbghelp.cfg |  2 +-
 2 files changed, 14 insertions(+), 12 deletions(-)

diff --git a/dll/win32/dbghelp/elf_module.c b/dll/win32/dbghelp/elf_module.c
index 1ad37a24ed1..c89292a644e 100644
--- a/dll/win32/dbghelp/elf_module.c
+++ b/dll/win32/dbghelp/elf_module.c
@@ -985,20 +985,25 @@ static BOOL elf_check_debug_link(const WCHAR* file, 
struct image_file_map* fmap,
 {
     HANDLE handle;
     WCHAR *path;
-    DWORD crc;
-    BOOL ret = FALSE;
+    BOOL ret;
 
     path = get_dos_file_name(file);
     handle = CreateFileW(path, GENERIC_READ, FILE_SHARE_READ, NULL, 
OPEN_EXISTING, 0, NULL);
     heap_free(path);
     if (handle == INVALID_HANDLE_VALUE) return FALSE;
 
-    crc = calc_crc32(handle);
-    if (crc != link_crc)
-        WARN("Bad CRC for file %s (got %08x while expecting %08x)\n",  
debugstr_w(file), crc, link_crc);
-    else
-        ret = elf_map_handle(handle, fmap);
+    if (link_crc)
+    {
+        DWORD crc = calc_crc32(handle);
+        if (crc != link_crc)
+        {
+            WARN("Bad CRC for file %s (got %08x while expecting %08x)\n",  
debugstr_w(file), crc, link_crc);
+            CloseHandle(handle);
+            return FALSE;
+        }
+    }
 
+    ret = elf_map_handle(handle, fmap);
     CloseHandle(handle);
     return ret;
 }
@@ -1094,7 +1099,6 @@ static BOOL elf_locate_build_id_target(struct 
image_file_map* fmap, const BYTE*
     WCHAR* p;
     WCHAR* z;
     const BYTE* idend = id + idlen;
-    struct elf_map_file_data emfd;
 
     fmap_link = HeapAlloc(GetProcessHeap(), 0, sizeof(*fmap_link));
     if (!fmap_link) return FALSE;
@@ -1125,9 +1129,7 @@ static BOOL elf_locate_build_id_target(struct 
image_file_map* fmap, const BYTE*
     memcpy(z, dotDebug0W, sizeof(dotDebug0W));
     TRACE("checking %s\n", wine_dbgstr_w(p));
 
-    emfd.kind = from_file;
-    emfd.u.file.filename = p;
-    if (elf_map_file(&emfd, fmap_link))
+    if (elf_check_debug_link(p, fmap_link, 0))
     {
         struct image_section_map buildid_sect;
         if (image_find_section(fmap_link, ".note.gnu.build-id", &buildid_sect))
diff --git a/sdk/tools/winesync/dbghelp.cfg b/sdk/tools/winesync/dbghelp.cfg
index 15bcb22091d..db527a2f157 100644
--- a/sdk/tools/winesync/dbghelp.cfg
+++ b/sdk/tools/winesync/dbghelp.cfg
@@ -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: c1d867fa872fafe1e6cc54ba6da63868fb7a4a6f
+  wine: 171c6fadab8eb444968c1b3a4b364e2e978a639a

Reply via email to