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