Eric Pouech : winedump: Added ability to dump FPO debug information.
Alexandre Julliard
julliard at wine.codeweavers.com
Sat Jan 6 05:12:50 CST 2007
Module: wine
Branch: master
Commit: b63098cf241d46f80c64c9977479ca4e1e8bd240
URL: http://source.winehq.org/git/wine.git/?a=commit;h=b63098cf241d46f80c64c9977479ca4e1e8bd240
Author: Eric Pouech <eric.pouech at wanadoo.fr>
Date: Fri Jan 5 21:42:12 2007 +0100
winedump: Added ability to dump FPO debug information.
---
tools/winedump/debug.c | 29 +++++++++++++++++++++++++++--
1 files changed, 27 insertions(+), 2 deletions(-)
diff --git a/tools/winedump/debug.c b/tools/winedump/debug.c
index 4ce09c8..10ec2d5 100644
--- a/tools/winedump/debug.c
+++ b/tools/winedump/debug.c
@@ -578,8 +578,33 @@ void dump_codeview(unsigned long base, u
void dump_frame_pointer_omission(unsigned long base, unsigned long len)
{
- /* FPO is used to describe nonstandard stack frames */
- printf("FIXME: FPO (frame pointer omission) debug symbol dumping not implemented yet.\n");
+ const FPO_DATA* fpo;
+ const FPO_DATA* last;
+ const char* x;
+ /* FPO is used to describe nonstandard stack frames */
+ printf("Range #loc #pmt Prlg #reg Info\n"
+ "-----------------+----+----+----+----+------------\n");
+
+ fpo = (const FPO_DATA*)PRD(base, len);
+ if (!fpo) {printf("Couldn't get FPO blob\n"); return;}
+ last = (const FPO_DATA*)((const char*)fpo + len);
+
+ while (fpo < last && fpo->ulOffStart)
+ {
+ switch (fpo->cbFrame)
+ {
+ case FRAME_FPO: x = "FRAME_FPO"; break;
+ case FRAME_NONFPO: x = "FRAME_NONFPO"; break;
+ case FRAME_TRAP: x = "FRAME_TRAP"; break;
+ case FRAME_TSS: x = "case FRAME_TSS"; break;
+ default: x = NULL; break;
+ }
+ printf("%08x-%08x %4u %4u %4u %4u %s%s%s\n",
+ fpo->ulOffStart, fpo->ulOffStart + fpo->cbProcSize,
+ fpo->cdwLocals, fpo->cdwParams, fpo->cbProlog, fpo->cbRegs,
+ x, fpo->fHasSEH ? " SEH" : "", fpo->fUseBP ? " UseBP" : "");
+ fpo++;
+ }
}
struct stab_nlist
More information about the wine-cvs
mailing list