[PATCH 09/26] [DbgHelp]: move PE module loading to Unicode
Eric Pouech
eric.pouech at wanadoo.fr
Wed Feb 21 14:55:15 CST 2007
A+
---
dlls/dbghelp/dbghelp_private.h | 6 +++--
dlls/dbghelp/module.c | 6 +++--
dlls/dbghelp/msc.c | 4 ++-
dlls/dbghelp/pe_module.c | 46 +++++++++++++++++-----------------------
4 files changed, 28 insertions(+), 34 deletions(-)
diff --git a/dlls/dbghelp/dbghelp_private.h b/dlls/dbghelp/dbghelp_private.h
index 094318c..dbd08d9 100644
--- a/dlls/dbghelp/dbghelp_private.h
+++ b/dlls/dbghelp/dbghelp_private.h
@@ -477,11 +477,11 @@ extern BOOL pdb_fetch_file_info(
/* pe_module.c */
extern BOOL pe_load_nt_header(HANDLE hProc, DWORD base, IMAGE_NT_HEADERS* nth);
extern struct module*
- pe_load_module(struct process* pcs, const char* name,
+ pe_load_module(struct process* pcs, const WCHAR* name,
HANDLE hFile, DWORD base, DWORD size);
extern struct module*
- pe_load_module_from_pcs(struct process* pcs, const char* name,
- const char* mod_name, DWORD base, DWORD size);
+ pe_load_module_from_pcs(struct process* pcs, const WCHAR* name,
+ const WCHAR* mod_name, DWORD base, DWORD size);
extern BOOL pe_load_debug_info(const struct process* pcs,
struct module* module);
/* source.c */
diff --git a/dlls/dbghelp/module.c b/dlls/dbghelp/module.c
index 55e589d..936b2e6 100644
--- a/dlls/dbghelp/module.c
+++ b/dlls/dbghelp/module.c
@@ -517,21 +517,21 @@ DWORD64 WINAPI SymLoadModuleExW(HANDLE
if (module_is_elf_container_loaded(pcs, wImageName, wModuleName))
{
/* force the loading of DLL as builtin */
- if ((module = pe_load_module_from_pcs(pcs, ImageName, ModuleName,
+ if ((module = pe_load_module_from_pcs(pcs, wImageName, wModuleName,
BaseOfDll, SizeOfDll)))
goto done;
WARN("Couldn't locate %s\n", debugstr_w(wImageName));
return 0;
}
TRACE("Assuming %s as native DLL\n", debugstr_w(wImageName));
- if (!(module = pe_load_module(pcs, ImageName, hFile, BaseOfDll, SizeOfDll)))
+ if (!(module = pe_load_module(pcs, wImageName, hFile, BaseOfDll, SizeOfDll)))
{
if (module_get_type_by_name(ImageName) == DMT_ELF &&
(module = elf_load_module(pcs, ImageName, BaseOfDll)))
goto done;
FIXME("Should have successfully loaded debug information for image %s\n",
debugstr_w(wImageName));
- if ((module = pe_load_module_from_pcs(pcs, ImageName, ModuleName,
+ if ((module = pe_load_module_from_pcs(pcs, wImageName, wModuleName,
BaseOfDll, SizeOfDll)))
goto done;
WARN("Couldn't locate %s\n", debugstr_w(wImageName));
diff --git a/dlls/dbghelp/msc.c b/dlls/dbghelp/msc.c
index 9ea618c..5b54561 100644
--- a/dlls/dbghelp/msc.c
+++ b/dlls/dbghelp/msc.c
@@ -2139,7 +2139,7 @@ static BOOL pdb_process_internal(const s
/* Open and map() .PDB file */
if ((hFile = open_pdb_file(pcs, pdb_lookup)) == NULL ||
- ((hMap = CreateFileMappingA(hFile, NULL, PAGE_READONLY, 0, 0, NULL)) == NULL) ||
+ ((hMap = CreateFileMappingW(hFile, NULL, PAGE_READONLY, 0, 0, NULL)) == NULL) ||
((image = MapViewOfFile(hMap, FILE_MAP_READ, 0, 0, 0)) == NULL))
{
WARN("Unable to open .PDB file: %s\n", pdb_lookup->filename);
@@ -2269,7 +2269,7 @@ BOOL pdb_fetch_file_info(struct pdb_look
if ((hFile = CreateFileA(pdb_lookup->filename, GENERIC_READ, FILE_SHARE_READ, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL)) == INVALID_HANDLE_VALUE ||
- ((hMap = CreateFileMappingA(hFile, NULL, PAGE_READONLY, 0, 0, NULL)) == NULL) ||
+ ((hMap = CreateFileMappingW(hFile, NULL, PAGE_READONLY, 0, 0, NULL)) == NULL) ||
((image = MapViewOfFile(hMap, FILE_MAP_READ, 0, 0, 0)) == NULL))
{
WARN("Unable to open .PDB file: %s\n", pdb_lookup->filename);
diff --git a/dlls/dbghelp/pe_module.c b/dlls/dbghelp/pe_module.c
index 6eb4241..800692a 100644
--- a/dlls/dbghelp/pe_module.c
+++ b/dlls/dbghelp/pe_module.c
@@ -103,7 +103,7 @@ static BOOL pe_load_dbg_file(const struc
if (SymFindFileInPath(pcs->handle, NULL, dbg_name, NULL, 0, 0, 0, tmp, dbg_match, NULL) &&
(hFile = CreateFileA(tmp, GENERIC_READ, FILE_SHARE_READ, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL)) != INVALID_HANDLE_VALUE &&
- ((hMap = CreateFileMappingA(hFile, NULL, PAGE_READONLY, 0, 0, NULL)) != 0) &&
+ ((hMap = CreateFileMappingW(hFile, NULL, PAGE_READONLY, 0, 0, NULL)) != 0) &&
((dbg_mapping = MapViewOfFile(hMap, FILE_MAP_READ, 0, 0, 0)) != NULL))
{
hdr = (const IMAGE_SEPARATE_DEBUG_HEADER*)dbg_mapping;
@@ -323,38 +323,32 @@ BOOL pe_load_debug_info(const struct pro
* pe_load_module
*
*/
-struct module* pe_load_module(struct process* pcs, const char* name,
+struct module* pe_load_module(struct process* pcs, const WCHAR* name,
HANDLE hFile, DWORD base, DWORD size)
{
struct module* module = NULL;
BOOL opened = FALSE;
HANDLE hMap;
void* mapping;
- char loaded_name[MAX_PATH];
+ WCHAR loaded_name[MAX_PATH];
loaded_name[0] = '\0';
if (!hFile)
{
- unsigned len = WideCharToMultiByte(CP_ACP,0, pcs->search_path, -1, NULL, 0, NULL, NULL);
- char* sp;
-
if (!name)
{
/* FIXME SetLastError */
return NULL;
}
- sp = HeapAlloc(GetProcessHeap(), 0, len);
- if (!sp) return FALSE;
- WideCharToMultiByte(CP_ACP,0, pcs->search_path, -1, sp, len, NULL, NULL);
- if ((hFile = FindExecutableImage(name, sp, loaded_name)) == NULL)
+ if ((hFile = FindExecutableImageExW(name, pcs->search_path, loaded_name, NULL, NULL)) == NULL)
return NULL;
opened = TRUE;
}
- else if (name) strcpy(loaded_name, name);
+ else if (name) strcpyW(loaded_name, name);
else if (dbghelp_options & SYMOPT_DEFERRED_LOADS)
FIXME("Trouble ahead (no module name passed in deferred mode)\n");
- if (!(module = module_find_by_nameA(pcs, loaded_name, DMT_PE)) &&
+ if (!(module = module_find_by_name(pcs, loaded_name, DMT_PE)) &&
(hMap = CreateFileMappingW(hFile, NULL, PAGE_READONLY, 0, 0, NULL)) != NULL)
{
if ((mapping = MapViewOfFile(hMap, FILE_MAP_READ, 0, 0, 0)) != NULL)
@@ -366,9 +360,9 @@ struct module* pe_load_module(struct pro
if (!base) base = nth->OptionalHeader.ImageBase;
if (!size) size = nth->OptionalHeader.SizeOfImage;
- module = module_newA(pcs, loaded_name, DMT_PE, FALSE, base, size,
- nth->FileHeader.TimeDateStamp,
- nth->OptionalHeader.CheckSum);
+ module = module_new(pcs, loaded_name, DMT_PE, FALSE, base, size,
+ nth->FileHeader.TimeDateStamp,
+ nth->OptionalHeader.CheckSum);
if (module)
{
if (dbghelp_options & SYMOPT_DEFERRED_LOADS)
@@ -405,17 +399,17 @@ BOOL pe_load_nt_header(HANDLE hProc, DWO
* pe_load_module_from_pcs
*
*/
-struct module* pe_load_module_from_pcs(struct process* pcs, const char* name,
- const char* mod_name, DWORD base, DWORD size)
+struct module* pe_load_module_from_pcs(struct process* pcs, const WCHAR* name,
+ const WCHAR* mod_name, DWORD base, DWORD size)
{
struct module* module;
- const char* ptr;
+ const WCHAR* ptr;
- if ((module = module_find_by_nameA(pcs, name, DMT_PE))) return module;
+ if ((module = module_find_by_name(pcs, name, DMT_PE))) return module;
if (mod_name) ptr = mod_name;
else
{
- for (ptr = name + strlen(name) - 1; ptr >= name; ptr--)
+ for (ptr = name + strlenW(name) - 1; ptr >= name; ptr--)
{
if (*ptr == '/' || *ptr == '\\')
{
@@ -424,7 +418,7 @@ struct module* pe_load_module_from_pcs(s
}
}
}
- if (ptr && (module = module_find_by_nameA(pcs, ptr, DMT_PE))) return module;
+ if (ptr && (module = module_find_by_name(pcs, ptr, DMT_PE))) return module;
if (base)
{
if (pcs->dbg_hdr_addr)
@@ -434,13 +428,13 @@ struct module* pe_load_module_from_pcs(s
if (pe_load_nt_header(pcs->handle, base, &nth))
{
if (!size) size = nth.OptionalHeader.SizeOfImage;
- module = module_newA(pcs, name, DMT_PE, FALSE, base, size,
- nth.FileHeader.TimeDateStamp,
- nth.OptionalHeader.CheckSum);
+ module = module_new(pcs, name, DMT_PE, FALSE, base, size,
+ nth.FileHeader.TimeDateStamp,
+ nth.OptionalHeader.CheckSum);
}
} else if (size)
- module = module_newA(pcs, name, DMT_PE, FALSE, base, size,
- 0 /* FIXME */, 0 /* FIXME */);
+ module = module_new(pcs, name, DMT_PE, FALSE, base, size,
+ 0 /* FIXME */, 0 /* FIXME */);
}
return module;
}
More information about the wine-patches
mailing list