Commit 64341284 authored by Jacek Caban's avatar Jacek Caban Committed by Alexandre Julliard

dbghelp: Use local macho section declaration.

parent c695e7e9
...@@ -19,16 +19,6 @@ ...@@ -19,16 +19,6 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA * 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) #define IMAGE_NO_MAP ((void*)-1)
struct elf_header struct elf_header
...@@ -76,6 +66,37 @@ struct macho_uuid_command ...@@ -76,6 +66,37 @@ struct macho_uuid_command
UINT8 uuid[16]; 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 /* 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
*/ */
...@@ -118,15 +139,13 @@ struct image_file_map ...@@ -118,15 +139,13 @@ struct image_file_map
* read from arch_offset. */ * read from arch_offset. */
unsigned arch_offset; unsigned arch_offset;
#ifdef HAVE_MACH_O_LOADER_H
int num_sections; int num_sections;
struct struct
{ {
struct section_64 section; struct macho_section section;
const char* mapped; const char* mapped;
unsigned int ignored : 1; unsigned int ignored : 1;
}* sect; }* sect;
#endif
} macho; } macho;
struct pe_file_map struct pe_file_map
{ {
......
...@@ -624,7 +624,7 @@ static int macho_load_section_info(struct image_file_map* ifm, const struct mach ...@@ -624,7 +624,7 @@ static int macho_load_section_info(struct image_file_map* ifm, const struct mach
{ {
if (ifm->addr_size == 32) 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.sectname, section->sectname, sizeof(section->sectname));
memcpy(fmap->sect[info->section_index].section.segname, section->segname, sizeof(section->segname)); memcpy(fmap->sect[info->section_index].section.segname, section->segname, sizeof(section->segname));
fmap->sect[info->section_index].section.addr = section->addr; 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 ...@@ -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; fmap->sect[info->section_index].section.flags = section->flags;
} }
else 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].mapped = IMAGE_NO_MAP;
fmap->sect[info->section_index].ignored = ignore; fmap->sect[info->section_index].ignored = ignore;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment