[prev in list] [next in list] [prev in thread] [next in thread]
List: wine-devel
Subject: [PATCH 03/13] dbghelp: Use local AT_SYSINFO_EHDR definition.
From: Jacek Caban <jacek () codeweavers ! com>
Date: 2020-03-31 16:21:05
Message-ID: aa3d3e80-300c-8745-d931-a5cb27bc7fdf () codeweavers ! com
[Download RAW message or body]
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
---
dlls/dbghelp/elf_module.c | 34 ++++++++++++++++++++--------------
1 file changed, 20 insertions(+), 14 deletions(-)
["0003-dbghelp-Use-local-AT_SYSINFO_EHDR-definition.txt" (text/x-patch)]
diff --git a/dlls/dbghelp/elf_module.c b/dlls/dbghelp/elf_module.c
index 4019bcf777..6bdbcdeb3e 100644
--- a/dlls/dbghelp/elf_module.c
+++ b/dlls/dbghelp/elf_module.c
@@ -124,6 +124,8 @@ struct elf_module_info
struct image_file_map file_map;
};
+#define ELF_AT_SYSINFO_EHDR 33
+
/******************************************************************
* elf_map_section
*
@@ -1269,7 +1271,6 @@ static BOOL elf_load_file_cb(void *param, HANDLE handle, const \
WCHAR *filename)
return elf_load_file(load_file->process, filename, load_file->load_offset, \
load_file->dyn_addr, load_file->elf_info); }
-#ifdef AT_SYSINFO_EHDR
/******************************************************************
* elf_search_auxv
*
@@ -1279,9 +1280,9 @@ static BOOL elf_search_auxv(const struct process* pcs, unsigned \
type, ULONG_PTR* {
char buffer[sizeof(SYMBOL_INFO) + MAX_SYM_NAME];
SYMBOL_INFO*si = (SYMBOL_INFO*)buffer;
- void* addr;
- void* str;
- void* str_max;
+ BYTE* addr;
+ BYTE* str;
+ BYTE* str_max;
si->SizeOfStruct = sizeof(*si);
si->MaxNameLen = MAX_SYM_NAME;
@@ -1309,36 +1310,43 @@ static BOOL elf_search_auxv(const struct process* pcs, \
unsigned type, ULONG_PTR*
if (pcs->is_64bit)
{
- Elf64_auxv_t auxv;
+ struct
+ {
+ UINT64 a_type;
+ UINT64 a_val;
+ } auxv;
while (ReadProcessMemory(pcs->handle, addr, &auxv, sizeof(auxv), NULL) && \
auxv.a_type) {
if (auxv.a_type == type)
{
- *val = auxv.a_un.a_val;
+ *val = auxv.a_val;
return TRUE;
}
- addr = (void*)((DWORD_PTR)addr + sizeof(auxv));
+ addr += sizeof(auxv);
}
}
else
{
- Elf32_auxv_t auxv;
+ struct
+ {
+ UINT32 a_type;
+ UINT32 a_val;
+ } auxv;
while (ReadProcessMemory(pcs->handle, addr, &auxv, sizeof(auxv), NULL) && \
auxv.a_type) {
if (auxv.a_type == type)
{
- *val = auxv.a_un.a_val;
+ *val = auxv.a_val;
return TRUE;
}
- addr = (void*)((DWORD_PTR)addr + sizeof(auxv));
+ addr += sizeof(auxv);
}
}
return FALSE;
}
-#endif
/******************************************************************
* elf_search_and_load_file
@@ -1463,18 +1471,16 @@ static BOOL elf_enum_modules_internal(const struct process* \
pcs, }
}
-#ifdef AT_SYSINFO_EHDR
if (!lm_addr)
{
ULONG_PTR ehdr_addr;
- if (elf_search_auxv(pcs, AT_SYSINFO_EHDR, &ehdr_addr))
+ if (elf_search_auxv(pcs, ELF_AT_SYSINFO_EHDR, &ehdr_addr))
{
static const WCHAR vdsoW[] = {'[','v','d','s','o',']','.','s','o',0};
cb(vdsoW, ehdr_addr, 0, TRUE, user);
}
}
-#endif
return TRUE;
}
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic