Commit 7544b9f6 authored by Jacek Caban's avatar Jacek Caban Committed by Alexandre Julliard

dbghelp: Call GetSystemInfo in DllMain.

parent 234115c8
...@@ -68,9 +68,22 @@ WINE_DEFAULT_DEBUG_CHANNEL(dbghelp); ...@@ -68,9 +68,22 @@ WINE_DEFAULT_DEBUG_CHANNEL(dbghelp);
unsigned dbghelp_options = SYMOPT_UNDNAME; unsigned dbghelp_options = SYMOPT_UNDNAME;
BOOL dbghelp_opt_native = FALSE; BOOL dbghelp_opt_native = FALSE;
SYSTEM_INFO sysinfo;
static struct process* process_first /* = NULL */; static struct process* process_first /* = NULL */;
BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, LPVOID reserved)
{
switch (reason)
{
case DLL_PROCESS_ATTACH:
GetSystemInfo(&sysinfo);
DisableThreadLibraryCalls(instance);
break;
}
return TRUE;
}
/****************************************************************** /******************************************************************
* process_find_by_handle * process_find_by_handle
* *
......
...@@ -115,6 +115,7 @@ void* hash_table_iter_up(struct hash_table_iter* hti) DECLSPEC_HIDDEN; ...@@ -115,6 +115,7 @@ void* hash_table_iter_up(struct hash_table_iter* hti) DECLSPEC_HIDDEN;
extern unsigned dbghelp_options DECLSPEC_HIDDEN; extern unsigned dbghelp_options DECLSPEC_HIDDEN;
extern BOOL dbghelp_opt_native DECLSPEC_HIDDEN; extern BOOL dbghelp_opt_native DECLSPEC_HIDDEN;
extern SYSTEM_INFO sysinfo DECLSPEC_HIDDEN;
enum location_kind {loc_error, /* reg is the error code */ enum location_kind {loc_error, /* reg is the error code */
loc_unavailable, /* location is not available */ loc_unavailable, /* location is not available */
......
...@@ -137,7 +137,6 @@ struct elf_module_info ...@@ -137,7 +137,6 @@ struct elf_module_info
static const char* elf_map_section(struct image_section_map* ism) static const char* elf_map_section(struct image_section_map* ism)
{ {
struct elf_file_map* fmap = &ism->fmap->u.elf; struct elf_file_map* fmap = &ism->fmap->u.elf;
SYSTEM_INFO sysinfo;
SIZE_T ofst, size; SIZE_T ofst, size;
HANDLE mapping; HANDLE mapping;
...@@ -152,7 +151,6 @@ static const char* elf_map_section(struct image_section_map* ism) ...@@ -152,7 +151,6 @@ static const char* elf_map_section(struct image_section_map* ism)
} }
/* align required information on allocation granularity */ /* align required information on allocation granularity */
GetSystemInfo(&sysinfo);
ofst = fmap->sect[ism->sidx].shdr.sh_offset & ~(sysinfo.dwAllocationGranularity - 1); ofst = fmap->sect[ism->sidx].shdr.sh_offset & ~(sysinfo.dwAllocationGranularity - 1);
size = fmap->sect[ism->sidx].shdr.sh_offset + fmap->sect[ism->sidx].shdr.sh_size - ofst; size = fmap->sect[ism->sidx].shdr.sh_offset + fmap->sect[ism->sidx].shdr.sh_size - ofst;
if (!(mapping = CreateFileMappingW(fmap->handle, NULL, PAGE_READONLY, 0, ofst + size, NULL))) if (!(mapping = CreateFileMappingW(fmap->handle, NULL, PAGE_READONLY, 0, ofst + size, NULL)))
......
...@@ -164,11 +164,9 @@ static void macho_calc_range(const struct macho_file_map* fmap, unsigned long of ...@@ -164,11 +164,9 @@ static void macho_calc_range(const struct macho_file_map* fmap, unsigned long of
unsigned long len, unsigned long* out_aligned_offset, unsigned long len, unsigned long* out_aligned_offset,
unsigned long* out_aligned_end, unsigned long* out_misalign) unsigned long* out_aligned_end, unsigned long* out_misalign)
{ {
SYSTEM_INFO sysinfo;
unsigned long pagemask; unsigned long pagemask;
unsigned long file_offset, misalign; unsigned long file_offset, misalign;
GetSystemInfo(&sysinfo);
pagemask = sysinfo.dwAllocationGranularity - 1; pagemask = sysinfo.dwAllocationGranularity - 1;
file_offset = fmap->arch_offset + offset; file_offset = fmap->arch_offset + offset;
misalign = file_offset & pagemask; misalign = file_offset & pagemask;
......
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