16#if defined _M_X64 && !defined _UCRT_ENCLAVE_BUILD
18 static void __cdecl capture_current_context(
CONTEXT*
const context_record)
throw()
28 ControlPc = context_record->Rip;
31 if (FunctionEntry !=
nullptr)
47#if defined _CRT_GLOBAL_STATE_ISOLATION
55 static void __cdecl invalid_parameter_handler_continue(
56 wchar_t const *
const,
57 wchar_t const *
const,
58 wchar_t const *
const,
69#if defined _CRT_GLOBAL_STATE_ISOLATION
75#
if defined _CRT_GLOBAL_STATE_ISOLATION
91 wchar_t const*
const expression,
96 __crt_cached_ptd_host&
ptd
117 wchar_t const*
const expression,
124 __crt_cached_ptd_host
ptd;
139 _invoke_watson (
nullptr,
nullptr,
nullptr, 0, 0);
149#if (defined _M_IX86 || defined _M_X64) && !defined _UCRT_ENCLAVE_BUILD
152 int const debugger_hook_code,
154 DWORD const _exception_flags
169 #if defined(__GNUC__) || defined(__clang__)
171 "movl %%eax, %[CxEax]\n\t"
172 "movl %%ecx, %[CxEcx]\n\t"
173 "movl %%edx, %[CxEdx]\n\t"
174 "movl %%ebx, %[CxEbx]\n\t"
175 "movl %%esi, %[CxEsi]\n\t"
176 "movl %%edi, %[CxEdi]\n\t"
184 "movw %%ss, %[CxSegSs]\n\t"
185 "movw %%cs, %[CxSegCs]\n\t"
186 "movw %%ds, %[CxSegDs]\n\t"
187 "movw %%es, %[CxSegEs]\n\t"
188 "movw %%fs, %[CxSegFs]\n\t"
189 "movw %%gs, %[CxSegGs]\n\t"
198 "popl %[CxEFlags]\n\t"
235 ExceptionRecord.ExceptionFlags = _exception_flags;
241#pragma warning(suppress:__WARNING_SETUNHANDLEDEXCEPTIONFILTER_USE)
254 wchar_t const*
const expression,
285 wchar_t const*
const expression,
329 ptd->_thread_local_iph = new_handler;
341 return ptd->_thread_local_iph;
__acrt_ptd *__cdecl __acrt_getptd(void)
void __cdecl __acrt_call_reportfault(int nDbgHookCode, DWORD dwExceptionCode, DWORD dwExceptionFlags)
__acrt_ptd *__cdecl __acrt_getptd_noexit(void)
_In_ size_t const _In_ int _In_ bool const _In_ unsigned const _In_ __acrt_rounding_mode const _Inout_ __crt_cached_ptd_host & ptd
#define GetCurrentProcess()
LONG WINAPI UnhandledExceptionFilter(IN PEXCEPTION_POINTERS ExceptionInfo)
LPTOP_LEVEL_EXCEPTION_FILTER WINAPI DECLSPEC_HOTPATCH SetUnhandledExceptionFilter(IN LPTOP_LEVEL_EXCEPTION_FILTER lpTopLevelExceptionFilter)
BOOL WINAPI TerminateProcess(IN HANDLE hProcess, IN UINT uExitCode)
BOOL WINAPI IsProcessorFeaturePresent(IN DWORD ProcessorFeature)
void __declspec(noinline) __cdecl _free_base(void *const block)
#define UNW_FLAG_NHANDLER
void(__cdecl * _invalid_parameter_handler)(const wchar_t *, const wchar_t *, const wchar_t *, unsigned int, uintptr_t)
#define EXCEPTION_CONTINUE_SEARCH
#define _CRT_DEBUGGER_IGNORE
#define _CRT_DEBUGGER_HOOK(x)
#define _CRT_DEBUGGER_INVALIDPARAMETER
#define _AddressOfReturnAddress()
_invalid_parameter_handler __cdecl _set_invalid_parameter_handler(_invalid_parameter_handler const new_handler)
__fastfail(FAST_FAIL_INVALID_ARG)
wchar_t const *const wchar_t const *const unsigned int const uintptr_t const reserved
wchar_t const *const function_name
_invalid_parameter_handler __cdecl _get_invalid_parameter_handler()
void __cdecl __acrt_initialize_invalid_parameter_handler(void *const encoded_null)
static __crt_state_management::dual_state_global< _invalid_parameter_handler > __acrt_invalid_parameter_handler
wchar_t const *const wchar_t const *const file_name
_invalid_parameter_handler __cdecl _get_thread_local_invalid_parameter_handler()
void __cdecl _invalid_parameter(wchar_t const *const expression, wchar_t const *const function_name, wchar_t const *const file_name, unsigned int const line_number, uintptr_t const reserved)
void __cdecl _invalid_parameter_internal(wchar_t const *const expression, wchar_t const *const function_name, wchar_t const *const file_name, unsigned int const line_number, uintptr_t const reserved, __crt_cached_ptd_host &ptd)
_invalid_parameter_handler __cdecl _set_thread_local_invalid_parameter_handler(_invalid_parameter_handler const new_handler)
void __cdecl _invalid_parameter_noinfo()
wchar_t const *const wchar_t const *const unsigned int const line_number
NTSYSAPI VOID NTAPI RtlCaptureContext(_Out_ PCONTEXT ContextRecord)
_IRQL_requires_same_ _In_ PVOID EstablisherFrame
_IRQL_requires_same_ _In_ PVOID _Inout_ struct _CONTEXT * ContextRecord
#define UNREFERENCED_PARAMETER(P)
#define STATUS_INVALID_CRUNTIME_PARAMETER
#define _exception_code()
__asm__(".p2align 4, 0x90\n" ".seh_proc __seh2_global_filter_func\n" "__seh2_global_filter_func:\n" "\tsub %rbp, %rax\n" "\tpush %rbp\n" "\t.seh_pushreg %rbp\n" "\tsub $32, %rsp\n" "\t.seh_stackalloc 32\n" "\t.seh_endprologue\n" "\tsub %rax, %rdx\n" "\tmov %rdx, %rbp\n" "\tjmp *%r8\n" "__seh2_global_filter_func_exit:\n" "\t.p2align 4\n" "\tadd $32, %rsp\n" "\tpop %rbp\n" "\tret\n" "\t.seh_endproc")
static calc_node_t * pop(void)
_invalid_parameter_handler _thread_local_iph
#define EXCEPTION_NONCONTINUABLE
ecx edi movl ebx edx edi decl ecx esi eax jecxz decl eax andl ebx
ecx edi movl ebx edx edi decl ecx esi eax jecxz decl eax andl eax esi movl edx movl TEMP incl eax andl eax ecx incl ebx testl eax jnz xchgl ecx incl TEMP esp ecx subl ebx pushl ecx ecx edx ecx shrl ecx mm0 mm4 mm0 mm4 mm1 mm5 mm1 mm5 mm2 mm6 mm2 mm6 mm3 mm7 mm3 mm7 paddd mm0 paddd mm4 paddd mm0 paddd mm4 paddd mm0 paddd mm4 movq mm1 movq mm5 psrlq mm1 psrlq mm5 paddd mm0 paddd mm4 psrad mm0 psrad mm4 packssdw mm0 packssdw mm4 mm1 punpckldq mm0 pand mm1 pand mm0 por mm1 movq edi esi edx edi decl ecx jnz popl ecx andl ecx jecxz mm0 mm0 mm1 mm1 mm2 mm2 mm3 mm3 paddd mm0 paddd mm0 paddd mm0 movq mm1 psrlq mm1 paddd mm0 psrad mm0 packssdw mm0 movd eax movw edi esi edx edi
ecx edi movl ebx edx edi decl ecx esi eax jecxz decl eax andl eax esi movl eax
ecx edi movl ebx edx edi decl ecx esi eax jecxz decl eax andl eax esi movl edx movl TEMP incl eax andl eax ecx incl ebx testl eax jnz xchgl ecx incl TEMP esi
ecx edi movl ebx edx edi decl ecx esi eax jecxz decl eax andl eax esi movl edx
PEXCEPTION_ROUTINE NTAPI RtlVirtualUnwind(_In_ ULONG HandlerType, _In_ ULONG64 ImageBase, _In_ ULONG64 ControlPc, _In_ PRUNTIME_FUNCTION FunctionEntry, _Inout_ PCONTEXT Context, _Outptr_ PVOID *HandlerData, _Out_ PULONG64 EstablisherFrame, _Inout_opt_ PKNONVOLATILE_CONTEXT_POINTERS ContextPointers)
PRUNTIME_FUNCTION NTAPI RtlLookupFunctionEntry(IN DWORD64 ControlPc, OUT PDWORD64 ImageBase, OUT PUNWIND_HISTORY_TABLE HistoryTable)
Locates the RUNTIME_FUNCTION entry corresponding to a code address. https://learn....
BOOL WINAPI IsDebuggerPresent(void)
#define PF_FASTFAIL_AVAILABLE
#define FAST_FAIL_INVALID_ARG