[WINESYNC] dbghelp: Use local elf_section_header declaration.

Based on glibc.

Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>

wine commit id a6f0fe8d1ca16243771784ec34c49453c96e6479 by Jacek Caban <jacek@codeweavers.com>
This commit is contained in:
winesync 2020-09-11 18:56:31 +02:00 committed by Jérôme Gardou
parent 6c0765a0ec
commit 2a7f64af1f
3 changed files with 31 additions and 7 deletions

View file

@ -322,10 +322,22 @@ static BOOL elf_map_shdr(struct elf_map_file_data* emfd, struct image_file_map*
{ {
if (fmap->addr_size == 32) 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), 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; return FALSE;
fmap->u.elf.sect[i].shdr.sh_name = shdr32.sh_name; 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 else
{ {
if (!elf_map_file_read(fmap, emfd, &fmap->u.elf.sect[i].shdr, sizeof(fmap->u.elf.sect[i].shdr), 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 FALSE;
} }
return TRUE; return TRUE;

View file

@ -68,6 +68,20 @@ struct elf_header
UINT16 e_shstrndx; /* Section header string table index */ 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 /* structure holding information while handling an ELF image
* allows one by one section mapping for memory savings * allows one by one section mapping for memory savings
*/ */
@ -87,13 +101,11 @@ struct image_file_map
const char* shstrtab; const char* shstrtab;
char* target_copy; char* target_copy;
struct elf_header elfhdr; struct elf_header elfhdr;
#if defined(__ELF__) && !defined(DBGHELP_STATIC_LIB)
struct struct
{ {
Elf64_Shdr shdr; struct elf_section_header shdr;
const char* mapped; const char* mapped;
}* sect; }* sect;
#endif
} elf; } elf;
struct macho_file_map struct macho_file_map
{ {

View file

@ -4,4 +4,4 @@ files:
include/dbghelp.h: sdk/include/psdk/dbghelp.h include/dbghelp.h: sdk/include/psdk/dbghelp.h
include/wine/mscvpdb.h: sdk/include/reactos/wine/mscvpdb.h include/wine/mscvpdb.h: sdk/include/reactos/wine/mscvpdb.h
tags: tags:
wine: 78845911da06fc75c6d74237f816a1547c24b20b wine: a6f0fe8d1ca16243771784ec34c49453c96e6479