Jacek Caban : dbghelp: Use local ELF constants definitions.

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


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

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

dbghelp: Use local ELF constants definitions.

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 | 61 +++++++++++++++++++++++++++++++++++------------
 1 file changed, 46 insertions(+), 15 deletions(-)

diff --git a/dlls/dbghelp/elf_module.c b/dlls/dbghelp/elf_module.c
index a6255e134c..ae25170bfc 100644
--- a/dlls/dbghelp/elf_module.c
+++ b/dlls/dbghelp/elf_module.c
@@ -101,7 +101,38 @@ struct elf_module_info
     struct image_file_map       file_map;
 };
 
-#define ELF_AT_SYSINFO_EHDR 33
+/* Legal values for sh_type (section type).  */
+#define ELF_SHT_NULL            0    /* Section header table entry unused */
+#define ELF_SHT_PROGBITS        1    /* Program data */
+#define ELF_SHT_SYMTAB          2    /* Symbol table */
+#define ELF_SHT_STRTAB          3    /* String table */
+#define ELF_SHT_RELA            4    /* Relocation entries with addends */
+#define ELF_SHT_HASH            5    /* Symbol hash table */
+#define ELF_SHT_DYNAMIC         6    /* Dynamic linking information */
+#define ELF_SHT_NOTE            7    /* Notes */
+#define ELF_SHT_NOBITS          8    /* Program space with no data (bss) */
+#define ELF_SHT_REL             9    /* Relocation entries, no addends */
+#define ELF_SHT_SHLIB          10    /* Reserved */
+#define ELF_SHT_DYNSYM         11    /* Dynamic linker symbol table */
+#define ELF_SHT_INIT_ARRAY     14    /* Array of constructors */
+#define ELF_SHT_FINI_ARRAY     15    /* Array of destructors */
+#define ELF_SHT_PREINIT_ARRAY  16    /* Array of pre-constructors */
+#define ELF_SHT_GROUP          17    /* Section group */
+#define ELF_SHT_SYMTAB_SHNDX   18    /* Extended section indeces */
+#define ELF_SHT_NUM            19    /* Number of defined types.  */
+
+/* Legal values for ST_TYPE subfield of st_info (symbol type).  */
+#define ELF_STT_NOTYPE          0    /* Symbol type is unspecified */
+#define ELF_STT_OBJECT          1    /* Symbol is a data object */
+#define ELF_STT_FUNC            2    /* Symbol is a code object */
+#define ELF_STT_SECTION         3    /* Symbol associated with a section */
+#define ELF_STT_FILE            4    /* Symbol's name is file name */
+
+#define ELF_PT_LOAD             1    /* Loadable program segment */
+
+#define ELF_DT_DEBUG           21    /* For debugging; unspecified */
+
+#define ELF_AT_SYSINFO_EHDR    33
 
 /******************************************************************
  *		elf_map_section
@@ -116,7 +147,7 @@ static const char* elf_map_section(struct image_section_map* ism)
 
     assert(ism->fmap->modtype == DMT_ELF);
     if (ism->sidx < 0 || ism->sidx >= ism->fmap->u.elf.elfhdr.e_shnum ||
-        fmap->sect[ism->sidx].shdr.sh_type == SHT_NOBITS)
+        fmap->sect[ism->sidx].shdr.sh_type == ELF_SHT_NOBITS)
         return IMAGE_NO_MAP;
 
     if (fmap->target_copy)
@@ -503,7 +534,7 @@ static BOOL elf_map_file(struct elf_map_file_data* emfd, struct image_file_map*
 
             if (elf_map_file_read(fmap, emfd, &phdr, sizeof(phdr),
                                   fmap->u.elf.elfhdr.e_phoff + i * sizeof(phdr)) &&
-                phdr.p_type == PT_LOAD)
+                phdr.p_type == ELF_PT_LOAD)
             {
                 tmp = (phdr.p_vaddr + phdr.p_memsz + page_mask) & ~page_mask;
                 if (fmap->u.elf.elf_size < tmp) fmap->u.elf.elf_size = tmp;
@@ -526,7 +557,7 @@ static BOOL elf_map_file(struct elf_map_file_data* emfd, struct image_file_map*
 
             if (elf_map_file_read(fmap, emfd, &phdr, sizeof(phdr),
                                   fmap->u.elf.elfhdr.e_phoff + i * sizeof(phdr)) &&
-                phdr.p_type == PT_LOAD)
+                phdr.p_type == ELF_PT_LOAD)
             {
                 tmp = (phdr.p_vaddr + phdr.p_memsz + page_mask) & ~page_mask;
                 if (fmap->u.elf.elf_size < tmp) fmap->u.elf.elf_size = tmp;
@@ -612,8 +643,8 @@ static void elf_hash_symtab(struct module* module, struct pool* pool,
     struct image_section_map    ism, ism_str;
     const char *symtab;
 
-    if (!elf_find_section_type(fmap, ".symtab", SHT_SYMTAB, &ism) &&
-        !elf_find_section_type(fmap, ".dynsym", SHT_DYNSYM, &ism)) return;
+    if (!elf_find_section_type(fmap, ".symtab", ELF_SHT_SYMTAB, &ism) &&
+        !elf_find_section_type(fmap, ".dynsym", ELF_SHT_DYNSYM, &ism)) return;
     if ((symtab = image_map_section(&ism)) == IMAGE_NO_MAP) return;
     ism_str.fmap = ism.fmap;
     ism_str.sidx = fmap->u.elf.sect[ism.sidx].shdr.sh_link;
@@ -653,7 +684,7 @@ static void elf_hash_symtab(struct module* module, struct pool* pool,
         /* Ignore certain types of entries which really aren't of that much
          * interest.
          */
-        if ((type != STT_NOTYPE && type != STT_FILE && type != STT_OBJECT && type != STT_FUNC)
+        if ((type != ELF_STT_NOTYPE && type != ELF_STT_FILE && type != ELF_STT_OBJECT && type != ELF_STT_FUNC)
             || !sym.st_shndx)
         {
             continue;
@@ -664,14 +695,14 @@ static void elf_hash_symtab(struct module* module, struct pool* pool,
         /* handle some specific symtab (that we'll throw away when done) */
         switch (type)
         {
-        case STT_FILE:
+        case ELF_STT_FILE:
             if (symname)
                 compiland = symt_new_compiland(module, sym.st_value,
                                                source_new(module, NULL, symname));
             else
                 compiland = NULL;
             continue;
-        case STT_NOTYPE:
+        case ELF_STT_NOTYPE:
             /* we are only interested in wine markers inserted by winebuild */
             for (j = 0; thunks[j].symname; j++)
             {
@@ -923,11 +954,11 @@ static int elf_new_wine_thunks(struct module* module, const struct hash_table* h
                  */
                 switch (ste->sym.st_info & 0xf)
                 {
-                case STT_FUNC:
+                case ELF_STT_FUNC:
                     symt_new_function(module, ste->compiland, ste->ht_elt.name,
                                       addr, ste->sym.st_size, NULL);
                     break;
-                case STT_OBJECT:
+                case ELF_STT_OBJECT:
                     loc.kind = loc_absolute;
                     loc.reg = 0;
                     loc.offset = addr;
@@ -1121,7 +1152,7 @@ static BOOL elf_load_file_from_fmap(struct process* pcs, const WCHAR* filename,
     {
         struct image_section_map        ism;
 
-        if (elf_find_section_type(fmap, ".dynamic", SHT_DYNAMIC, &ism))
+        if (elf_find_section_type(fmap, ".dynamic", ELF_SHT_DYNAMIC, &ism))
         {
             char*           ptr = (char*)(ULONG_PTR)fmap->u.elf.sect[ism.sidx].shdr.sh_addr;
             ULONG_PTR       len;
@@ -1141,7 +1172,7 @@ static BOOL elf_load_file_from_fmap(struct process* pcs, const WCHAR* filename,
                     if (!ReadProcessMemory(pcs->handle, ptr, &dyn, sizeof(dyn), &len) ||
                         len != sizeof(dyn))
                         return ret;
-                    if (dyn.d_tag == DT_DEBUG)
+                    if (dyn.d_tag == ELF_DT_DEBUG)
                     {
                         elf_info->dbg_hdr_addr = dyn.d_val;
                         if (load_offset == 0 && dyn_addr == 0) /* likely the case */
@@ -1167,7 +1198,7 @@ static BOOL elf_load_file_from_fmap(struct process* pcs, const WCHAR* filename,
                     if (!ReadProcessMemory(pcs->handle, ptr, &dyn, sizeof(dyn), &len) ||
                         len != sizeof(dyn))
                         return ret;
-                    if (dyn.d_tag == DT_DEBUG)
+                    if (dyn.d_tag == ELF_DT_DEBUG)
                     {
                         elf_info->dbg_hdr_addr = dyn.d_val;
                         if (load_offset == 0 && dyn_addr == 0) /* likely the case */
@@ -1191,7 +1222,7 @@ static BOOL elf_load_file_from_fmap(struct process* pcs, const WCHAR* filename,
         struct image_section_map ism;
         ULONG_PTR               modbase = load_offset;
 
-        if (elf_find_section_type(fmap, ".dynamic", SHT_DYNAMIC, &ism))
+        if (elf_find_section_type(fmap, ".dynamic", ELF_SHT_DYNAMIC, &ism))
         {
             ULONG_PTR rva_dyn = elf_get_map_rva(&ism);
 




More information about the wine-cvs mailing list