32extern void no_op(
void);
67#define DEFINE_TEST(NAME_) static int NAME_(void)
2420 *((
char*)(
intptr_t)0xc0000000) = 0;
2429#ifdef _USE_NATIVE_SEH
2432 return (
val == 4 ||
val == 3);
2443 *((
char*)(
intptr_t)0xc0000000) = 0;
2452 return (
val == 3) || (
val == 4) || (
val == 5);
2466 register int val1 = 0, val2 = 0;
2475 *((
char*)(
intptr_t)0xc0000000) = 0;
2495 if ((val1 == 10) && (val2 == 5))
2501 if ((val1 == 0) && (val2 == 5))
2505 if (((val1 == 8) && (val2 == 4)) ||
2506 ((val1 == 0) && (val2 == 4)))
2515 unsigned result = 0xdeadbeef;
2534 volatile int val = 0;
2547 *((
char*)(
intptr_t)0xdeadc0de) = 0;
2555 *((
char*)(
intptr_t)0xdeadc0de) = 0;
2564 return (
val == (128|4|2|1));
2569 volatile int val = 0;
2577 *((
char*)(
intptr_t)0xdeadc0de) = 0;
2583 *((
char*)(
intptr_t)0xdeadc0de) = 0;
2589 *((
char*)(
intptr_t)0xdeadc0de) = 0;
2598 return (
val == (1|2|8|128));
2630 trace(
"volatile context corrupted\n");
2652#if defined(_X86_) && !defined(_PSEH3_H_) && !defined(_MSC_VER)
2653 static _SEH2Registration_t * prev_frame;
2654 _SEH2Registration_t passthrough_frame;
2659#if defined(_X86_) && !defined(_PSEH3_H_) && !defined(_MSC_VER)
2661 passthrough_frame.SER_Prev = prev_frame;
2666#if defined(__GNUC__) && defined(__i386__)
2669 "mov %%esp, 0x00 + %c[before]\n"
2670 "mov %%ebp, 0x04 + %c[before]\n"
2671 "mov %%ebx, 0x08 + %c[before]\n"
2672 "mov %%esi, 0x0c + %c[before]\n"
2673 "mov %%edi, 0x10 + %c[before]\n"
2675 "mov %%esp, 0x00 + %c[after]\n"
2676 "mov %%ebp, 0x04 + %c[after]\n"
2677 "mov %%ebx, 0x08 + %c[after]\n"
2678 "mov %%esi, 0x0c + %c[after]\n"
2679 "mov %%edi, 0x10 + %c[after]\n"
2683 "call %c[sanity_check]\n"
2689 "ebx",
"ecx",
"edx",
"esi",
"edi",
"flags",
"memory"
2695#if defined(_X86_) && !defined(_PSEH3_H_) && !defined(_MSC_VER)
2696 if((_SEH2Registration_t *)
__readfsdword(0) != &passthrough_frame || passthrough_frame.SER_Prev != prev_frame)
2698 trace(
"exception registration list corrupted\n");
2711 volatile int count = 0;
2718 *(
volatile int*)0x12345678 = 0x12345678;
2728 return (
count == 1);
2735 volatile int arr[512];
2736 for (
i = 0;
i < 512;
i++)
2743 unsigned long status = 0;
2746 *(
volatile int*)0x12345678 = 0x12345678;
2758#define USE_TEST_NAME_(NAME_) # NAME_
2759#define USE_TEST_NAME(NAME_) USE_TEST_NAME_(NAME_)
2760#define USE_TEST(NAME_) { USE_TEST_NAME(NAME_), NAME_ }
2770 const struct subtest testsuite[] =
2782 USE_TEST(test_continue_execution_1),
2785 USE_TEST(test_continue_execution_2),
2788 USE_TEST(test_continue_execution_3),
2791 USE_TEST(test_continue_execution_4),
2794 USE_TEST(test_continue_execution_5),
2797 USE_TEST(test_continue_execution_6),
2800 USE_TEST(test_continue_execution_7),
2803 USE_TEST(test_continue_execution_8),
2806 USE_TEST(test_continue_execution_9),
2809 USE_TEST(test_continue_execution_10),
2812 USE_TEST(test_continue_execution_11),
2815 USE_TEST(test_continue_execution_12),
2897 for(
i = 0;
i <
sizeof(testsuite) /
sizeof(testsuite[0]); ++
i)
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
@ ExceptionContinueSearch
LPTOP_LEVEL_EXCEPTION_FILTER WINAPI DECLSPEC_HOTPATCH SetUnhandledExceptionFilter(IN LPTOP_LEVEL_EXCEPTION_FILTER lpTopLevelExceptionFilter)
VOID WINAPI RaiseException(IN DWORD dwExceptionCode, IN DWORD dwExceptionFlags, IN DWORD nNumberOfArguments, IN CONST ULONG_PTR *lpArguments OPTIONAL)
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
GLuint GLuint GLsizei count
GLint GLint GLint GLint GLint GLint GLint GLbitfield GLenum filter
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
#define EXCEPTION_EXECUTE_HANDLER
#define EXCEPTION_CONTINUE_SEARCH
#define EXCEPTION_CONTINUE_EXECUTION
PPC_QUAL void __writefsdword(const unsigned long Offset, const unsigned long Data)
PPC_QUAL unsigned long __readfsdword(const unsigned long Offset)
#define DECLSPEC_NOINLINE
#define STATUS_ACCESS_VIOLATION
#define _SEH2_AbnormalTermination()
#define _SEH2_GetExceptionCode()
#define _SEH2_EXCEPT(...)
__asm__(".p2align 4, 0x90\n" ".seh_proc __seh2_global_filter_func\n" "__seh2_global_filter_func:\n" "\tpush %rbp\n" "\t.seh_pushreg %rbp\n" "\tsub $32, %rsp\n" "\t.seh_stackalloc 32\n" "\t.seh_endprologue\n" "\tmov %rdx, %rbp\n" "\tjmp *%rax\n" "__seh2_global_filter_func_exit:\n" "\t.p2align 4\n" "\tadd $32, %rsp\n" "\tpop %rbp\n" "\tret\n" "\t.seh_endproc")
#define _SEH2_GetExceptionInformation()
#define _SEH2_YIELD(__stmt)
int return_negative_2(void *)
static LONG WINAPI unhandled_exception(PEXCEPTION_POINTERS ExceptionInfo)
static void test_bug_4004_helper_2(void)
static int passthrough_handler(struct _EXCEPTION_RECORD *e, void *f, struct _CONTEXT *c, void *d)
int return_positive_4(void *, int)
static int test_yield_5_ret
#define DEFINE_TEST(NAME_)
static int test_finally_9_helper(void)
static int test_finally_9_ret
int return_minusone_4(void *, int)
static int test_finally_4_helper(void)
int return_minusone_3(int)
int return_positive_2(void *)
static int verify_xcode(int code, int xcode, int *ret, int filter)
static DECLSPEC_NOINLINE int call_test(int(*func)(void))
static int test_yield_1_helper(void)
static void test_finally_14_helper(void)
int return_negative(void)
static int test_yield_6_helper(void)
static int verify_xpointers(struct _EXCEPTION_POINTERS *ep, DWORD code, DWORD flags, DWORD argc, const ULONG_PTR *argv, int *ret, int filter)
static int test_yield_4_helper(void)
int return_negative_4(void *, int)
int return_zero_2(void *)
static void test_bug_4004_helper_1(void)
static int test_yield_2_helper(void)
int return_zero_4(void *, int)
int return_positive_3(int)
void use_lots_of_stack(void)
static int test_finally_4_ret
static int test_yield_3_helper(void)
static int test_finally_14_ret
int return_one_4(void *, int)
static int test_yield_5_helper(void)
static void test_finally_13_helper(void)
static int test_finally_13_ret
static DECLSPEC_NOINLINE int sanity_check(int ret, struct volatile_context *before, struct volatile_context *after)
int return_minusone(void)
static int test_yield_6_ret
int return_negative_3(int)
int return_minusone_2(void *)
int return_positive(void)
static unsigned __int64 next
PEXCEPTION_RECORD ExceptionRecord
ULONG_PTR ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS]
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 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 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 esi movl 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 mm1 paddd mm5 psrad mm1 psrad mm5 packssdw mm1 packssdw mm5 psubd mm0 psubd mm4 psubsw mm0 psubsw mm4 mm1 punpckldq mm0 pand mm1 pand mm0 por mm1 movq edi subl esi addl edx edi decl ecx jnz mm0 mm0 mm1 mm1 mm2 mm2 mm3 mm3 paddd mm0 paddd mm0 paddd mm0 movq mm1 psrlq mm1 paddd mm1 psrad mm1 packssdw mm1 psubd mm0 psubsw mm0 movd eax movw edi emms popl ebx popl esi popl edi mov ebp
__inline int before(__u32 seq1, __u32 seq2)
__inline int after(__u32 seq1, __u32 seq2)
PTOP_LEVEL_EXCEPTION_FILTER LPTOP_LEVEL_EXCEPTION_FILTER
#define EXCEPTION_NONCONTINUABLE