From: Eric Pouech epouech@codeweavers.com
Signed-off-by: Eric Pouech epouech@codeweavers.com --- dlls/dbghelp/dbghelp_private.h | 2 +- dlls/dbghelp/msc.c | 14 ++++++++++---- dlls/dbghelp/pe_module.c | 5 +++-- 3 files changed, 14 insertions(+), 7 deletions(-)
diff --git a/dlls/dbghelp/dbghelp_private.h b/dlls/dbghelp/dbghelp_private.h index 8def6a7dae6..b07c30b1a97 100644 --- a/dlls/dbghelp/dbghelp_private.h +++ b/dlls/dbghelp/dbghelp_private.h @@ -750,7 +750,7 @@ extern BOOL pe_load_debug_directory(const struct process* pcs, struct module* module, const BYTE* mapping, const IMAGE_SECTION_HEADER* sectp, DWORD nsect, - const IMAGE_DEBUG_DIRECTORY* dbg, int nDbg); + const IMAGE_DEBUG_DIRECTORY* dbg, int nDbg, BOOL in_pe_image); extern DWORD msc_get_file_indexinfo(void* image, const IMAGE_DEBUG_DIRECTORY* dbgdir, DWORD size, SYMSRV_INDEX_INFOW* info); struct pdb_cmd_pair { diff --git a/dlls/dbghelp/msc.c b/dlls/dbghelp/msc.c index 22ec5230f7a..21abaa29db5 100644 --- a/dlls/dbghelp/msc.c +++ b/dlls/dbghelp/msc.c @@ -3507,6 +3507,8 @@ static BOOL pdb_init(struct pdb_file_info* pdb_file, const char* image) default: ERR("-Unknown root block version %d\n", root->Version); } + FIXME("Support of old PDB format (JG) is deprecated\n"); + pdb_file->kind = PDB_JG; pdb_file->u.jg.toc = jg_toc; TRACE("found JG: age=%x timestamp=%x\n", root->Age, root->TimeDateStamp); @@ -4323,7 +4325,7 @@ BOOL pdb_virtual_unwind(struct cpu_stack_walk *csw, DWORD_PTR ip, #define CODEVIEW_RSDS_SIG MAKESIG('R','S','D','S')
static BOOL codeview_process_info(const struct process *pcs, - const struct msc_debug_info *msc_dbg) + const struct msc_debug_info *msc_dbg, BOOL in_pe_image) { const DWORD* signature = (const DWORD*)msc_dbg->root; BOOL ret = FALSE; @@ -4344,6 +4346,8 @@ static BOOL codeview_process_info(const struct process *pcs,
codeview_init_basic_types(msc_dbg->module);
+ if (in_pe_image) FIXME("Support of CodeView debug information in PE image is deprecated\n"); + for (i = 0; i < hdr->cDir; i++) { ent = (const OMFDirEntry*)((const BYTE*)hdr + hdr->cbDirHeader + i * hdr->cbDirEntry); @@ -4452,7 +4456,7 @@ static BOOL codeview_process_info(const struct process *pcs, BOOL pe_load_debug_directory(const struct process* pcs, struct module* module, const BYTE* mapping, const IMAGE_SECTION_HEADER* sectp, DWORD nsect, - const IMAGE_DEBUG_DIRECTORY* dbg, int nDbg) + const IMAGE_DEBUG_DIRECTORY* dbg, int nDbg, BOOL in_pe_image) { BOOL ret; int i; @@ -4473,6 +4477,7 @@ BOOL pe_load_debug_directory(const struct process* pcs, struct module* module, { if (dbg[i].Type == IMAGE_DEBUG_TYPE_OMAP_FROM_SRC) { + if (in_pe_image) FIXME("Support of OMAP debug information in PE image is deprecated\n"); msc_dbg.nomap = dbg[i].SizeOfData / sizeof(OMAP); msc_dbg.omapp = (const OMAP*)(mapping + dbg[i].PointerToRawData); break; @@ -4485,7 +4490,7 @@ BOOL pe_load_debug_directory(const struct process* pcs, struct module* module, if (dbg[i].Type == IMAGE_DEBUG_TYPE_CODEVIEW) { msc_dbg.root = mapping + dbg[i].PointerToRawData; - if ((ret = codeview_process_info(pcs, &msc_dbg))) goto done; + if ((ret = codeview_process_info(pcs, &msc_dbg, in_pe_image))) goto done; } }
@@ -4494,6 +4499,7 @@ BOOL pe_load_debug_directory(const struct process* pcs, struct module* module, { if (dbg[i].Type == IMAGE_DEBUG_TYPE_COFF) { + if (in_pe_image) FIXME("Support of COFF debug information in PE image is deprecated\n"); msc_dbg.root = mapping + dbg[i].PointerToRawData; if ((ret = coff_process_info(&msc_dbg))) goto done; } @@ -4505,7 +4511,7 @@ BOOL pe_load_debug_directory(const struct process* pcs, struct module* module, */ for (i = 0; i < nDbg; i++) if (dbg[i].Type == IMAGE_DEBUG_TYPE_FPO) - FIXME("This guy has FPO information\n"); + FIXME("No support for FPO information in PE image\n"); #if 0
#define FRAME_FPO 0 diff --git a/dlls/dbghelp/pe_module.c b/dlls/dbghelp/pe_module.c index bd3d6000535..996a4efae4a 100644 --- a/dlls/dbghelp/pe_module.c +++ b/dlls/dbghelp/pe_module.c @@ -594,6 +594,7 @@ static BOOL pe_load_dbg_file(const struct process* pcs, struct module* module, SYMSRV_INDEX_INFOW info;
TRACE("Processing DBG file %s\n", debugstr_a(dbg_name)); + FIXME("Support of split debug information in .DBG file (%s) is deprecated.\n", debugstr_a(dbg_name));
if (path_find_symbol_file(pcs, module, dbg_name, FALSE, NULL, timestamp, 0, &info, &module->module.DbgUnmatched) && (hFile = CreateFileW(info.dbgfile, GENERIC_READ, FILE_SHARE_READ, NULL, @@ -616,7 +617,7 @@ static BOOL pe_load_dbg_file(const struct process* pcs, struct module* module,
ret = pe_load_debug_directory(pcs, module, dbg_mapping, sectp, hdr->NumberOfSections, dbg, - hdr->DebugDirectorySize / sizeof(*dbg)); + hdr->DebugDirectorySize / sizeof(*dbg), FALSE); } else ERR("Couldn't find .DBG file %s (%s)\n", debugstr_a(dbg_name), debugstr_w(info.dbgfile)); @@ -668,7 +669,7 @@ static BOOL pe_load_msc_debug_info(const struct process* pcs, struct module* mod { /* Debug info is embedded into PE module */ ret = pe_load_debug_directory(pcs, module, mapping, IMAGE_FIRST_SECTION( nth ), - nth->FileHeader.NumberOfSections, dbg, nDbg); + nth->FileHeader.NumberOfSections, dbg, nDbg, TRUE); } pe_unmap_full(fmap); return ret;