[NTOS:KE] Generate proper frame info for trap handler in GCC builds

CORE-8531
This commit is contained in:
Jérôme Gardou 2021-03-02 13:03:37 +01:00
parent 6c100a13c2
commit 4e4c47cccc
2 changed files with 25 additions and 0 deletions

View file

@ -217,6 +217,29 @@ set_sane_segs:
mov [esp + KTRAP_FRAME_DEBUGEIP], eax
mov [esp + KTRAP_FRAME_DEBUGEBP], ebp
mov ebp, esp
/* Tell GDB what just happened */
CFI_DEF_CFA_REGISTER ebp
CFI_ADJUST_CFA_OFFSET FrameSize
CFI_REL_OFFSET ss, KTRAP_FRAME_SS
CFI_REL_OFFSET gs, KTRAP_FRAME_GS
CFI_REL_OFFSET fs, KTRAP_FRAME_FS
CFI_REL_OFFSET es, KTRAP_FRAME_ES
CFI_REL_OFFSET ds, KTRAP_FRAME_DS
CFI_REL_OFFSET cs, KTRAP_FRAME_CS
CFI_REL_OFFSET edi, KTRAP_FRAME_EDI
CFI_REL_OFFSET esi, KTRAP_FRAME_ESI
CFI_REL_OFFSET ebx, KTRAP_FRAME_EBX
CFI_REL_OFFSET ebp, KTRAP_FRAME_EBP
CFI_REL_OFFSET eip, KTRAP_FRAME_EIP
CFI_REL_OFFSET esp, KTRAP_FRAME_ESP
if (NOT (Flags AND KI_NONVOLATILES_ONLY))
CFI_REL_OFFSET eax, KTRAP_FRAME_EAX
CFI_REL_OFFSET ecx, KTRAP_FRAME_ECX
CFI_REL_OFFSET edx, KTRAP_FRAME_EDX
endif
#endif
/* Set parameter 1 (ECX) to point to the frame */

View file

@ -125,6 +125,7 @@ ALIGN 4
EXTERN @KiInterruptTemplateHandler@8:PROC
PUBLIC _KiInterruptTemplate
_KiInterruptTemplate:
CFI_STARTPROC
KiEnterTrap KI_PUSH_FAKE_ERROR_CODE
PUBLIC _KiInterruptTemplate2ndDispatch
_KiInterruptTemplate2ndDispatch:
@ -135,6 +136,7 @@ _KiInterruptTemplateObject:
jmp eax
PUBLIC _KiInterruptTemplateDispatch
_KiInterruptTemplateDispatch:
CFI_ENDPROC
EXTERN @KiSystemServiceHandler@8:PROC
PUBLIC _KiSystemService