7 ".seh_proc __seh2_global_filter_func\n"
8 "__seh2_global_filter_func:\n"
10 "\t.seh_pushreg %rbp\n"
12 "\t.seh_stackalloc 32\n"
13 "\t.seh_endprologue\n"
18 "__seh2_global_filter_func_exit:\n"
27 __label__ __seh2$$begin_try__; \
28 __label__ __seh2$$end_try__; \
38 __label__ __seh2$$leave_scope__;
40#define _SEH2_EXCEPT(...) \
41__seh2$$leave_scope__: __MINGW_ATTRIB_UNUSED; \
45 _Pragma("REACTOS seh(except)") \
48 __label__ __seh2$$leave_scope__; \
49 __label__ __seh2$$filter__; \
50 __label__ __seh2$$begin_except__; \
51 LONG __MINGW_ATTRIB_UNUSED __seh2$$exception_code__ = 0; \
53 __asm__ __volatile__ goto ("\n" \
54 "\t.seh_handlerdata\n" \
63 : __seh2$$begin_try__, \
66 __seh2$$begin_except__); \
70 __label__ __seh2$$filter_funclet__; \
72 __asm__ __volatile__ goto( \
73 "\tleaq %l0(%%rip), %%rax\n" \
74 "\tjmp __seh2_global_filter_func\n" \
78 : __seh2$$filter_funclet__); \
80 struct _EXCEPTION_POINTERS* __seh2$$exception_ptr__; \
81 __seh2$$filter_funclet__: \
83 __asm__ __volatile__("" \
84 : "=c"(__seh2$$exception_ptr__)
\
87 "%rax", "%rbx","%rdx", "%rdi", "%rsi", \
88 "%r8", "%r9", "%r10", "%r11", "%r12", "%r13", "%r14", "%r15"); \
90 __seh2$$exception_code__ = __seh2$$exception_ptr__->ExceptionRecord->ExceptionCode; \
92 register long __MINGW_ATTRIB_UNUSED __seh2$$filter_funclet_ret __asm__("eax") = \
95 __asm__("jmp __seh2_global_filter_func_exit"); \
100 __seh2$$abnormal_termination__ = 0 \
102 __seh2$$begin_except__:
104#define _SEH2_FINALLY \
105__seh2$$leave_scope__: __MINGW_ATTRIB_UNUSED; \
109 _Pragma("REACTOS seh(finally)") \
112 __label__ __seh2$$finally__; \
113 __label__ __seh2$$begin_finally__; \
114 __label__ __seh2$$leave_scope__; \
115 int __seh2$$abnormal_termination__; \
117 __asm__ __volatile__ goto ("\n" \
118 "\t.seh_handlerdata\n" \
127 : __seh2$$begin_try__, \
129 __seh2$$finally__); \
134 __asm__ __volatile__ goto( \
135 "\tleaq %l0(%%rip), %%rax\n" \
136 "\tjmp __seh2_global_filter_func\n" \
140 : __seh2$$begin_finally__); \
144 __asm__ __volatile__("xor %%rcx, %%rcx" \
148 "%rax", "%rbx", "%rcx", "%rdx", "%rdi", "%rsi", \
149 "%r8", "%r9", "%r10", "%r11", "%r12", "%r13", "%r14", "%r15"); \
151 __seh2$$begin_finally__: \
152 __asm__ __volatile__("" \
153 : "=c" (__seh2$$abnormal_termination__));
156 __seh2$$leave_scope__: __MINGW_ATTRIB_UNUSED; \
157 if (__seh2$$abnormal_termination__) \
159 __asm__("jmp __seh2_global_filter_func_exit"); \
164#define _SEH2_GetExceptionInformation() __seh2$$exception_ptr__
165#define _SEH2_GetExceptionCode() __seh2$$exception_code__
166#define _SEH2_AbnormalTermination() __seh2$$abnormal_termination__
167#define _SEH2_LEAVE goto __seh2$$leave_scope__
168#define _SEH2_YIELD(__stmt) __stmt
169#define _SEH2_VOLATILE volatile
__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")