From: Zebediah Figura zfigura@codeweavers.com
This allows unwinding from a crash inside the function. --- dlls/msvcrt/string.c | 3 +++ 1 file changed, 3 insertions(+)
diff --git a/dlls/msvcrt/string.c b/dlls/msvcrt/string.c index dd392abd203..c598a6fa76f 100644 --- a/dlls/msvcrt/string.c +++ b/dlls/msvcrt/string.c @@ -2817,8 +2817,11 @@ int __cdecl memcmp(const void *ptr1, const void *ptr2, size_t n)
#define MEMMOVE_INIT \ "pushq " SRC_REG "\n\t" \ + __ASM_SEH(".seh_pushreg " SRC_REG "\n\t") \ __ASM_CFI(".cfi_adjust_cfa_offset 8\n\t") \ "pushq " DEST_REG "\n\t" \ + __ASM_SEH(".seh_pushreg " DEST_REG "\n\t") \ + __ASM_SEH(".seh_endprologue\n\t") \ __ASM_CFI(".cfi_adjust_cfa_offset 8\n\t") \ "movq %rcx, " DEST_REG "\n\t" \ "movq %rdx, " SRC_REG "\n\t"
From: Zebediah Figura zfigura@codeweavers.com
--- dlls/rpcrt4/ndr_stubless.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/dlls/rpcrt4/ndr_stubless.c b/dlls/rpcrt4/ndr_stubless.c index e15c93d2310..3a4bfc72df1 100644 --- a/dlls/rpcrt4/ndr_stubless.c +++ b/dlls/rpcrt4/ndr_stubless.c @@ -2306,11 +2306,11 @@ LONG_PTR CDECL DECLSPEC_HIDDEN ndr64_async_client_call( MIDL_STUBLESS_PROXY_INFO #ifdef __x86_64__
__ASM_GLOBAL_FUNC( Ndr64AsyncClientCall, - "movq %r9,0x20(%rsp)\n\t" - "leaq 0x20(%rsp),%r9\n\t" - "pushq $0\n\t" - "subq $0x20,%rsp\n\t" + "subq $0x28,%rsp\n\t" __ASM_CFI(".cfi_adjust_cfa_offset 0x28\n\t") + "movq %r9,0x48(%rsp)\n\t" + "leaq 0x48(%rsp),%r9\n\t" + "movq $0,0x20(%rsp)\n\t" "call " __ASM_NAME("ndr64_async_client_call") "\n\t" "addq $0x28,%rsp\n\t" __ASM_CFI(".cfi_adjust_cfa_offset -0x28\n\t")
From: Zebediah Figura zfigura@codeweavers.com
--- dlls/rpcrt4/ndr_stubless.c | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/dlls/rpcrt4/ndr_stubless.c b/dlls/rpcrt4/ndr_stubless.c index 3a4bfc72df1..890b248cfb8 100644 --- a/dlls/rpcrt4/ndr_stubless.c +++ b/dlls/rpcrt4/ndr_stubless.c @@ -2307,6 +2307,8 @@ LONG_PTR CDECL DECLSPEC_HIDDEN ndr64_async_client_call( MIDL_STUBLESS_PROXY_INFO
__ASM_GLOBAL_FUNC( Ndr64AsyncClientCall, "subq $0x28,%rsp\n\t" + __ASM_SEH(".seh_stackalloc 0x28\n\t") + __ASM_SEH(".seh_endprologue\n\t") __ASM_CFI(".cfi_adjust_cfa_offset 0x28\n\t") "movq %r9,0x48(%rsp)\n\t" "leaq 0x48(%rsp),%r9\n\t"
From: Zebediah Figura zfigura@codeweavers.com
--- dlls/rpcrt4/ndr_stubless.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/dlls/rpcrt4/ndr_stubless.c b/dlls/rpcrt4/ndr_stubless.c index 890b248cfb8..45f27f9f77d 100644 --- a/dlls/rpcrt4/ndr_stubless.c +++ b/dlls/rpcrt4/ndr_stubless.c @@ -2246,11 +2246,11 @@ LONG_PTR CDECL DECLSPEC_HIDDEN ndr64_client_call( MIDL_STUBLESS_PROXY_INFO *info #ifdef __x86_64__
__ASM_GLOBAL_FUNC( NdrClientCall3, - "movq %r9,0x20(%rsp)\n\t" - "leaq 0x20(%rsp),%r9\n\t" - "pushq $0\n\t" - "subq $0x20,%rsp\n\t" + "subq $0x28,%rsp\n\t" __ASM_CFI(".cfi_adjust_cfa_offset 0x28\n\t") + "movq %r9,0x48(%rsp)\n\t" + "leaq 0x48(%rsp),%r9\n\t" + "movq $0,0x20(%rsp)\n\t" "call " __ASM_NAME("ndr64_client_call") "\n\t" "addq $0x28,%rsp\n\t" __ASM_CFI(".cfi_adjust_cfa_offset -0x28\n\t")
From: Zebediah Figura zfigura@codeweavers.com
--- dlls/rpcrt4/ndr_stubless.c | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/dlls/rpcrt4/ndr_stubless.c b/dlls/rpcrt4/ndr_stubless.c index 45f27f9f77d..e3eb8a93c6d 100644 --- a/dlls/rpcrt4/ndr_stubless.c +++ b/dlls/rpcrt4/ndr_stubless.c @@ -2247,6 +2247,8 @@ LONG_PTR CDECL DECLSPEC_HIDDEN ndr64_client_call( MIDL_STUBLESS_PROXY_INFO *info
__ASM_GLOBAL_FUNC( NdrClientCall3, "subq $0x28,%rsp\n\t" + __ASM_SEH(".seh_stackalloc 0x28\n\t") + __ASM_SEH(".seh_endprologue\n\t") __ASM_CFI(".cfi_adjust_cfa_offset 0x28\n\t") "movq %r9,0x48(%rsp)\n\t" "leaq 0x48(%rsp),%r9\n\t"
From: Zebediah Figura zfigura@codeweavers.com
--- dlls/rpcrt4/ndr_stubless.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/dlls/rpcrt4/ndr_stubless.c b/dlls/rpcrt4/ndr_stubless.c index e3eb8a93c6d..e61294da07a 100644 --- a/dlls/rpcrt4/ndr_stubless.c +++ b/dlls/rpcrt4/ndr_stubless.c @@ -1005,12 +1005,12 @@ LONG_PTR CDECL DECLSPEC_HIDDEN ndr_client_call( PMIDL_STUB_DESC pStubDesc, PFORM #ifdef __x86_64__
__ASM_GLOBAL_FUNC( NdrClientCall2, - "movq %r8,0x18(%rsp)\n\t" - "movq %r9,0x20(%rsp)\n\t" - "leaq 0x18(%rsp),%r8\n\t" - "xorq %r9,%r9\n\t" "subq $0x28,%rsp\n\t" __ASM_CFI(".cfi_adjust_cfa_offset 0x28\n\t") + "movq %r8,0x40(%rsp)\n\t" + "movq %r9,0x48(%rsp)\n\t" + "leaq 0x40(%rsp),%r8\n\t" + "xorq %r9,%r9\n\t" "call " __ASM_NAME("ndr_client_call") "\n\t" "addq $0x28,%rsp\n\t" __ASM_CFI(".cfi_adjust_cfa_offset -0x28\n\t")
From: Zebediah Figura zfigura@codeweavers.com
--- dlls/rpcrt4/ndr_stubless.c | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/dlls/rpcrt4/ndr_stubless.c b/dlls/rpcrt4/ndr_stubless.c index e61294da07a..bf9313d818c 100644 --- a/dlls/rpcrt4/ndr_stubless.c +++ b/dlls/rpcrt4/ndr_stubless.c @@ -1006,6 +1006,8 @@ LONG_PTR CDECL DECLSPEC_HIDDEN ndr_client_call( PMIDL_STUB_DESC pStubDesc, PFORM
__ASM_GLOBAL_FUNC( NdrClientCall2, "subq $0x28,%rsp\n\t" + __ASM_SEH(".seh_stackalloc 0x28\n\t") + __ASM_SEH(".seh_endprologue\n\t") __ASM_CFI(".cfi_adjust_cfa_offset 0x28\n\t") "movq %r8,0x40(%rsp)\n\t" "movq %r9,0x48(%rsp)\n\t"
This merge request was approved by Piotr Caban.