diff options
author | Jonghyun Park <parjong@gmail.com> | 2017-02-17 18:19:16 +0900 |
---|---|---|
committer | Jan Vorlicek <janvorli@microsoft.com> | 2017-02-17 10:19:16 +0100 |
commit | 00fc8f9f212bc00eda9c94707b50e278d9b8d7c4 (patch) | |
tree | c28efb3b009e5302ec645424d4a7228bae1dbbce /src/pal/src/arch | |
parent | c75fee493ec0eb8b4ac57ac3ff69281531218386 (diff) | |
download | coreclr-00fc8f9f212bc00eda9c94707b50e278d9b8d7c4.tar.gz coreclr-00fc8f9f212bc00eda9c94707b50e278d9b8d7c4.tar.bz2 coreclr-00fc8f9f212bc00eda9c94707b50e278d9b8d7c4.zip |
[x86/Linux] Fix GetCallerSp (#9384)
* [x86/Linux] Fix GetCallerSp
* Do NOT pop stack argument for TransitionFrame
* Add ResumeEsp to CONTEXT
Diffstat (limited to 'src/pal/src/arch')
-rw-r--r-- | src/pal/src/arch/i386/asmconstants.h | 1 | ||||
-rw-r--r-- | src/pal/src/arch/i386/context2.S | 3 | ||||
-rw-r--r-- | src/pal/src/arch/i386/exceptionhelper.S | 2 |
3 files changed, 4 insertions, 2 deletions
diff --git a/src/pal/src/arch/i386/asmconstants.h b/src/pal/src/arch/i386/asmconstants.h index ff763ef16b..d947cb8bcd 100644 --- a/src/pal/src/arch/i386/asmconstants.h +++ b/src/pal/src/arch/i386/asmconstants.h @@ -28,3 +28,4 @@ #define CONTEXT_Xmm5 CONTEXT_Xmm4+16 #define CONTEXT_Xmm6 CONTEXT_Xmm5+16 #define CONTEXT_Xmm7 CONTEXT_Xmm6+16 +#define CONTEXT_ResumeEsp CONTEXT_ExtendedRegisters+512 diff --git a/src/pal/src/arch/i386/context2.S b/src/pal/src/arch/i386/context2.S index 11aba5e647..16843c8fc9 100644 --- a/src/pal/src/arch/i386/context2.S +++ b/src/pal/src/arch/i386/context2.S @@ -42,6 +42,7 @@ LEAF_ENTRY CONTEXT_CaptureContext, _TEXT mov [eax + CONTEXT_Ebp], ebp lea ebx, [esp + 12] mov [eax + CONTEXT_Esp], ebx + mov [eax + CONTEXT_ResumeEsp], ebx mov ebx, [esp + 8] mov [eax + CONTEXT_Eip], ebx @@ -114,7 +115,7 @@ LOCAL_LABEL(Done_Restore_CONTEXT_FLOATING_POINT): LOCAL_LABEL(Done_Restore_CONTEXT_EXTENDED_REGISTERS): // Restore Stack - mov esp, [eax + CONTEXT_Esp] + mov esp, [eax + CONTEXT_ResumeEsp] // Create a minimal frame push DWORD PTR [eax + CONTEXT_Eip] diff --git a/src/pal/src/arch/i386/exceptionhelper.S b/src/pal/src/arch/i386/exceptionhelper.S index 2061be26f8..4980b89451 100644 --- a/src/pal/src/arch/i386/exceptionhelper.S +++ b/src/pal/src/arch/i386/exceptionhelper.S @@ -23,7 +23,7 @@ LEAF_ENTRY ThrowExceptionFromContextInternal, _TEXT mov ebx, [esp + 8] // eax: CONTEXT * mov ebp, [ebx + CONTEXT_Ebp] - mov esp, [ebx + CONTEXT_Esp] + mov esp, [ebx + CONTEXT_ResumeEsp] // The ESP is re-initialized as the target frame's value, so the current function's // CFA is now right at the ESP. |