From 2a7f64af1fe12fc4521e8c8191b3be9348ec78fd Mon Sep 17 00:00:00 2001 From: winesync Date: Fri, 11 Sep 2020 18:56:31 +0200 Subject: [PATCH] [WINESYNC] dbghelp: Use local elf_section_header declaration. Based on glibc. Signed-off-by: Jacek Caban Signed-off-by: Alexandre Julliard wine commit id a6f0fe8d1ca16243771784ec34c49453c96e6479 by Jacek Caban --- dll/win32/dbghelp/elf_module.c | 18 +++++++++++++++--- dll/win32/dbghelp/image_private.h | 18 +++++++++++++++--- sdk/tools/winesync/dbghelp.cfg | 2 +- 3 files changed, 31 insertions(+), 7 deletions(-) diff --git a/dll/win32/dbghelp/elf_module.c b/dll/win32/dbghelp/elf_module.c index cb30eb23d4e..3a9af1d15d0 100644 --- a/dll/win32/dbghelp/elf_module.c +++ b/dll/win32/dbghelp/elf_module.c @@ -322,10 +322,22 @@ static BOOL elf_map_shdr(struct elf_map_file_data* emfd, struct image_file_map* { if (fmap->addr_size == 32) { - Elf32_Shdr shdr32; + struct + { + UINT32 sh_name; /* Section name (string tbl index) */ + UINT32 sh_type; /* Section type */ + UINT32 sh_flags; /* Section flags */ + UINT32 sh_addr; /* Section virtual addr at execution */ + UINT32 sh_offset; /* Section file offset */ + UINT32 sh_size; /* Section size in bytes */ + UINT32 sh_link; /* Link to another section */ + UINT32 sh_info; /* Additional section information */ + UINT32 sh_addralign; /* Section alignment */ + UINT32 sh_entsize; /* Entry size if section holds table */ + } shdr32; if (!elf_map_file_read(fmap, emfd, &shdr32, sizeof(shdr32), - fmap->u.elf.elfhdr.e_shoff + i * sizeof(Elf32_Shdr))) + fmap->u.elf.elfhdr.e_shoff + i * sizeof(shdr32))) return FALSE; fmap->u.elf.sect[i].shdr.sh_name = shdr32.sh_name; @@ -342,7 +354,7 @@ static BOOL elf_map_shdr(struct elf_map_file_data* emfd, struct image_file_map* else { if (!elf_map_file_read(fmap, emfd, &fmap->u.elf.sect[i].shdr, sizeof(fmap->u.elf.sect[i].shdr), - fmap->u.elf.elfhdr.e_shoff + i * sizeof(Elf64_Shdr))) + fmap->u.elf.elfhdr.e_shoff + i * sizeof(fmap->u.elf.sect[i].shdr))) return FALSE; } return TRUE; diff --git a/dll/win32/dbghelp/image_private.h b/dll/win32/dbghelp/image_private.h index 64515ea3a31..d440461cc14 100644 --- a/dll/win32/dbghelp/image_private.h +++ b/dll/win32/dbghelp/image_private.h @@ -68,6 +68,20 @@ struct elf_header UINT16 e_shstrndx; /* Section header string table index */ }; +struct elf_section_header +{ + UINT32 sh_name; /* Section name (string tbl index) */ + UINT32 sh_type; /* Section type */ + UINT64 sh_flags; /* Section flags */ + UINT64 sh_addr; /* Section virtual addr at execution */ + UINT64 sh_offset; /* Section file offset */ + UINT64 sh_size; /* Section size in bytes */ + UINT32 sh_link; /* Link to another section */ + UINT32 sh_info; /* Additional section information */ + UINT64 sh_addralign; /* Section alignment */ + UINT64 sh_entsize; /* Entry size if section holds table */ +}; + /* structure holding information while handling an ELF image * allows one by one section mapping for memory savings */ @@ -87,13 +101,11 @@ struct image_file_map const char* shstrtab; char* target_copy; struct elf_header elfhdr; -#if defined(__ELF__) && !defined(DBGHELP_STATIC_LIB) struct { - Elf64_Shdr shdr; + struct elf_section_header shdr; const char* mapped; }* sect; -#endif } elf; struct macho_file_map { diff --git a/sdk/tools/winesync/dbghelp.cfg b/sdk/tools/winesync/dbghelp.cfg index f435483c7d9..5791a929905 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: 78845911da06fc75c6d74237f816a1547c24b20b + wine: a6f0fe8d1ca16243771784ec34c49453c96e6479