https://git.reactos.org/?p=reactos.git;a=commitdiff;h=56b57ef7c518da75d8d8e5...
commit 56b57ef7c518da75d8d8e53af6b9378266ea86af Author: winesync ros-dev@reactos.org AuthorDate: Fri Sep 11 17:05:17 2020 +0200 Commit: Jérôme Gardou jerome.gardou@reactos.org 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 jacek@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
wine commit id 171c6fadab8eb444968c1b3a4b364e2e978a639a by Jacek Caban jacek@codeweavers.com --- 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