/* path.c */
extern BOOL path_find_symbol_file(const struct process* pcs, PCSTR full_path,
- const GUID* guid, DWORD dw1, DWORD dw2, PSTR buffer);
+ const GUID* guid, DWORD dw1, DWORD dw2, PSTR buffer,
+ BOOL* is_unmatched);
/* pe_module.c */
extern BOOL pe_load_nt_header(HANDLE hProc, DWORD base, IMAGE_NT_HEADERS* nth);
}
static HANDLE open_pdb_file(const struct process* pcs,
- const struct pdb_lookup* lookup)
+ const struct pdb_lookup* lookup,
+ struct module* module)
{
HANDLE h;
char dbg_file_path[MAX_PATH];
{
case PDB_JG:
ret = path_find_symbol_file(pcs, lookup->filename, NULL, lookup->u.jg.timestamp,
- lookup->age, dbg_file_path);
+ lookup->age, dbg_file_path, &module->module.PdbUnmatched);
break;
case PDB_DS:
ret = path_find_symbol_file(pcs, lookup->filename, &lookup->u.ds.guid, 0,
- lookup->age, dbg_file_path);
+ lookup->age, dbg_file_path, &module->module.PdbUnmatched);
break;
}
if (!ret)
TRACE("Processing PDB file %s\n", pdb_lookup->filename);
/* Open and map() .PDB file */
- if ((hFile = open_pdb_file(pcs, pdb_lookup)) == NULL ||
+ if ((hFile = open_pdb_file(pcs, pdb_lookup, msc_dbg->module)) == NULL ||
((hMap = CreateFileMappingW(hFile, NULL, PAGE_READONLY, 0, 0, NULL)) == NULL) ||
((image = MapViewOfFile(hMap, FILE_MAP_READ, 0, 0, 0)) == NULL))
{
}
BOOL path_find_symbol_file(const struct process* pcs, PCSTR full_path,
- const GUID* guid, DWORD dw1, DWORD dw2, PSTR buffer)
+ const GUID* guid, DWORD dw1, DWORD dw2, PSTR buffer,
+ BOOL* is_unmatched)
{
struct module_find mf;
WCHAR full_pathW[MAX_PATH];
MultiByteToWideChar(CP_ACP, 0, full_path, -1, full_pathW, MAX_PATH);
filename = file_nameW(full_pathW);
mf.kind = module_get_type_by_name(filename);
+ *is_unmatched = FALSE;
/* first check full path to file */
if (module_find_cb(full_pathW, &mf))
if ((dbghelp_options & SYMOPT_LOAD_ANYTHING) && mf.matched)
{
WideCharToMultiByte(CP_ACP, 0, mf.filename, -1, buffer, MAX_PATH, NULL, NULL);
+ *is_unmatched = TRUE;
return TRUE;
}
return FALSE;
TRACE("Processing DBG file %s\n", debugstr_a(dbg_name));
- if (path_find_symbol_file(pcs, dbg_name, NULL, timestamp, 0, tmp) &&
+ if (path_find_symbol_file(pcs, dbg_name, NULL, timestamp, 0, tmp, &module->module.DbgUnmatched) &&
(hFile = CreateFileA(tmp, GENERIC_READ, FILE_SHARE_READ, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL)) != INVALID_HANDLE_VALUE &&
((hMap = CreateFileMappingW(hFile, NULL, PAGE_READONLY, 0, 0, NULL)) != 0) &&