Reactos

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

CORE-8531

+25
+23
ntoskrnl/include/internal/i386/asmmacro.S
··· 217 217 mov [esp + KTRAP_FRAME_DEBUGEIP], eax 218 218 mov [esp + KTRAP_FRAME_DEBUGEBP], ebp 219 219 mov ebp, esp 220 + 221 + /* Tell GDB what just happened */ 222 + CFI_DEF_CFA_REGISTER ebp 223 + CFI_ADJUST_CFA_OFFSET FrameSize 224 + CFI_REL_OFFSET ss, KTRAP_FRAME_SS 225 + CFI_REL_OFFSET gs, KTRAP_FRAME_GS 226 + CFI_REL_OFFSET fs, KTRAP_FRAME_FS 227 + CFI_REL_OFFSET es, KTRAP_FRAME_ES 228 + CFI_REL_OFFSET ds, KTRAP_FRAME_DS 229 + CFI_REL_OFFSET cs, KTRAP_FRAME_CS 230 + 231 + CFI_REL_OFFSET edi, KTRAP_FRAME_EDI 232 + CFI_REL_OFFSET esi, KTRAP_FRAME_ESI 233 + CFI_REL_OFFSET ebx, KTRAP_FRAME_EBX 234 + CFI_REL_OFFSET ebp, KTRAP_FRAME_EBP 235 + CFI_REL_OFFSET eip, KTRAP_FRAME_EIP 236 + CFI_REL_OFFSET esp, KTRAP_FRAME_ESP 237 + 238 + if (NOT (Flags AND KI_NONVOLATILES_ONLY)) 239 + CFI_REL_OFFSET eax, KTRAP_FRAME_EAX 240 + CFI_REL_OFFSET ecx, KTRAP_FRAME_ECX 241 + CFI_REL_OFFSET edx, KTRAP_FRAME_EDX 242 + endif 220 243 #endif 221 244 222 245 /* Set parameter 1 (ECX) to point to the frame */
+2
ntoskrnl/ke/i386/trap.s
··· 125 125 EXTERN @KiInterruptTemplateHandler@8:PROC 126 126 PUBLIC _KiInterruptTemplate 127 127 _KiInterruptTemplate: 128 + CFI_STARTPROC 128 129 KiEnterTrap KI_PUSH_FAKE_ERROR_CODE 129 130 PUBLIC _KiInterruptTemplate2ndDispatch 130 131 _KiInterruptTemplate2ndDispatch: ··· 135 136 jmp eax 136 137 PUBLIC _KiInterruptTemplateDispatch 137 138 _KiInterruptTemplateDispatch: 139 + CFI_ENDPROC 138 140 139 141 EXTERN @KiSystemServiceHandler@8:PROC 140 142 PUBLIC _KiSystemService