summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSaeHie Park <saehie.park@gmail.com>2016-11-29 08:10:14 +0900
committerJan Vorlicek <janvorli@microsoft.com>2016-11-29 00:10:14 +0100
commit4fb0c3e3cff61c09a5ec745b354e3219607295a3 (patch)
tree4a5118354acb9f3457476de473ef6c53dee2944c
parente5d9c9f4dea33b66339f748d837e99a3d645ff79 (diff)
downloadcoreclr-4fb0c3e3cff61c09a5ec745b354e3219607295a3.tar.gz
coreclr-4fb0c3e3cff61c09a5ec745b354e3219607295a3.tar.bz2
coreclr-4fb0c3e3cff61c09a5ec745b354e3219607295a3.zip
[x86/Linux] Fix constructor missing in UnmanagedToManagedFrame (#8275)
Fix compile error for x86/Linux - full error string: constructor for 'UMThkCallFrame' must explicitly initialize the base class 'UnmanagedToManagedFrame' which does not have a default constructor - wrap UMThkCallFrame with also !FEATURE_PAL
-rw-r--r--src/inc/vptr_list.h2
-rw-r--r--src/vm/dllimportcallback.h2
-rw-r--r--src/vm/frames.cpp8
-rw-r--r--src/vm/frames.h12
-rw-r--r--src/vm/i386/cgenx86.cpp2
-rw-r--r--src/vm/i386/stublinkerx86.cpp4
-rw-r--r--src/vm/prestub.cpp6
7 files changed, 20 insertions, 16 deletions
diff --git a/src/inc/vptr_list.h b/src/inc/vptr_list.h
index bac0c1165e..c26a3bc6a0 100644
--- a/src/inc/vptr_list.h
+++ b/src/inc/vptr_list.h
@@ -126,7 +126,7 @@ VPTR_CLASS(StubHelperFrame)
#ifdef FEATURE_REMOTING
VPTR_CLASS(TPMethodFrame)
#endif
-#if defined(_TARGET_X86_)
+#if defined(_TARGET_X86_) && !defined(FEATURE_PAL)
VPTR_CLASS(UMThkCallFrame)
#endif
VPTR_CLASS(TailCallFrame)
diff --git a/src/vm/dllimportcallback.h b/src/vm/dllimportcallback.h
index 6de87d77a3..059906e9e2 100644
--- a/src/vm/dllimportcallback.h
+++ b/src/vm/dllimportcallback.h
@@ -569,7 +569,7 @@ private:
AppDomain *m_pDomain;
};
-#ifdef _TARGET_X86_
+#if defined(_TARGET_X86_) && !defined(FEATURE_PAL)
//-------------------------------------------------------------------------
// One-time creation of special prestub to initialize UMEntryThunks.
//-------------------------------------------------------------------------
diff --git a/src/vm/frames.cpp b/src/vm/frames.cpp
index 04a1815cf3..99e8a2110d 100644
--- a/src/vm/frames.cpp
+++ b/src/vm/frames.cpp
@@ -74,7 +74,7 @@ void Frame::Log() {
MethodDesc* method = GetFunction();
-#ifdef _TARGET_X86_
+#if defined(_TARGET_X86_) && !defined(FEATURE_PAL)
if (GetVTablePtr() == UMThkCallFrame::GetMethodFrameVPtr())
method = ((UMThkCallFrame*) this)->GetUMEntryThunk()->GetMethod();
#endif
@@ -85,7 +85,7 @@ void Frame::Log() {
const char* frameType;
if (GetVTablePtr() == PrestubMethodFrame::GetMethodFrameVPtr())
frameType = "PreStub";
-#ifdef _TARGET_X86_
+#if defined(_TARGET_X86_) && !defined(FEATURE_PAL)
else if (GetVTablePtr() == UMThkCallFrame::GetMethodFrameVPtr())
frameType = "UMThkCallFrame";
#endif
@@ -1671,7 +1671,7 @@ void ComMethodFrame::DoSecondPassHandlerCleanup(Frame * pCurFrame)
#endif // FEATURE_COMINTEROP
-#ifdef _TARGET_X86_
+#if defined(_TARGET_X86_) && !defined(FEATURE_PAL)
PTR_UMEntryThunk UMThkCallFrame::GetUMEntryThunk()
{
@@ -1694,7 +1694,7 @@ void UMThkCallFrame::EnumMemoryRegions(CLRDataEnumMemoryFlags flags)
}
#endif
-#endif // _TARGET_X86_
+#endif // _TARGET_X86_ && !FEATURE_PAL
#ifndef DACCESS_COMPILE
diff --git a/src/vm/frames.h b/src/vm/frames.h
index 40359db375..99482ca552 100644
--- a/src/vm/frames.h
+++ b/src/vm/frames.h
@@ -113,8 +113,10 @@
// | +-ComPrestubMethodFrame - prestub frame for calls from COM to CLR
// |
#endif //FEATURE_COMINTEROP
+#if defined(_TARGET_X86_) && !defined(FEATURE_PAL)
// | +-UMThkCallFrame - this frame represents an unmanaged->managed
// | transition through N/Direct
+#endif
// |
// +-ContextTransitionFrame - this frame is used to mark an appdomain transition
// |
@@ -266,7 +268,7 @@ FRAME_TYPE_NAME(DebuggerClassInitMarkFrame)
FRAME_TYPE_NAME(DebuggerSecurityCodeMarkFrame)
FRAME_TYPE_NAME(DebuggerExitFrame)
FRAME_TYPE_NAME(DebuggerU2MCatchHandlerFrame)
-#ifdef _TARGET_X86_
+#if defined(_TARGET_X86_) && !defined(FEATURE_PAL)
FRAME_TYPE_NAME(UMThkCallFrame)
#endif
#if defined(FEATURE_INCLUDE_ALL_INTERFACES) && defined(_TARGET_X86_)
@@ -2897,7 +2899,7 @@ typedef DPTR(class UMThunkMarshInfo) PTR_UMThunkMarshInfo;
class UMEntryThunk;
typedef DPTR(class UMEntryThunk) PTR_UMEntryThunk;
-#ifdef _TARGET_X86_
+#if defined(_TARGET_X86_) && !defined(FEATURE_PAL)
//------------------------------------------------------------------------
// This frame guards an unmanaged->managed transition thru a UMThk
//------------------------------------------------------------------------
@@ -2925,9 +2927,9 @@ protected:
// Keep as last entry in class
DEFINE_VTABLE_GETTER_AND_CTOR_AND_DTOR(UMThkCallFrame)
};
-#endif // _TARGET_X86_
+#endif // _TARGET_X86_ && !FEATURE_PAL
-#if defined(_TARGET_X86_)
+#if defined(_TARGET_X86_) && !defined(FEATURE_PAL)
//-------------------------------------------------------------------------
// Exception handler for COM to managed frame
// and the layout of the exception registration record structure in the stack
@@ -2947,7 +2949,7 @@ struct ComToManagedExRecord
return &m_frame;
}
};
-#endif // _TARGET_X86_
+#endif // _TARGET_X86_ && !FEATURE_PAL
#if defined(FEATURE_INCLUDE_ALL_INTERFACES) && defined(_TARGET_X86_)
//-----------------------------------------------------------------------------
diff --git a/src/vm/i386/cgenx86.cpp b/src/vm/i386/cgenx86.cpp
index e200c19f65..cefeeef0f0 100644
--- a/src/vm/i386/cgenx86.cpp
+++ b/src/vm/i386/cgenx86.cpp
@@ -760,6 +760,7 @@ WORD GetUnpatchedCodeData(LPCBYTE pAddr)
#ifndef DACCESS_COMPILE
+#if !defined(FEATURE_PAL)
//-------------------------------------------------------------------------
// One-time creation of special prestub to initialize UMEntryThunks.
//-------------------------------------------------------------------------
@@ -809,6 +810,7 @@ Stub *GenerateUMThunkPrestub()
RETURN psl->Link(SystemDomain::GetGlobalLoaderAllocator()->GetExecutableHeap());
}
+#endif // !FEATURE_PAL
Stub *GenerateInitPInvokeFrameHelper()
{
diff --git a/src/vm/i386/stublinkerx86.cpp b/src/vm/i386/stublinkerx86.cpp
index 0037a7d3e6..cbe548e346 100644
--- a/src/vm/i386/stublinkerx86.cpp
+++ b/src/vm/i386/stublinkerx86.cpp
@@ -2535,7 +2535,7 @@ VOID StubLinkerCPU::X86EmitCurrentAppDomainFetch(X86Reg dstreg, unsigned preserv
#endif // FEATURE_IMPLICIT_TLS
}
-#ifdef _TARGET_X86_
+#if defined(_TARGET_X86_) && !defined(FEATURE_PAL)
#ifdef PROFILING_SUPPORTED
VOID StubLinkerCPU::EmitProfilerComCallProlog(TADDR pFrameVptr, X86Reg regFrame)
@@ -2946,7 +2946,7 @@ VOID StubLinkerCPU::EmitRareSetup(CodeLabel *pRejoinPoint, BOOL fThrow)
}
//========================================================================
-#endif // _TARGET_X86_
+#endif // _TARGET_X86_ && !FEATURE_PAL
//========================================================================
#if defined(FEATURE_COMINTEROP) && defined(_TARGET_X86_)
//========================================================================
diff --git a/src/vm/prestub.cpp b/src/vm/prestub.cpp
index 2077f163a3..7a977fc979 100644
--- a/src/vm/prestub.cpp
+++ b/src/vm/prestub.cpp
@@ -1647,7 +1647,7 @@ PCODE MethodDesc::DoPrestub(MethodTable *pDispatchingMT)
// use the prestub.
//==========================================================================
-#ifdef _TARGET_X86_
+#if defined(_TARGET_X86_) && !defined(FEATURE_PAL)
static PCODE g_UMThunkPreStub;
#endif
@@ -1676,7 +1676,7 @@ void InitPreStubManager(void)
return;
}
-#ifdef _TARGET_X86_
+#if defined(_TARGET_X86_) && !defined(FEATURE_PAL)
g_UMThunkPreStub = GenerateUMThunkPrestub()->GetEntryPoint();
#endif
@@ -1687,7 +1687,7 @@ PCODE TheUMThunkPreStub()
{
LIMITED_METHOD_CONTRACT;
-#ifdef _TARGET_X86_
+#if defined(_TARGET_X86_) && !defined(FEATURE_PAL)
return g_UMThunkPreStub;
#else
return GetEEFuncEntryPoint(TheUMEntryPrestub);