Mercurial > games > semicongine
annotate fuhtark_test/include/excpt.h @ 1500:91c8c3b7cbf0 main
add: futhark tests for generating vulkan api
| author | sam <sam@basx.dev> |
|---|---|
| date | Wed, 26 Nov 2025 21:36:48 +0700 |
| parents | |
| children |
| rev | line source |
|---|---|
|
1500
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
1 /** |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
2 * This file has no copyright assigned and is placed in the Public Domain. |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
3 * This file is part of the w64 mingw-runtime package. |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
4 * No warranty is given; refer to the file DISCLAIMER within this package. |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
5 */ |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
6 #ifndef _INC_EXCPT |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
7 #define _INC_EXCPT |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
8 |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
9 #include <_mingw.h> |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
10 |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
11 #pragma pack(push,_CRT_PACKING) |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
12 |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
13 #ifdef __cplusplus |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
14 extern "C" { |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
15 #endif |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
16 |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
17 struct _EXCEPTION_POINTERS; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
18 |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
19 #ifndef EXCEPTION_DISPOSITION |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
20 #define EXCEPTION_DISPOSITION int |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
21 #endif |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
22 #define ExceptionContinueExecution 0 |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
23 #define ExceptionContinueSearch 1 |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
24 #define ExceptionNestedException 2 |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
25 #define ExceptionCollidedUnwind 3 |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
26 |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
27 #if (defined(_X86_) && !defined(__x86_64)) |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
28 struct _EXCEPTION_RECORD; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
29 struct _CONTEXT; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
30 |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
31 EXCEPTION_DISPOSITION __cdecl _except_handler(struct _EXCEPTION_RECORD *_ExceptionRecord,void *_EstablisherFrame,struct _CONTEXT *_ContextRecord,void *_DispatcherContext); |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
32 #elif defined(__ia64__) |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
33 |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
34 typedef struct _EXCEPTION_POINTERS *Exception_info_ptr; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
35 struct _EXCEPTION_RECORD; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
36 struct _CONTEXT; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
37 struct _DISPATCHER_CONTEXT; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
38 |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
39 _CRTIMP EXCEPTION_DISPOSITION __cdecl __C_specific_handler (struct _EXCEPTION_RECORD *_ExceptionRecord,unsigned __int64 _MemoryStackFp,unsigned __int64 _BackingStoreFp,struct _CONTEXT *_ContextRecord,struct _DISPATCHER_CONTEXT *_DispatcherContext,unsigned __int64 _GlobalPointer); |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
40 #elif defined(__x86_64) |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
41 |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
42 struct _EXCEPTION_RECORD; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
43 struct _CONTEXT; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
44 #endif |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
45 |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
46 #define GetExceptionCode _exception_code |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
47 #define exception_code _exception_code |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
48 #define GetExceptionInformation (struct _EXCEPTION_POINTERS *)_exception_info |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
49 #define exception_info (struct _EXCEPTION_POINTERS *)_exception_info |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
50 #define AbnormalTermination _abnormal_termination |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
51 #define abnormal_termination _abnormal_termination |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
52 |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
53 unsigned long __cdecl _exception_code(void); |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
54 void *__cdecl _exception_info(void); |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
55 int __cdecl _abnormal_termination(void); |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
56 |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
57 #define EXCEPTION_EXECUTE_HANDLER 1 |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
58 #define EXCEPTION_CONTINUE_SEARCH 0 |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
59 #define EXCEPTION_CONTINUE_EXECUTION -1 |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
60 |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
61 /* CRT stuff */ |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
62 typedef void (__cdecl * _PHNDLR)(int); |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
63 |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
64 struct _XCPT_ACTION { |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
65 unsigned long XcptNum; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
66 int SigNum; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
67 _PHNDLR XcptAction; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
68 }; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
69 |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
70 extern struct _XCPT_ACTION _XcptActTab[]; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
71 extern int _XcptActTabCount; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
72 extern int _XcptActTabSize; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
73 extern int _First_FPE_Indx; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
74 extern int _Num_FPE; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
75 |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
76 int __cdecl __CppXcptFilter(unsigned long _ExceptionNum,struct _EXCEPTION_POINTERS * _ExceptionPtr); |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
77 int __cdecl _XcptFilter(unsigned long _ExceptionNum,struct _EXCEPTION_POINTERS * _ExceptionPtr); |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
78 |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
79 /* |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
80 * The type of function that is expected as an exception handler to be |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
81 * installed with _try1. |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
82 */ |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
83 typedef EXCEPTION_DISPOSITION (*PEXCEPTION_HANDLER)(struct _EXCEPTION_RECORD*, void*, struct _CONTEXT*, void*); |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
84 |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
85 #ifndef HAVE_NO_SEH |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
86 /* |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
87 * This is not entirely necessary, but it is the structure installed by |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
88 * the _try1 primitive below. |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
89 */ |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
90 typedef struct _EXCEPTION_REGISTRATION { |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
91 struct _EXCEPTION_REGISTRATION *prev; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
92 EXCEPTION_DISPOSITION (*handler)(struct _EXCEPTION_RECORD*, void*, struct _CONTEXT*, void*); |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
93 } EXCEPTION_REGISTRATION, *PEXCEPTION_REGISTRATION; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
94 |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
95 typedef EXCEPTION_REGISTRATION EXCEPTION_REGISTRATION_RECORD; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
96 typedef PEXCEPTION_REGISTRATION PEXCEPTION_REGISTRATION_RECORD; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
97 #endif |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
98 |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
99 #if (defined(_X86_) && !defined(__x86_64)) |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
100 #define __try1(pHandler) \ |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
101 __asm__ ("pushl %0;pushl %%fs:0;movl %%esp,%%fs:0;" : : "g" (pHandler)); |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
102 |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
103 #define __except1 \ |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
104 __asm__ ("movl (%%esp),%%eax;movl %%eax,%%fs:0;addl $8,%%esp;" \ |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
105 : : : "%eax"); |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
106 #elif defined(__x86_64) |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
107 #define __try1(pHandler) \ |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
108 __asm__ ("pushq %0;pushq %%gs:0;movq %%rsp,%%gs:0;" : : "g" (pHandler)); |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
109 |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
110 #define __except1 \ |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
111 __asm__ ("movq (%%rsp),%%rax;movq %%rax,%%gs:0;addq $16,%%rsp;" \ |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
112 : : : "%rax"); |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
113 #else |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
114 #define __try1(pHandler) |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
115 #define __except1 |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
116 #endif |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
117 |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
118 #ifdef __cplusplus |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
119 } |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
120 #endif |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
121 |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
122 #pragma pack(pop) |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
123 #endif |
