Module: wine Branch: master Commit: 64341284c58bcc22f13f8146bcb6c8a08c0c4ff2 URL: https://source.winehq.org/git/wine.git/?a=commit;h=64341284c58bcc22f13f8146b...
Author: Jacek Caban jacek@codeweavers.com Date: Wed Apr 1 20:28:32 2020 +0200
dbghelp: Use local macho section declaration.
Signed-off-by: Jacek Caban jacek@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/dbghelp/image_private.h | 45 +++++++++++++++++++++++++++++++------------- dlls/dbghelp/macho_module.c | 4 ++-- 2 files changed, 34 insertions(+), 15 deletions(-)
diff --git a/dlls/dbghelp/image_private.h b/dlls/dbghelp/image_private.h index da977c08f5..4171b38923 100644 --- a/dlls/dbghelp/image_private.h +++ b/dlls/dbghelp/image_private.h @@ -19,16 +19,6 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */
-#ifdef HAVE_LINK_H -# include <link.h> -#endif -#ifdef HAVE_SYS_LINK_H -# include <sys/link.h> -#endif -#ifdef HAVE_MACH_O_LOADER_H -#include <mach-o/loader.h> -#endif - #define IMAGE_NO_MAP ((void*)-1)
struct elf_header @@ -76,6 +66,37 @@ struct macho_uuid_command UINT8 uuid[16]; };
+struct macho_section +{ + char sectname[16]; /* name of this section */ + char segname[16]; /* segment this section goes in */ + UINT64 addr; /* memory address of this section */ + UINT64 size; /* size in bytes of this section */ + UINT32 offset; /* file offset of this section */ + UINT32 align; /* section alignment (power of 2) */ + UINT32 reloff; /* file offset of relocation entries */ + UINT32 nreloc; /* number of relocation entries */ + UINT32 flags; /* flags (section type and attributes)*/ + UINT32 reserved1; /* reserved (for offset or index) */ + UINT32 reserved2; /* reserved (for count or sizeof) */ + UINT32 reserved3; /* reserved */ +}; + +struct macho_section32 +{ + char sectname[16]; /* name of this section */ + char segname[16]; /* segment this section goes in */ + UINT32 addr; /* memory address of this section */ + UINT32 size; /* size in bytes of this section */ + UINT32 offset; /* file offset of this section */ + UINT32 align; /* section alignment (power of 2) */ + UINT32 reloff; /* file offset of relocation entries */ + UINT32 nreloc; /* number of relocation entries */ + UINT32 flags; /* flags (section type and attributes)*/ + UINT32 reserved1; /* reserved (for offset or index) */ + UINT32 reserved2; /* reserved (for count or sizeof) */ +}; + /* structure holding information while handling an ELF image * allows one by one section mapping for memory savings */ @@ -118,15 +139,13 @@ struct image_file_map * read from arch_offset. */ unsigned arch_offset;
-#ifdef HAVE_MACH_O_LOADER_H int num_sections; struct { - struct section_64 section; + struct macho_section section; const char* mapped; unsigned int ignored : 1; }* sect; -#endif } macho; struct pe_file_map { diff --git a/dlls/dbghelp/macho_module.c b/dlls/dbghelp/macho_module.c index ac4e8cbb7e..0e532c354b 100644 --- a/dlls/dbghelp/macho_module.c +++ b/dlls/dbghelp/macho_module.c @@ -624,7 +624,7 @@ static int macho_load_section_info(struct image_file_map* ifm, const struct mach { if (ifm->addr_size == 32) { - const struct section *section = &((const struct section *)sections)[i]; + const struct macho_section32 *section = &((const struct macho_section32 *)sections)[i]; memcpy(fmap->sect[info->section_index].section.sectname, section->sectname, sizeof(section->sectname)); memcpy(fmap->sect[info->section_index].section.segname, section->segname, sizeof(section->segname)); fmap->sect[info->section_index].section.addr = section->addr; @@ -636,7 +636,7 @@ static int macho_load_section_info(struct image_file_map* ifm, const struct mach fmap->sect[info->section_index].section.flags = section->flags; } else - fmap->sect[info->section_index].section = ((const struct section_64 *)sections)[i]; + fmap->sect[info->section_index].section = ((const struct macho_section *)sections)[i];
fmap->sect[info->section_index].mapped = IMAGE_NO_MAP; fmap->sect[info->section_index].ignored = ignore;