dbghelp: Use local macho section declaration.

Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Jacek Caban 2020-04-01 20:28:32 +02:00 committed by Alexandre Julliard
parent c695e7e99e
commit 64341284c5
2 changed files with 34 additions and 15 deletions

View File

@ -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
{

View File

@ -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;