Rebase against 9118512135a1aac6969bf575a0656855ba84ef11.

This commit is contained in:
Sebastian Lackner
2017-07-19 13:21:54 +02:00
parent d9d149f369
commit a05970ca53
8 changed files with 248 additions and 96 deletions

View File

@@ -0,0 +1,46 @@
From 3966912cf531178531910e730e2e88bc05448556 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Wed, 19 Jul 2017 01:20:01 +0200
Subject: ntdll: Clear upper WORD of segment registers in RtlCaptureContext.
---
dlls/ntdll/signal_i386.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/dlls/ntdll/signal_i386.c b/dlls/ntdll/signal_i386.c
index 9a25468308b..24f797ffaf9 100644
--- a/dlls/ntdll/signal_i386.c
+++ b/dlls/ntdll/signal_i386.c
@@ -1241,9 +1241,13 @@ __ASM_STDCALL_FUNC( RtlCaptureContext, 4,
"movl 8(%esp),%eax\n\t" /* context */
"movl $0x10007,(%eax)\n\t" /* context->ContextFlags */
"movw %gs,0x8c(%eax)\n\t" /* context->SegGs */
+ "movw $0,0x8e(%eax)\n\t"
"movw %fs,0x90(%eax)\n\t" /* context->SegFs */
+ "movw $0,0x92(%eax)\n\t"
"movw %es,0x94(%eax)\n\t" /* context->SegEs */
+ "movw $0,0x96(%eax)\n\t"
"movw %ds,0x98(%eax)\n\t" /* context->SegDs */
+ "movw $0,0x9a(%eax)\n\t"
"movl %edi,0x9c(%eax)\n\t" /* context->Edi */
"movl %esi,0xa0(%eax)\n\t" /* context->Esi */
"movl %ebx,0xa4(%eax)\n\t" /* context->Ebx */
@@ -1253,6 +1257,7 @@ __ASM_STDCALL_FUNC( RtlCaptureContext, 4,
"movl 4(%esp),%edx\n\t"
"movl %edx,0xb8(%eax)\n\t" /* context->Eip */
"movw %cs,0xbc(%eax)\n\t" /* context->SegCs */
+ "movw $0,0xbe(%eax)\n\t"
"pushfl\n\t"
__ASM_CFI(".cfi_adjust_cfa_offset 4\n\t")
"popl 0xc0(%eax)\n\t" /* context->EFlags */
@@ -1260,6 +1265,7 @@ __ASM_STDCALL_FUNC( RtlCaptureContext, 4,
"leal 8(%esp),%edx\n\t"
"movl %edx,0xc4(%eax)\n\t" /* context->Esp */
"movw %ss,0xc8(%eax)\n\t" /* context->SegSs */
+ "movw $0,0xca(%eax)\n\t"
"popl 0xb0(%eax)\n\t" /* context->Eax */
__ASM_CFI(".cfi_adjust_cfa_offset -4\n\t")
"ret $4" )
--
2.13.1