Jacek Caban : dbghelp: Use local macho section declaration.
Alexandre Julliard
julliard at winehq.org
Wed Apr 1 15:50:59 CDT 2020
Module: wine
Branch: master
Commit: 64341284c58bcc22f13f8146bcb6c8a08c0c4ff2
URL: https://source.winehq.org/git/wine.git/?a=commit;h=64341284c58bcc22f13f8146bcb6c8a08c0c4ff2
Author: Jacek Caban <jacek at codeweavers.com>
Date: Wed Apr 1 20:28:32 2020 +0200
dbghelp: Use local macho section declaration.
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at 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;
More information about the wine-cvs
mailing list