mirror of
https://github.com/reactos/reactos.git
synced 2025-05-29 05:58:13 +00:00
[PSEH]
- Fix compilation of PSEH with Clang - Fix _SEH3$_InvokeEmbeddedFilterFromRegistration svn path=/trunk/; revision=64077
This commit is contained in:
parent
e9389a03f4
commit
cc9ee2cf1b
3 changed files with 11 additions and 7 deletions
|
@ -64,7 +64,7 @@ typedef struct _SEH3$_REGISTRATION_FRAME
|
|||
/* Except handler stores pointer to exception pointers here */
|
||||
PSEH3$_EXCEPTION_POINTERS volatile ExceptionPointers;
|
||||
|
||||
/* Except handle stores the exception code here */
|
||||
/* Except handler stores the exception code here */
|
||||
unsigned long ExceptionCode;
|
||||
|
||||
/* Registers that we need to save */
|
||||
|
|
|
@ -64,7 +64,7 @@ _SEH3$_Unregister(
|
|||
static inline
|
||||
LONG
|
||||
_SEH3$_InvokeNestedFunctionFilter(
|
||||
PSEH3$_REGISTRATION_FRAME RegistrationFrame,
|
||||
volatile SEH3$_REGISTRATION_FRAME *RegistrationFrame,
|
||||
PVOID Filter)
|
||||
{
|
||||
LONG FilterResult;
|
||||
|
@ -93,17 +93,17 @@ _SEH3$_InvokeNestedFunctionFilter(
|
|||
long
|
||||
__attribute__((regparm(1)))
|
||||
_SEH3$_InvokeEmbeddedFilter(
|
||||
PSEH3$_REGISTRATION_FRAME RegistrationFrame);
|
||||
volatile SEH3$_REGISTRATION_FRAME *RegistrationFrame);
|
||||
|
||||
long
|
||||
__attribute__((regparm(1)))
|
||||
_SEH3$_InvokeEmbeddedFilterFromRegistration(
|
||||
PSEH3$_REGISTRATION_FRAME RegistrationFrame);
|
||||
volatile SEH3$_REGISTRATION_FRAME *RegistrationFrame);
|
||||
|
||||
static inline
|
||||
LONG
|
||||
_SEH3$_InvokeFilter(
|
||||
PSEH3$_REGISTRATION_FRAME RegistrationFrame,
|
||||
volatile SEH3$_REGISTRATION_FRAME *RegistrationFrame,
|
||||
PVOID Filter)
|
||||
{
|
||||
LONG FilterResult;
|
||||
|
@ -133,7 +133,7 @@ _SEH3$_InvokeFilter(
|
|||
void
|
||||
__attribute__((regparm(1)))
|
||||
_SEH3$_AutoCleanup(
|
||||
SEH3$_REGISTRATION_FRAME *Frame)
|
||||
volatile SEH3$_REGISTRATION_FRAME *Frame)
|
||||
{
|
||||
/* Check for __finally frames */
|
||||
if (Frame->ScopeTable->Target == NULL)
|
||||
|
@ -241,7 +241,9 @@ _SEH3$_CallRtlUnwind(
|
|||
|
||||
EXCEPTION_DISPOSITION
|
||||
__cdecl
|
||||
#ifndef __clang__
|
||||
__attribute__ ((__target__ ("cld")))
|
||||
#endif
|
||||
_SEH3$_except_handler(
|
||||
struct _EXCEPTION_RECORD * ExceptionRecord,
|
||||
PSEH3$_REGISTRATION_FRAME EstablisherFrame,
|
||||
|
|
|
@ -128,6 +128,8 @@ __SEH3$_InvokeEmbeddedFilterFromRegistration:
|
|||
mov edi, [eax + SEH3_REGISTRATION_FRAME_Edi]
|
||||
mov ebp, [eax + SEH3_REGISTRATION_FRAME_Ebp]
|
||||
|
||||
jmp __SEH3$_InvokeEmbeddedFilter2
|
||||
|
||||
/* Get the saved stack pointer */
|
||||
mov edx, [eax + SEH3_REGISTRATION_FRAME_Esp]
|
||||
|
||||
|
@ -155,7 +157,7 @@ __SEH3$_InvokeEmbeddedFilter:
|
|||
|
||||
/* Load ebp from the registration invocation */
|
||||
mov ebp, [eax + SEH3_REGISTRATION_FRAME_Ebp]
|
||||
|
||||
__SEH3$_InvokeEmbeddedFilter2:
|
||||
/* Calculate the size of the temp stack frame region */
|
||||
mov ecx, [eax + SEH3_REGISTRATION_FRAME_AllocaFrame]
|
||||
sub ecx, [eax + SEH3_REGISTRATION_FRAME_Esp]
|
||||
|
|
Loading…
Reference in a new issue