[NTOSKRNL]

Update TRAP_ENTRY macro to generate debugging information. Now WinDbg knows how to deal with the trap functions and also shows the user mode back traces.

svn path=/trunk/; revision=52586
This commit is contained in:
Timo Kreuzer 2011-07-09 19:15:34 +00:00
parent 918511d9ea
commit c182d594ae
3 changed files with 41 additions and 9 deletions

View file

@ -32,17 +32,22 @@ rip = 0
/* To avoid reverse syntax we provide a new macro .PROC, replacing PROC... */
.PROC MACRO name
name PROC FRAME
_name:
_&name PROC
ENDM
#define FUNC .PROC
/* ... and .ENDP, replacing ENDP */
.ENDP MACRO name
name ENDP
_&name ENDP
ENDM
#define ENDFUNC .ENDP
/* check http://msdn.microsoft.com/en-us/library/9c9k076y%28VS.80%29.aspx
and http://msdn.microsoft.com/en-us/library/ms679352%28VS.85%29.aspx */
FPO MACRO cdwLocals, cdwParams, cbProlog, cbRegs, fUseBP, cbFrame
.FPO (cdwLocals, cdwParams, cbProlog, cbRegs, fUseBP, cbFrame)
ENDM
/* MASM doesn't have an ASCII macro */
.ASCII MACRO text:VARARG
DB text
@ -184,7 +189,7 @@ ENDM
/* To avoid reverse syntax we provide a new macro .PROC, replacing PROC... */
.macro .PROC name
.func \name
\name:
_\name:
.cfi_startproc
.equ cfa_current_offset, -8
.endm
@ -237,6 +242,12 @@ ENDM
.text
.endm
/* check http://msdn.microsoft.com/en-us/library/9c9k076y%28VS.80%29.aspx
and http://msdn.microsoft.com/en-us/library/ms679352%28VS.85%29.aspx */
.macro FPO cdwLocals, cdwParams, cbProlog, cbRegs, fUseBP, cbFrame
/* dummy */
.endm
/* Macros for x64 stack unwind OPs */
.macro .allocstack size

View file

@ -41,6 +41,12 @@ ENDM
name ENDP
ENDM
/* check http://msdn.microsoft.com/en-us/library/9c9k076y%28VS.80%29.aspx
and http://msdn.microsoft.com/en-us/library/ms679352%28VS.85%29.aspx */
FPO MACRO cdwLocals, cdwParams, cbProlog, cbRegs, fUseBP, cbFrame
.FPO (cdwLocals, cdwParams, cbProlog, cbRegs, fUseBP, cbFrame)
ENDM
/* MASM doesn't have an ASCII macro */
.ASCII MACRO text
DB text
@ -143,7 +149,7 @@ ENDM
/* To avoid reverse syntax we provide a new macro .PROC, replacing PROC... */
.macro .PROC name
.func \name
\name:
_\name:
.cfi_startproc
.equ cfa_current_offset, -8
.endm
@ -192,6 +198,12 @@ ENDM
.text
.endm
/* check http://msdn.microsoft.com/en-us/library/9c9k076y%28VS.80%29.aspx
and http://msdn.microsoft.com/en-us/library/ms679352%28VS.85%29.aspx */
.macro FPO cdwLocals, cdwParams, cbProlog, cbRegs, fUseBP, cbFrame
/* dummy */
.endm
/* Macros for x64 stack unwind OPs */
.macro .allocstack size

View file

@ -216,12 +216,21 @@ MACRO(KiCallHandler, Handler)
nop
ENDM
#define FRAME_TRAP 1
MACRO(TRAP_ENTRY, Trap, Flags)
EXTERN @&Trap&Handler@4 :PROC
EXTERN @&Trap&Handler@4 :PROC
PUBLIC _&Trap
_&Trap:
KiEnterTrap Flags
KiCallHandler @&Trap&Handler@4
.PROC &Trap
/* Generate proper debugging symbols */
FPO 0, 0, 0, 0, 1, FRAME_TRAP
/* Common code to create the trap frame */
KiEnterTrap Flags
/* Call the C handler */
KiCallHandler @&Trap&Handler@4
.ENDP &Trap
ENDM
#define KI_RESTORE_EAX HEX(001)