mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-09-02 19:26:32 +00:00
[VMWINST] Fix amd64 build
[NTDLL] add missing amd64 specific exports [MSVCRT*] Fix mangled c++ exports for amd64 [OLEAUT32] Add amd64 adm stub for call_method, fix MSVC/amd64 build [RICHED20] Fix MSVC thiscall wrapper [RPCRT4] add amd64 specific asm [KSFILTER] Add c++ aliases, use dummy KeSaveFloatingPointState and KeRestoreFloatingPointState on non-x86 builds [KMIXER] Fix a broken DPRINT [PSEH] Priorize native SEH over dummy SEH svn path=/trunk/; revision=53399
This commit is contained in:
@@ -78,7 +78,7 @@ DetectVMware(int *Version)
|
||||
__asm__ __volatile__("inl %%dx, %%eax"
|
||||
: "=a" (ver), "=b" (magic)
|
||||
: "0" (0x564d5868), "d" (0x5658), "c" (0xa));
|
||||
#elif defined(_MSC_VER)
|
||||
#elif defined(_MSC_VER) && defined(_M_IX86)
|
||||
__asm
|
||||
{
|
||||
push ebx
|
||||
@@ -90,6 +90,9 @@ DetectVMware(int *Version)
|
||||
mov [magic], ebx
|
||||
pop ebx
|
||||
}
|
||||
#elif defined(_MSC_VER) && defined(_M_AMD64)
|
||||
DPRINT1("DetectVMware stub\n");
|
||||
return FALSE;
|
||||
#else
|
||||
#error TODO
|
||||
#endif
|
||||
|
||||
@@ -1296,7 +1296,7 @@
|
||||
;@ cdecl -private -arch=i386 _CIpow()
|
||||
;@ cdecl _CIsin
|
||||
;@ cdecl _CIsqrt
|
||||
;@ stdcall -arch=x86_64 __C_specific_handler(ptr long ptr ptr)
|
||||
@ cdecl -arch=x86_64 __C_specific_handler(ptr long ptr ptr)
|
||||
@ cdecl __isascii(long)
|
||||
@ cdecl __iscsym(long)
|
||||
@ cdecl __iscsymf(long)
|
||||
@@ -1321,6 +1321,7 @@
|
||||
@ cdecl _itoa(long ptr long)
|
||||
@ cdecl _itow(long ptr long)
|
||||
@ cdecl _lfind(ptr ptr ptr long ptr)
|
||||
@ cdecl -arch=x86_64 _local_unwind()
|
||||
@ cdecl _ltoa(long ptr long)
|
||||
@ cdecl _ltow(long ptr long)
|
||||
@ cdecl _memccpy(ptr ptr long long)
|
||||
|
||||
@@ -43,9 +43,11 @@
|
||||
@ cdecl -i386 -norelay ??_Gbad_cast@@UAEPAXI@Z(long) __thiscall_MSVCRT_bad_cast_scalar_dtor
|
||||
@ cdecl -i386 -norelay ??_Gbad_typeid@@UAEPAXI@Z(long) __thiscall_MSVCRT_bad_typeid_scalar_dtor
|
||||
@ cdecl -i386 -norelay ??_Gexception@@UAEPAXI@Z(long) __thiscall_MSVCRT_exception_scalar_dtor
|
||||
@ cdecl ??_U@YAPAXI@Z(long) MSVCRT_operator_new
|
||||
@ cdecl -arch=win32 ??_U@YAPAXI@Z(long) MSVCRT_operator_new
|
||||
@ cdecl -arch=win64 ??_U@YAPEAX_K@Z(long) MSVCRT_operator_new
|
||||
# @ cdecl ??_U@YAPAXIHPBDH@Z(long long str long) MSVCRT_operator_new_dbg
|
||||
@ cdecl ??_V@YAXPAX@Z(ptr) MSVCRT_operator_delete
|
||||
@ cdecl -arch=win32 ??_V@YAXPAX@Z(ptr) MSVCRT_operator_delete
|
||||
@ cdecl -arch=win64 ??_V@YAXPEAX@Z(ptr) MSVCRT_operator_delete
|
||||
@ cdecl ?_query_new_handler@@YAP6AHI@ZXZ() MSVCRT__query_new_handler
|
||||
@ cdecl ?_query_new_mode@@YAHXZ() MSVCRT__query_new_mode
|
||||
@ cdecl ?_set_new_handler@@YAP6AHI@ZP6AHI@Z@Z(ptr) MSVCRT__set_new_handler
|
||||
@@ -1190,7 +1192,9 @@
|
||||
@ cdecl fgetwc(ptr)
|
||||
@ cdecl fgetws(ptr long ptr)
|
||||
@ cdecl floor(double)
|
||||
@ cdecl -arch=x86_64 floorf(long)
|
||||
@ cdecl fmod(double double)
|
||||
@ cdecl -arch=x86_64 fmodf(long)
|
||||
@ cdecl fopen(str str)
|
||||
# @ cdecl fopen_s(ptr str str)
|
||||
@ varargs fprintf(ptr str)
|
||||
@@ -1278,6 +1282,7 @@
|
||||
@ cdecl modf(double ptr)
|
||||
@ cdecl perror(str)
|
||||
@ cdecl pow(double double)
|
||||
@ cdecl -arch=x86_64 powf(long)
|
||||
@ varargs printf(str)
|
||||
# stub printf_s
|
||||
@ cdecl putc(long ptr)
|
||||
@@ -1302,10 +1307,12 @@
|
||||
@ cdecl setvbuf(ptr str long long)
|
||||
@ cdecl signal(long long)
|
||||
@ cdecl sin(double)
|
||||
@ cdecl -arch=x86_64 sinf(long)
|
||||
@ cdecl sinh(double)
|
||||
@ varargs sprintf(ptr str)
|
||||
# @ varargs sprintf_s(ptr long str)
|
||||
@ cdecl sqrt(double)
|
||||
@ cdecl -arch=x86_64 sqrtf(long)
|
||||
@ cdecl srand(long)
|
||||
@ varargs sscanf(str str)
|
||||
# @ varargs sscanf_s(str str)
|
||||
|
||||
@@ -77,8 +77,10 @@
|
||||
@ stub ??1streambuf@@UAE@XZ #
|
||||
@ stub ??1strstream@@UAE@XZ #
|
||||
@ stub ??1strstreambuf@@UAE@XZ #
|
||||
@ cdecl ??2@YAPAXI@Z(long) MSVCRT_operator_new
|
||||
@ cdecl ??3@YAXPAX@Z(ptr) MSVCRT_operator_delete
|
||||
@ cdecl -arch=win32 ??2@YAPAXI@Z(long) MSVCRT_operator_new
|
||||
@ cdecl -arch=win64 ??2@YAPEAX_K@Z(double) MSVCRT_operator_new
|
||||
@ cdecl -arch=win32 ??3@YAXPAX@Z(ptr) MSVCRT_operator_delete
|
||||
@ cdecl -arch=win64 ??3@YAXPEAX@Z(ptr) MSVCRT_operator_delete
|
||||
@ stub ??4Iostream_init@@QAEAAV0@ABV0@@Z #
|
||||
@ stub ??4filebuf@@QAEAAV0@ABV0@@Z #
|
||||
@ stub ??4fstream@@QAEAAV0@AAV0@@Z #
|
||||
@@ -457,7 +459,7 @@
|
||||
@ extern _HUGE
|
||||
@ cdecl _XcptFilter(long ptr)
|
||||
@ cdecl -i386 __CxxFrameHandler(ptr ptr ptr ptr)
|
||||
@ stdcall __CxxLongjmpUnwind(ptr)
|
||||
@ stdcall -i386 __CxxLongjmpUnwind(ptr)
|
||||
@ cdecl __STRINGTOLD(ptr ptr str long)
|
||||
@ extern __argc
|
||||
@ extern __argv
|
||||
@@ -596,7 +598,7 @@
|
||||
@ cdecl _fsopen(str str long)
|
||||
@ cdecl _fstat(long ptr)
|
||||
@ cdecl _ftime(ptr)
|
||||
@ cdecl -ret64 _ftol()
|
||||
@ cdecl -arch=i386 -ret64 _ftol()
|
||||
@ cdecl _fullpath(ptr str long)
|
||||
@ cdecl _futime(long ptr)
|
||||
@ cdecl _gcvt(double long str)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,15 @@
|
||||
|
||||
#include <asm.inc>
|
||||
|
||||
#ifdef _M_AMD64
|
||||
.code64
|
||||
|
||||
PUBLIC call_method
|
||||
call_method:
|
||||
int 2ch
|
||||
ret
|
||||
|
||||
#else
|
||||
.code32
|
||||
|
||||
PUBLIC _call_method
|
||||
@@ -26,5 +35,6 @@ cm1:
|
||||
pop esi
|
||||
pop ebp
|
||||
ret
|
||||
#endif
|
||||
|
||||
END
|
||||
|
||||
@@ -136,41 +136,41 @@ _unmarshal_interface(marshal_state *buf, REFIID riid, LPUNKNOWN *pUnk) {
|
||||
DWORD xsize;
|
||||
|
||||
TRACE("...%s...\n",debugstr_guid(riid));
|
||||
|
||||
|
||||
*pUnk = NULL;
|
||||
hres = xbuf_get(buf,(LPBYTE)&xsize,sizeof(xsize));
|
||||
if (hres) {
|
||||
ERR("xbuf_get failed\n");
|
||||
return hres;
|
||||
}
|
||||
|
||||
|
||||
if (xsize == 0) return S_OK;
|
||||
|
||||
|
||||
hres = CreateStreamOnHGlobal(0,TRUE,&pStm);
|
||||
if (hres) {
|
||||
ERR("Stream create failed %x\n",hres);
|
||||
return hres;
|
||||
}
|
||||
|
||||
|
||||
hres = IStream_Write(pStm,buf->base+buf->curoff,xsize,&res);
|
||||
if (hres) {
|
||||
ERR("stream write %x\n",hres);
|
||||
return hres;
|
||||
}
|
||||
|
||||
|
||||
memset(&seekto,0,sizeof(seekto));
|
||||
hres = IStream_Seek(pStm,seekto,SEEK_SET,&newpos);
|
||||
if (hres) {
|
||||
ERR("Failed Seek %x\n",hres);
|
||||
return hres;
|
||||
}
|
||||
|
||||
|
||||
hres = CoUnmarshalInterface(pStm,riid,(LPVOID*)pUnk);
|
||||
if (hres) {
|
||||
ERR("Unmarshalling interface %s failed with %x\n",debugstr_guid(riid),hres);
|
||||
return hres;
|
||||
}
|
||||
|
||||
|
||||
IStream_Release(pStm);
|
||||
return xbuf_skip(buf,xsize);
|
||||
}
|
||||
@@ -200,25 +200,25 @@ _marshal_interface(marshal_state *buf, REFIID riid, LPUNKNOWN pUnk) {
|
||||
hres = E_FAIL;
|
||||
|
||||
TRACE("...%s...\n",debugstr_guid(riid));
|
||||
|
||||
|
||||
hres = CreateStreamOnHGlobal(0,TRUE,&pStm);
|
||||
if (hres) {
|
||||
ERR("Stream create failed %x\n",hres);
|
||||
goto fail;
|
||||
}
|
||||
|
||||
|
||||
hres = CoMarshalInterface(pStm,riid,pUnk,0,NULL,0);
|
||||
if (hres) {
|
||||
ERR("Marshalling interface %s failed with %x\n", debugstr_guid(riid), hres);
|
||||
goto fail;
|
||||
}
|
||||
|
||||
|
||||
hres = IStream_Stat(pStm,&ststg,STATFLAG_NONAME);
|
||||
if (hres) {
|
||||
ERR("Stream stat failed\n");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
|
||||
tempbuf = HeapAlloc(GetProcessHeap(), 0, ststg.cbSize.u.LowPart);
|
||||
memset(&seekto,0,sizeof(seekto));
|
||||
hres = IStream_Seek(pStm,seekto,SEEK_SET,&newpos);
|
||||
@@ -226,22 +226,22 @@ _marshal_interface(marshal_state *buf, REFIID riid, LPUNKNOWN pUnk) {
|
||||
ERR("Failed Seek %x\n",hres);
|
||||
goto fail;
|
||||
}
|
||||
|
||||
|
||||
hres = IStream_Read(pStm,tempbuf,ststg.cbSize.u.LowPart,&res);
|
||||
if (hres) {
|
||||
ERR("Failed Read %x\n",hres);
|
||||
goto fail;
|
||||
}
|
||||
|
||||
|
||||
xsize = ststg.cbSize.u.LowPart;
|
||||
xbuf_add(buf,(LPBYTE)&xsize,sizeof(xsize));
|
||||
hres = xbuf_add(buf,tempbuf,ststg.cbSize.u.LowPart);
|
||||
|
||||
|
||||
HeapFree(GetProcessHeap(),0,tempbuf);
|
||||
IStream_Release(pStm);
|
||||
|
||||
|
||||
return hres;
|
||||
|
||||
|
||||
fail:
|
||||
xsize = 0;
|
||||
xbuf_add(buf,(LPBYTE)&xsize,sizeof(xsize));
|
||||
@@ -385,8 +385,13 @@ typedef struct _TMAsmProxy {
|
||||
#include "poppack.h"
|
||||
|
||||
#else /* __i386__ */
|
||||
#ifdef _MSC_VER
|
||||
#pragma message("You need to implement stubless proxies for your architecture")
|
||||
#else
|
||||
# warning You need to implement stubless proxies for your architecture
|
||||
#endif
|
||||
typedef struct _TMAsmProxy {
|
||||
char a;
|
||||
} TMAsmProxy;
|
||||
#endif
|
||||
|
||||
@@ -1010,7 +1015,7 @@ deserialize_param(
|
||||
ITypeInfo_ReleaseTypeAttr(tinfo2, tattr);
|
||||
ITypeInfo_Release(tinfo2);
|
||||
}
|
||||
/* read it in all cases, we need to know if we have
|
||||
/* read it in all cases, we need to know if we have
|
||||
* NULL pointer or not.
|
||||
*/
|
||||
hres = xbuf_get(buf,(LPBYTE)&cookie,sizeof(cookie));
|
||||
@@ -1862,7 +1867,7 @@ TMStubImpl_AddRef(LPRPCSTUBBUFFER iface)
|
||||
{
|
||||
TMStubImpl *This = (TMStubImpl *)iface;
|
||||
ULONG refCount = InterlockedIncrement(&This->ref);
|
||||
|
||||
|
||||
TRACE("(%p)->(ref before=%u)\n", This, refCount - 1);
|
||||
|
||||
return refCount;
|
||||
|
||||
@@ -52,11 +52,9 @@ DEFINE_THISCALL_WRAPPER(ITextHostImpl_TxImmGetContext,4)
|
||||
DEFINE_THISCALL_WRAPPER(ITextHostImpl_TxImmReleaseContext,8)
|
||||
DEFINE_THISCALL_WRAPPER(ITextHostImpl_TxGetSelectionBarWidth,8)
|
||||
|
||||
#define STDCALL(func) __stdcall_ ## func
|
||||
#define DEFINE_STDCALL_WRAPPER(num,func,args) \
|
||||
__declspec(naked) void __stdcall __stdcall_##func(_tag_##func p1) \
|
||||
{ \
|
||||
__asm pop eax \
|
||||
__asm pop eax \
|
||||
__asm pop ecx \
|
||||
__asm push eax \
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
|
||||
#include <asm.inc>
|
||||
|
||||
#ifdef _M_IX86
|
||||
.code32
|
||||
|
||||
EXTERN _ndr_client_call:PROC
|
||||
@@ -28,5 +29,118 @@ _call_stubless_func:
|
||||
mov ecx, [esp] /* return address */
|
||||
add esp, edx
|
||||
jmp ecx
|
||||
#else
|
||||
.code64
|
||||
|
||||
END
|
||||
EXTERN ndr_client_call:PROC
|
||||
|
||||
PUBLIC call_stubless_func
|
||||
FUNC call_stubless_func
|
||||
mov [rsp + 8], rcx
|
||||
.SAVEREG rcx, 8
|
||||
mov [rsp + 10h], rdx
|
||||
.SAVEREG rdx, 10h
|
||||
mov [rsp + 18h], r8
|
||||
.SAVEREG r8, 18h
|
||||
mov [rsp + 20h], r9
|
||||
.SAVEREG r9, 20h
|
||||
sub rsp, 38h
|
||||
.ALLOCSTACK 38h
|
||||
.ENDPROLOG
|
||||
|
||||
lea r8, [rsp +38h + 8] /* &This */
|
||||
mov rcx, [rcx] /* This->lpVtbl */
|
||||
mov rcx, [rcx - 10h] /* MIDL_STUBLESS_PROXY_INFO */
|
||||
mov rdx, [rcx + 10h] /* info->FormatStringOffset */
|
||||
movzx rdx, word ptr [rdx+r10*2] /* FormatStringOffset[index] */
|
||||
add rdx, [rcx + 8] /* info->ProcFormatString + offset */
|
||||
mov rcx, [rcx] /* info->pStubDesc */
|
||||
|
||||
movaps [rsp + 20h], xmm1
|
||||
movaps [rsp + 28h], xmm2
|
||||
movaps [rsp + 30h], xmm3
|
||||
lea r9, [rsp + 18h] /* fpu_args */
|
||||
call ndr_client_call
|
||||
add rsp, 38h
|
||||
ret
|
||||
ENDFUNC call_stubless_func
|
||||
|
||||
PUBLIC call_server_func
|
||||
FUNC call_server_func
|
||||
push rbp
|
||||
.PUSHREG rbp
|
||||
mov rbp, rsp
|
||||
push rsi
|
||||
.PUSHREG rsi
|
||||
push rdi
|
||||
.PUSHREG rdi
|
||||
.ENDPROLOG
|
||||
|
||||
mov rax, rcx /* function to call */
|
||||
mov rcx, 32 /* allocate max(32,stack_size) bytes of stack space */
|
||||
cmp r8, rcx
|
||||
cmovg rcx, r8
|
||||
sub rsp, rcx
|
||||
and rsp, NOT 15
|
||||
mov rcx, r8
|
||||
shr rcx, 3
|
||||
mov rdi, rsp
|
||||
mov rsi, rdx
|
||||
rep movsq /* copy arguments */
|
||||
mov rcx, [rsp]
|
||||
mov rdx, [rsp + 8]
|
||||
mov r8, [rsp + 16]
|
||||
mov r9, [rsp + 24]
|
||||
movd xmm0, rcx
|
||||
movd xmm1, rdx
|
||||
movd xmm2, r8
|
||||
movd xmm3, r9
|
||||
call rax
|
||||
|
||||
lea rsp, [rbp - 16] /* restore stack */
|
||||
pop rdi
|
||||
pop rsi
|
||||
pop rbp
|
||||
ret
|
||||
ENDFUNC call_server_func
|
||||
|
||||
|
||||
PUBLIC NdrClientCall2
|
||||
FUNC NdrClientCall2
|
||||
mov [rsp + 18h], r8
|
||||
.SAVEREG r8, 18h
|
||||
mov [rsp + 20h], r9
|
||||
.SAVEREG r9, 20h
|
||||
sub rsp, 28h
|
||||
.ALLOCSTACK 28h
|
||||
.ENDPROLOG
|
||||
|
||||
lea r8, [rsp + 28h + 18h]
|
||||
xor r9, r9
|
||||
call ndr_client_call
|
||||
|
||||
add rsp, 28h
|
||||
ret
|
||||
ENDFUNC NdrClientCall2
|
||||
|
||||
EXTERN ndr_async_client_call:PROC
|
||||
PUBLIC NdrAsyncClientCall
|
||||
FUNC NdrAsyncClientCall
|
||||
mov [rsp + 18h], r8
|
||||
.SAVEREG r8, 18h
|
||||
mov [rsp + 20h], r9
|
||||
.SAVEREG r9, 20h
|
||||
sub rsp, 28h
|
||||
.ALLOCSTACK 28h
|
||||
.ENDPROLOG
|
||||
|
||||
lea r8, [rsp + 28h + 18h]
|
||||
call ndr_async_client_call
|
||||
|
||||
add rsp, 28h
|
||||
ret
|
||||
ENDFUNC NdrAsyncClientCall
|
||||
|
||||
#endif
|
||||
|
||||
END
|
||||
|
||||
@@ -8,11 +8,11 @@ EXTERN &orig:PROC
|
||||
ALIAS <&alias> = <&orig>
|
||||
ENDM
|
||||
|
||||
#ifdef _M_IX86
|
||||
PUBLIC ?NonDelegatedRelease@CBaseUnknown@@UAGKXZ
|
||||
?NonDelegatedRelease@CBaseUnknown@@UAGKXZ:
|
||||
jmp _IIndirectedUnknown_fnRelease@4
|
||||
|
||||
|
||||
DEFINE_ALIAS ??0CBaseUnknown@@QAE@ABU_GUID@@PAUIUnknown@@@Z, @CBaseUnknown_ConstructorWithGUID@16
|
||||
DEFINE_ALIAS ??0CBaseUnknown@@QAE@PAUIUnknown@@@Z, @CBaseUnknown_Constructor@12
|
||||
DEFINE_ALIAS ??1CBaseUnknown@@UAE@XZ, @CBaseUnknown_DefaultDestructor@8
|
||||
@@ -22,5 +22,21 @@ DEFINE_ALIAS ?IndirectedQueryInterface@CBaseUnknown@@UAGJABU_GUID@@PAPAX@Z, _IIn
|
||||
DEFINE_ALIAS ?IndirectedRelease@CBaseUnknown@@UAGKXZ, _IIndirectedUnknown_fnRelease@4
|
||||
DEFINE_ALIAS ?NonDelegatedAddRef@CBaseUnknown@@UAGKXZ, _INonDelegatedUnknown_fnAddRef@4
|
||||
DEFINE_ALIAS ?NonDelegatedQueryInterface@CBaseUnknown@@UAGJABU_GUID@@PAPAX@Z, _INonDelegatedUnknown_fnQueryInterface@12
|
||||
#else
|
||||
EXTERN IIndirectedUnknown_fnRelease:PROC
|
||||
PUBLIC ?NonDelegatedRelease@CBaseUnknown@@UAGKXZ
|
||||
?NonDelegatedRelease@CBaseUnknown@@UAGKXZ:
|
||||
jmp IIndirectedUnknown_fnRelease
|
||||
|
||||
DEFINE_ALIAS ??0CBaseUnknown@@QAE@ABU_GUID@@PAUIUnknown@@@Z, CBaseUnknown_ConstructorWithGUID
|
||||
DEFINE_ALIAS ??0CBaseUnknown@@QAE@PAUIUnknown@@@Z, CBaseUnknown_Constructor
|
||||
DEFINE_ALIAS ??1CBaseUnknown@@UAE@XZ, CBaseUnknown_DefaultDestructor
|
||||
DEFINE_ALIAS ??_FCBaseUnknown@@QAEXXZ, CBaseUnknown_Destructor
|
||||
DEFINE_ALIAS ?IndirectedAddRef@CBaseUnknown@@UAGKXZ, IIndirectedUnknown_fnAddRef
|
||||
DEFINE_ALIAS ?IndirectedQueryInterface@CBaseUnknown@@UAGJABU_GUID@@PAPAX@Z, IIndirectedUnknown_fnQueryInterface
|
||||
DEFINE_ALIAS ?IndirectedRelease@CBaseUnknown@@UAGKXZ, IIndirectedUnknown_fnRelease
|
||||
DEFINE_ALIAS ?NonDelegatedAddRef@CBaseUnknown@@UAGKXZ, INonDelegatedUnknown_fnAddRef
|
||||
DEFINE_ALIAS ?NonDelegatedQueryInterface@CBaseUnknown@@UAGJABU_GUID@@PAPAX@Z, INonDelegatedUnknown_fnQueryInterface
|
||||
#endif
|
||||
|
||||
END
|
||||
|
||||
@@ -32,3 +32,8 @@ KMixAllocateDeviceHeader(
|
||||
NTSTATUS
|
||||
CreatePin(
|
||||
IN PIRP Irp);
|
||||
|
||||
#ifndef _M_IX86
|
||||
#define KeSaveFloatingPointState(x) ((void)(x), STATUS_SUCCESS)
|
||||
#define KeRestoreFloatingPointState(x) ((void)0)
|
||||
#endif
|
||||
|
||||
@@ -76,7 +76,7 @@ PerformSampleRateConversion(
|
||||
State = src_new(SRC_SINC_FASTEST, NumChannels, &error);
|
||||
if (!State)
|
||||
{
|
||||
DPRINT1("KeSaveFloatingPointState failed with %x\n", Status);
|
||||
DPRINT1("src_new failed with %x\n", error);
|
||||
KeRestoreFloatingPointState(&FloatSave);
|
||||
ExFreePool(FloatIn);
|
||||
ExFreePool(FloatOut);
|
||||
|
||||
@@ -23,19 +23,7 @@
|
||||
#ifndef KJK_PSEH2_H_
|
||||
#define KJK_PSEH2_H_
|
||||
|
||||
#if defined(USE_DUMMY_PSEH) || defined (__arm__) || defined(__clang__) || defined(_M_AMD64)
|
||||
|
||||
#define _SEH2_TRY {
|
||||
#define _SEH2_FINALLY } {
|
||||
#define _SEH2_EXCEPT(...) } if (0) {
|
||||
#define _SEH2_END }
|
||||
#define _SEH2_GetExceptionInformation()
|
||||
#define _SEH2_GetExceptionCode() 0
|
||||
#define _SEH2_AbnormalTermination()
|
||||
#define _SEH2_YIELD(STMT_) STMT_
|
||||
#define _SEH2_LEAVE
|
||||
|
||||
#elif defined(USE_NATIVE_SEH) || defined(_MSC_VER)
|
||||
#if defined(USE_NATIVE_SEH) || defined(_MSC_VER)
|
||||
|
||||
#include <excpt.h>
|
||||
#define _SEH2_TRY __try
|
||||
@@ -48,6 +36,18 @@
|
||||
#define _SEH2_YIELD(STMT_) STMT_
|
||||
#define _SEH2_LEAVE __leave
|
||||
|
||||
#elif defined(USE_DUMMY_PSEH) || defined (__arm__) || defined(__clang__) || defined(_M_AMD64)
|
||||
|
||||
#define _SEH2_TRY {
|
||||
#define _SEH2_FINALLY } {
|
||||
#define _SEH2_EXCEPT(...) } if (0) {
|
||||
#define _SEH2_END }
|
||||
#define _SEH2_GetExceptionInformation()
|
||||
#define _SEH2_GetExceptionCode() 0
|
||||
#define _SEH2_AbnormalTermination()
|
||||
#define _SEH2_YIELD(STMT_) STMT_
|
||||
#define _SEH2_LEAVE
|
||||
|
||||
#elif defined(__GNUC__)
|
||||
|
||||
struct _EXCEPTION_RECORD;
|
||||
|
||||
Reference in New Issue
Block a user