[PATCH 2/2] dbghelp: Support 64-bit dyld_all_image_infos structures, too.
Charles Davis
cdavis5x at gmail.com
Thu Jan 29 17:57:49 CST 2015
In particular, use a ULONG_PTR for the structure's address and don't try
to read the address from dyld's image on 64-bit. (We can't do that,
because there's no string pointer for nlist(3) to fill in on 64-bit.)
---
dlls/dbghelp/macho_module.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/dlls/dbghelp/macho_module.c b/dlls/dbghelp/macho_module.c
index 2eb2b94..bb49aa5 100644
--- a/dlls/dbghelp/macho_module.c
+++ b/dlls/dbghelp/macho_module.c
@@ -981,10 +981,10 @@ static BOOL macho_load_file(struct process* pcs, const WCHAR* filename,
&pbi, sizeof(pbi), NULL);
if (status == STATUS_SUCCESS)
{
- ULONG dyld_image_info;
+ ULONG_PTR dyld_image_info;
/* Read dyld image info address from PEB */
- if (ReadProcessMemory(pcs->handle, &pbi.PebBaseAddress->Reserved,
+ if (ReadProcessMemory(pcs->handle, &pbi.PebBaseAddress->Reserved[0],
&dyld_image_info, sizeof(dyld_image_info), NULL))
{
TRACE("got dyld_image_info 0x%08x from PEB %p MacDyldImageInfo %p\n",
@@ -994,6 +994,7 @@ static BOOL macho_load_file(struct process* pcs, const WCHAR* filename,
}
}
+#ifndef __LP64__ /* No reading the symtab with nlist(3) in LP64 */
if (!ret)
{
static void* dyld_all_image_infos_addr;
@@ -1017,6 +1018,7 @@ static BOOL macho_load_file(struct process* pcs, const WCHAR* filename,
ret = TRUE;
}
}
+#endif
}
if (macho_info->flags & MACHO_INFO_MODULE)
--
2.2.2
More information about the wine-patches
mailing list