Jacek Caban : dbghelp: Use local elf_header declaration.

Alexandre Julliard julliard at winehq.org
Tue Mar 31 16:44:25 CDT 2020


Module: wine
Branch: master
Commit: 78845911da06fc75c6d74237f816a1547c24b20b
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=78845911da06fc75c6d74237f816a1547c24b20b

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Tue Mar 31 18:21:37 2020 +0200

dbghelp: Use local elf_header declaration.

Based on glibc.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/dbghelp/elf_module.c    | 22 +++++++++++++++++++---
 dlls/dbghelp/image_private.h | 20 +++++++++++++++++++-
 2 files changed, 38 insertions(+), 4 deletions(-)

diff --git a/dlls/dbghelp/elf_module.c b/dlls/dbghelp/elf_module.c
index cca07ead31..cb30eb23d4 100644
--- a/dlls/dbghelp/elf_module.c
+++ b/dlls/dbghelp/elf_module.c
@@ -359,7 +359,7 @@ static BOOL elf_map_file(struct elf_map_file_data* emfd, struct image_file_map*
     unsigned int        i;
     size_t              tmp, page_mask = sysinfo.dwPageSize - 1;
     WCHAR              *dos_path;
-    unsigned char e_ident[EI_NIDENT];
+    unsigned char e_ident[ARRAY_SIZE(fmap->u.elf.elfhdr.e_ident)];
 
     elf_reset_file_map(fmap);
 
@@ -394,12 +394,28 @@ static BOOL elf_map_file(struct elf_map_file_data* emfd, struct image_file_map*
 
     if (fmap->addr_size == 32)
     {
-        Elf32_Ehdr elfhdr32;
+        struct
+        {
+            UINT8   e_ident[16];  /* Magic number and other info */
+            UINT16  e_type;       /* Object file type */
+            UINT16  e_machine;    /* Architecture */
+            UINT32  e_version;    /* Object file version */
+            UINT32  e_entry;      /* Entry point virtual address */
+            UINT32  e_phoff;      /* Program header table file offset */
+            UINT32  e_shoff;      /* Section header table file offset */
+            UINT32  e_flags;      /* Processor-specific flags */
+            UINT16  e_ehsize;     /* ELF header size in bytes */
+            UINT16  e_phentsize;  /* Program header table entry size */
+            UINT16  e_phnum;      /* Program header table entry count */
+            UINT16  e_shentsize;  /* Section header table entry size */
+            UINT16  e_shnum;      /* Section header table entry count */
+            UINT16  e_shstrndx;   /* Section header string table index */
+        } elfhdr32;
 
         if (!elf_map_file_read(fmap, emfd, &elfhdr32, sizeof(elfhdr32), 0))
             return FALSE;
 
-        memcpy(fmap->u.elf.elfhdr.e_ident, elfhdr32.e_ident, EI_NIDENT);
+        memcpy(fmap->u.elf.elfhdr.e_ident, elfhdr32.e_ident, sizeof(e_ident));
         fmap->u.elf.elfhdr.e_type      = elfhdr32.e_type;
         fmap->u.elf.elfhdr.e_machine   = elfhdr32.e_machine;
         fmap->u.elf.elfhdr.e_version   = elfhdr32.e_version;
diff --git a/dlls/dbghelp/image_private.h b/dlls/dbghelp/image_private.h
index d2a89bd7c5..600cf72159 100644
--- a/dlls/dbghelp/image_private.h
+++ b/dlls/dbghelp/image_private.h
@@ -48,6 +48,24 @@
 
 #define IMAGE_NO_MAP  ((void*)-1)
 
+struct elf_header
+{
+    UINT8   e_ident[16];  /* Magic number and other info */
+    UINT16  e_type;       /* Object file type */
+    UINT16  e_machine;    /* Architecture */
+    UINT32  e_version;    /* Object file version */
+    UINT64  e_entry;      /* Entry point virtual address */
+    UINT64  e_phoff;      /* Program header table file offset */
+    UINT64  e_shoff;      /* Section header table file offset */
+    UINT32  e_flags;      /* Processor-specific flags */
+    UINT16  e_ehsize;     /* ELF header size in bytes */
+    UINT16  e_phentsize;  /* Program header table entry size */
+    UINT16  e_phnum;      /* Program header table entry count */
+    UINT16  e_shentsize;  /* Section header table entry size */
+    UINT16  e_shnum;      /* Section header table entry count */
+    UINT16  e_shstrndx;   /* Section header string table index */
+};
+
 /* structure holding information while handling an ELF image
  * allows one by one section mapping for memory savings
  */
@@ -66,8 +84,8 @@ struct image_file_map
             HANDLE                      handle;
             const char*	                shstrtab;
             char*                       target_copy;
+            struct elf_header           elfhdr;
 #ifdef __ELF__
-            Elf64_Ehdr                  elfhdr;
             struct
             {
                 Elf64_Shdr                      shdr;




More information about the wine-cvs mailing list