Fix build with coreclr 3.
authorMikhail Kurinnoi <m.kurinnoi@samsung.com>
Mon, 1 Apr 2019 10:59:36 +0000 (13:59 +0300)
committerMikhail Kurinnoi <m.kurinnoi@samsung.com>
Mon, 1 Apr 2019 10:59:36 +0000 (13:59 +0300)
src/arch/i386/asmhelpers.S
src/trace/executiontrace.cpp

index f8248eddba1283cf4002a30e486128b0e88bd1b8..4df069d66e5051fc607c9edb62d8b78c0e921d18 100644 (file)
@@ -10,6 +10,8 @@ NESTED_ENTRY EnterNaked3, _TEXT, NoHandler
     PROLOG_PUSH ebx
     PROLOG_PUSH ecx
     PROLOG_PUSH edx
+    sub esp,12
+    fstp QWORD PTR [esp]
     PROLOG_END
     
     mov ebx, [ebp+0x8]
@@ -17,12 +19,14 @@ NESTED_ENTRY EnterNaked3, _TEXT, NoHandler
     call    C_FUNC(EnterStub)
     
     EPILOG_BEG
+    fld QWORD PTR [esp]
+    add esp,12
     EPILOG_POP edx
     EPILOG_POP ecx
     EPILOG_POP ebx
     EPILOG_POP eax
     EPILOG_END
-    ret 4
+    ret
 NESTED_END EnterNaked3, _TEXT
 
 //
@@ -34,6 +38,8 @@ NESTED_ENTRY LeaveNaked3, _TEXT, NoHandler
     PROLOG_PUSH ebx
     PROLOG_PUSH ecx
     PROLOG_PUSH edx
+    sub esp,12
+    fstp QWORD PTR [esp]
     PROLOG_END
     
     mov ebx, [ebp+0x8]
@@ -41,12 +47,14 @@ NESTED_ENTRY LeaveNaked3, _TEXT, NoHandler
     call    C_FUNC(LeaveStub)
     
     EPILOG_BEG
+    fld QWORD PTR [esp]
+    add esp,12
     EPILOG_POP edx
     EPILOG_POP ecx
     EPILOG_POP ebx
     EPILOG_POP eax
     EPILOG_END
-    ret 4
+    ret
 NESTED_END LeaveNaked3, _TEXT
 
 //
@@ -58,6 +66,8 @@ NESTED_ENTRY TailcallNaked3, _TEXT, NoHandler
     PROLOG_PUSH ebx
     PROLOG_PUSH ecx
     PROLOG_PUSH edx
+    sub esp,12
+    fstp QWORD PTR [esp]
     PROLOG_END
     
     mov ebx, [ebp+0x8]
@@ -65,10 +75,12 @@ NESTED_ENTRY TailcallNaked3, _TEXT, NoHandler
     call    C_FUNC(TailcallStub)
     
     EPILOG_BEG
+    fld QWORD PTR [esp]
+    add esp,12
     EPILOG_POP edx
     EPILOG_POP ecx
     EPILOG_POP ebx
     EPILOG_POP eax
     EPILOG_END
-    ret 4
+    ret
 NESTED_END TailcallNaked3, _TEXT
index 8d3ad9a91049509ca0dbccd3c9a31af1d4a0ab64..9cef883beb6b5691c272064596f121584d20a457 100644 (file)
@@ -30,14 +30,15 @@ EXTERN_C UINT_PTR __stdcall FunctionIDMapStub(
         FunctionIDMap(funcId, pbHookFunction);
 }
 
-EXTERN_C void __stdcall EnterNaked3(FunctionIDOrClientID functionIDOrClientID);
-EXTERN_C void __stdcall LeaveNaked3(FunctionIDOrClientID functionIDOrClientID);
-EXTERN_C void __stdcall TailcallNaked3(FunctionIDOrClientID functionIDOrClientID);
+EXTERN_C void STDMETHODCALLTYPE EnterNaked3(FunctionIDOrClientID functionIDOrClientID);
+EXTERN_C void STDMETHODCALLTYPE LeaveNaked3(FunctionIDOrClientID functionIDOrClientID);
+EXTERN_C void STDMETHODCALLTYPE TailcallNaked3(FunctionIDOrClientID functionIDOrClientID);
 
 #ifdef _TARGET_ARM_
 EXTERN_C UINT_PTR getPrevPC();
 #endif // _TARGET_ARM_
 
+// if you change calling conversion here, make sure, that x86 asm are corrected too (EnterNaked3)
 EXTERN_C void __stdcall EnterStub(FunctionIDOrClientID functionIDOrClientID)
 {
     UINT_PTR ip = 0;
@@ -51,6 +52,7 @@ EXTERN_C void __stdcall EnterStub(FunctionIDOrClientID functionIDOrClientID)
     funcInfo->executionTrace->Enter(*funcInfo, ip);
 }
 
+// if you change calling conversion here, make sure, that x86 asm are corrected too (LeaveNaked3)
 EXTERN_C void __stdcall LeaveStub(FunctionIDOrClientID functionIDOrClientID)
 {
     FunctionInfo *funcInfo = reinterpret_cast<FunctionInfo*>(
@@ -58,6 +60,7 @@ EXTERN_C void __stdcall LeaveStub(FunctionIDOrClientID functionIDOrClientID)
     funcInfo->executionTrace->Leave(*funcInfo);
 }
 
+// if you change calling conversion here, make sure, that x86 asm are corrected too (TailcallNaked3)
 EXTERN_C void __stdcall TailcallStub(FunctionIDOrClientID functionIDOrClientID)
 {
     FunctionInfo *funcInfo = reinterpret_cast<FunctionInfo*>(