From bb7c571c1fb9bedf80ea481fc28921a7d0f1f344 Mon Sep 17 00:00:00 2001 From: Jonghyun Park Date: Wed, 29 Mar 2017 08:43:34 +0900 Subject: [PATCH] [x86/Linux] Align frame before SetObjectAppDomain call (dotnet/coreclr#10519) Commit migrated from https://github.com/dotnet/coreclr/commit/e05aa41840d1551d4048fff8192a4598cabb0573 --- src/coreclr/src/vm/i386/jitinterfacex86.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/coreclr/src/vm/i386/jitinterfacex86.cpp b/src/coreclr/src/vm/i386/jitinterfacex86.cpp index 1d8a6ba..18acbf0 100644 --- a/src/coreclr/src/vm/i386/jitinterfacex86.cpp +++ b/src/coreclr/src/vm/i386/jitinterfacex86.cpp @@ -642,6 +642,12 @@ void JIT_TrialAlloc::EmitSetAppDomain(CPUSTUBLINKER *psl) // Save ECX over function call psl->X86EmitPushReg(kECX); +#ifdef UNIX_X86_ABI +#define STACK_ALIGN_PADDING 8 + // sub esp, STACK_ALIGN_PADDING; to align the stack + psl->X86EmitSubEsp(STACK_ALIGN_PADDING); +#endif // UNIX_X86_ABI + // mov object to ECX // mov ecx, eax psl->Emit16(0xc88b); @@ -649,6 +655,12 @@ void JIT_TrialAlloc::EmitSetAppDomain(CPUSTUBLINKER *psl) // SetObjectAppDomain pops its arg & returns object in EAX psl->X86EmitCall(psl->NewExternalCodeLabel((LPVOID)SetObjectAppDomain), 4); +#ifdef UNIX_X86_ABI + // add esp, STACK_ALIGN_PADDING + psl->X86EmitAddEsp(STACK_ALIGN_PADDING); +#undef STACK_ALIGN_PADDING +#endif // UNIX_X86_ABI + psl->X86EmitPopReg(kECX); } -- 2.7.4