32 extern void no_op(
void);
67 #define DEFINE_TEST(NAME_) static int NAME_(void) 2420 *((
char*)(
intptr_t)0xc0000000) = 0;
2438 *((
char*)(
intptr_t)0xc0000000) = 0;
2447 return (
val == 3) || (
val == 4) || (
val == 5);
2461 register int val1 = 0, val2 = 0;
2470 *((
char*)(
intptr_t)0xc0000000) = 0;
2490 if ((val1 == 10) && (val2 == 5))
2496 if ((val1 == 0) && (val2 == 5))
2500 if (((val1 == 8) && (val2 == 4)) ||
2501 ((val1 == 0) && (val2 == 4)))
2506 #endif // __cplusplus 2510 unsigned result = 0xdeadbeef;
2529 volatile int val = 0;
2542 *((
char*)(
intptr_t)0xdeadc0de) = 0;
2550 *((
char*)(
intptr_t)0xdeadc0de) = 0;
2559 return (
val == (128|4|2|1));
2564 volatile int val = 0;
2572 *((
char*)(
intptr_t)0xdeadc0de) = 0;
2578 *((
char*)(
intptr_t)0xdeadc0de) = 0;
2584 *((
char*)(
intptr_t)0xdeadc0de) = 0;
2593 return (
val == (1|2|8|128));
2603 #if defined(_M_IX86) 2625 trace(
"volatile context corrupted\n");
2647 #if defined(_X86_) && !defined(_PSEH3_H_) && !defined(_MSC_VER) 2648 static _SEH2Registration_t * prev_frame;
2649 _SEH2Registration_t passthrough_frame;
2654 #if defined(_X86_) && !defined(_PSEH3_H_) && !defined(_MSC_VER) 2656 passthrough_frame.SER_Prev = prev_frame;
2661 #if defined(__GNUC__) && defined(__i386__) 2664 "mov %%esp, 0x00 + %c[before]\n" 2665 "mov %%ebp, 0x04 + %c[before]\n" 2666 "mov %%ebx, 0x08 + %c[before]\n" 2667 "mov %%esi, 0x0c + %c[before]\n" 2668 "mov %%edi, 0x10 + %c[before]\n" 2670 "mov %%esp, 0x00 + %c[after]\n" 2671 "mov %%ebp, 0x04 + %c[after]\n" 2672 "mov %%ebx, 0x08 + %c[after]\n" 2673 "mov %%esi, 0x0c + %c[after]\n" 2674 "mov %%edi, 0x10 + %c[after]\n" 2678 "call %c[sanity_check]\n" 2684 "ebx",
"ecx",
"edx",
"esi",
"edi",
"flags",
"memory" 2690 #if defined(_X86_) && !defined(_PSEH3_H_) && !defined(_MSC_VER) 2691 if((_SEH2Registration_t *)
__readfsdword(0) != &passthrough_frame || passthrough_frame.SER_Prev != prev_frame)
2693 trace(
"exception registration list corrupted\n");
2706 volatile int count = 0;
2713 *(
volatile int*)0x12345678 = 0x12345678;
2723 return (
count == 1);
2730 volatile int arr[512];
2731 for (
i = 0;
i < 512;
i++)
2738 unsigned long status = 0;
2741 *(
volatile int*)0x12345678 = 0x12345678;
2753 #define USE_TEST_NAME_(NAME_) # NAME_ 2754 #define USE_TEST_NAME(NAME_) USE_TEST_NAME_(NAME_) 2755 #define USE_TEST(NAME_) { USE_TEST_NAME(NAME_), NAME_ } 2765 const struct subtest testsuite[] =
2777 USE_TEST(test_continue_execution_1),
2780 USE_TEST(test_continue_execution_2),
2783 USE_TEST(test_continue_execution_3),
2786 USE_TEST(test_continue_execution_4),
2789 USE_TEST(test_continue_execution_5),
2792 USE_TEST(test_continue_execution_6),
2795 USE_TEST(test_continue_execution_7),
2798 USE_TEST(test_continue_execution_8),
2801 USE_TEST(test_continue_execution_9),
2804 USE_TEST(test_continue_execution_10),
2807 USE_TEST(test_continue_execution_11),
2810 USE_TEST(test_continue_execution_12),
2892 for(
i = 0;
i <
sizeof(testsuite) /
sizeof(testsuite[0]); ++
i)
int return_negative_2(void *)
#define DEFINE_TEST(NAME_)
static int test_yield_6_ret
struct png_info_def **typedef void(__cdecl typeof(png_destroy_read_struct))(struct png_struct_def **
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
static int test_finally_4_ret
static int test_yield_5_ret
ecx edi ebx edx edi decl ecx esi eax jecxz decl eax andl eax esi movl edx movl TEMP incl eax andl eax ecx incl ebx eax jnz xchgl ecx incl TEMP esp ecx subl ebx pushl ecx ecx edx ecx 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 mm1 mm5 paddd mm0 paddd mm4 mm0 mm4 packssdw mm0 packssdw mm4 mm1 punpckldq mm0 pand mm1 pand mm0 por mm1 movq edi esi edx edi decl ecx jnz popl ecx ecx jecxz mm0 mm0 mm1 mm1 mm2 mm2 mm3 mm3 paddd mm0 paddd mm0 paddd mm0 movq mm1 mm1 paddd mm0 mm0 packssdw mm0 movd eax movw edi esi edx esi 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 mm1 mm5 paddd mm1 paddd mm5 mm1 mm5 packssdw mm1 packssdw mm5 psubd mm0 psubd mm4 psubsw mm0 psubsw mm4 mm1 punpckldq mm0 pand mm1 pand mm0 por mm1 movq edi esi edx edi decl ecx jnz mm0 mm0 mm1 mm1 mm2 mm2 mm3 mm3 paddd mm0 paddd mm0 paddd mm0 movq mm1 mm1 paddd mm1 mm1 packssdw mm1 psubd mm0 psubsw mm0 movd eax movw edi emms popl ebx popl esi popl edi mov ebp
ecx edi ebx edx edi decl ecx esi eax jecxz decl eax andl eax esi movl edx movl TEMP incl eax andl eax ecx incl ebx eax jnz xchgl ecx incl TEMP esi
static int test_yield_3_helper(void)
GLuint GLuint GLsizei count
#define EXCEPTION_NONCONTINUABLE
int return_zero_2(void *)
int return_negative_3(int)
static int test_yield_4_helper(void)
__inline int before(__u32 seq1, __u32 seq2)
__asm__("\n\t \
NewInt3Handler:\n\t \
pushl $" STR(REASON_INT3) "\n\t \
// call debugger loop\n\t \
jmp NewInt31Handler\n\t \
")
static void test_bug_4004_helper_2(void)
static int test_finally_9_ret
#define EXCEPTION_CONTINUE_EXECUTION
static int test_finally_4_helper(void)
void use_lots_of_stack(void)
static void test_bug_4004_helper_1(void)
static int test_yield_5_helper(void)
LPTOP_LEVEL_EXCEPTION_FILTER WINAPI DECLSPEC_HOTPATCH SetUnhandledExceptionFilter(IN LPTOP_LEVEL_EXCEPTION_FILTER lpTopLevelExceptionFilter)
static void test_finally_13_helper(void)
static int test_finally_14_ret
#define _SEH2_GetExceptionInformation()
static int test_finally_13_ret
static int test_yield_1_helper(void)
static int verify_xpointers(struct _EXCEPTION_POINTERS *ep, DWORD code, DWORD flags, DWORD argc, const ULONG_PTR *argv, int *ret, int filter)
#define _SEH2_AbnormalTermination()
int return_zero_4(void *, int)
PPC_QUAL unsigned long __readfsdword(const unsigned long Offset)
int return_minusone_3(int)
int return_negative(void)
ULONG_PTR ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS]
ecx edi ebx edx edi decl ecx esi eax jecxz decl eax andl eax esi movl edx movl TEMP incl eax andl eax ecx incl ebx eax jnz xchgl ecx incl TEMP esp ecx subl ebx pushl ecx ecx edx ecx 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 mm1 mm5 paddd mm0 paddd mm4 mm0 mm4 packssdw mm0 packssdw mm4 mm1 punpckldq mm0 pand mm1 pand mm0 por mm1 movq edi esi edx edi decl ecx jnz popl ecx ecx jecxz mm0 mm0 mm1 mm1 mm2 mm2 mm3 mm3 paddd mm0 paddd mm0 paddd mm0 movq mm1 mm1 paddd mm0 mm0 packssdw mm0 movd eax movw edi esi edx edi
#define EXCEPTION_EXECUTE_HANDLER
static int passthrough_handler(struct _EXCEPTION_RECORD *e, void *f, struct _CONTEXT *c, void *d)
ecx edi ebx edx edi decl ecx esi eax jecxz decl eax andl ebx
int return_negative_4(void *, int)
static void test_finally_14_helper(void)
PTOP_LEVEL_EXCEPTION_FILTER LPTOP_LEVEL_EXCEPTION_FILTER
__inline int after(__u32 seq1, __u32 seq2)
static LONG WINAPI unhandled_exception(PEXCEPTION_POINTERS ExceptionInfo)
int return_positive_3(int)
static unsigned __int64 next
VOID WINAPI RaiseException(IN DWORD dwExceptionCode, IN DWORD dwExceptionFlags, IN DWORD nNumberOfArguments, IN CONST ULONG_PTR *lpArguments OPTIONAL)
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
int return_minusone(void)
#define EXCEPTION_CONTINUE_SEARCH
#define STATUS_ACCESS_VIOLATION
int return_positive_4(void *, int)
int return_positive(void)
PPC_QUAL void __writefsdword(const unsigned long Offset, const unsigned long Data)
int return_minusone_4(void *, int)
static DECLSPEC_NOINLINE int sanity_check(int ret, struct volatile_context *before, struct volatile_context *after)
int return_one_4(void *, int)
int return_positive_2(void *)
static int test_yield_6_helper(void)
static int test_yield_2_helper(void)
int return_minusone_2(void *)
PEXCEPTION_RECORD ExceptionRecord
#define _SEH2_EXCEPT(...)
#define _SEH2_GetExceptionCode()
#define _SEH2_YIELD(__stmt)
#define DECLSPEC_NOINLINE
static int verify_xcode(int code, int xcode, int *ret, int filter)
GLint GLint GLint GLint GLint GLint GLint GLbitfield GLenum filter
static int test_finally_9_helper(void)
static DECLSPEC_NOINLINE int call_test(int(*func)(void))
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *