- Add msvc.S containing call_stubless_func in assembly
- Fix spec file, 2 stub functions are already implemented
- fix use of GetExceptionCode(), it cannot be used in that context.

svn path=/trunk/; revision=52399
This commit is contained in:
Timo Kreuzer 2011-06-21 12:22:47 +00:00
parent b3b1b3262b
commit 2792c9b294
4 changed files with 27 additions and 5 deletions

View file

@ -23,6 +23,10 @@ list(APPEND SOURCE
${CMAKE_CURRENT_BINARY_DIR}/rpcrt4_stubs.c
${CMAKE_CURRENT_BINARY_DIR}/rpcrt4.def)
if(MSVC)
list(APPEND SOURCE msvc.S)
endif()
remove_definitions(-D_WIN32_WINNT=0x502)
add_definitions(-D_WIN32_WINNT=0x600)

View file

@ -0,0 +1,18 @@
#include <asm.inc>
.code32
EXTERN _ObjectStubless@4:PROC
PUBLIC _call_stubless_func
_call_stubless_func:
push esp /* pointer to index */
call _ObjectStubless@4
pop edx /* args size */
mov ecx, [esp] /* return address */
add esp, edx
jmp ecx
END

View file

@ -171,7 +171,7 @@ static RPC_STATUS get_epm_handle_server(RPC_BINDING_HANDLE *epm_handle)
static LONG WINAPI rpc_filter(EXCEPTION_POINTERS *__eptr)
{
switch (GetExceptionCode())
switch (__eptr->ExceptionRecord->ExceptionCode)
{
case EXCEPTION_ACCESS_VIOLATION:
case EXCEPTION_ILLEGAL_INSTRUCTION:
@ -396,7 +396,7 @@ RPC_STATUS WINAPI RpcEpResolveBinding( RPC_BINDING_HANDLE Binding, RPC_IF_HANDLE
status = get_epm_handle_client(Binding, &handle);
if (status != RPC_S_OK) return status;
status = TowerConstruct(&If->InterfaceId, &If->TransferSyntax, bind->Protseq,
((RpcBinding *)handle)->Endpoint,
bind->NetworkAddr, &tower);

View file

@ -53,7 +53,7 @@
@ stub I_RpcIfInqTransferSyntaxes
@ stub I_RpcLogEvent
@ stdcall I_RpcMapWin32Status(long)
@ stub I_RpcNegotiateTransferSyntax # wxp
@ stdcall I_RpcNegotiateTransferSyntax(ptr) # wxp
@ stub I_RpcNsBindingSetEntryName
@ stub I_RpcNsBindingSetEntryNameA
@ stub I_RpcNsBindingSetEntryNameW
@ -194,7 +194,7 @@
@ stdcall NdrFullPointerQueryPointer(ptr ptr long ptr)
@ stdcall NdrFullPointerQueryRefId(ptr long long ptr)
@ stdcall NdrFullPointerXlatFree(ptr)
@ stdcall NdrFullPointerXlatInit(long long)
@ stdcall NdrFullPointerXlatInit(long long)
@ stdcall NdrGetBuffer(ptr long ptr)
@ stub NdrGetDcomProtocolVersion
@ stub NdrGetPartialBuffer
@ -265,7 +265,7 @@
@ stdcall NdrRangeUnmarshall(ptr ptr ptr long)
@ stub NdrRpcSmClientAllocate
@ stub NdrRpcSmClientFree
@ stub NdrRpcSmSetClientToOsf
@ stdcall NdrRpcSmSetClientToOsf(ptr)
@ stub NdrRpcSsDefaultAllocate
@ stub NdrRpcSsDefaultFree
@ stub NdrRpcSsDisableAllocate