summaryrefslogtreecommitdiff
path: root/src/vm/i386/excepx86.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/vm/i386/excepx86.cpp')
-rw-r--r--src/vm/i386/excepx86.cpp125
1 files changed, 33 insertions, 92 deletions
diff --git a/src/vm/i386/excepx86.cpp b/src/vm/i386/excepx86.cpp
index 71200f671f..b860800943 100644
--- a/src/vm/i386/excepx86.cpp
+++ b/src/vm/i386/excepx86.cpp
@@ -33,11 +33,11 @@
#include "eeconfig.h"
#include "vars.hpp"
#include "generics.h"
-#include "securityprincipal.h"
#include "asmconstants.h"
#include "virtualcallstub.h"
+#ifndef WIN64EXCEPTIONS
MethodDesc * GetUserMethodForILStub(Thread * pThread, UINT_PTR uStubSP, MethodDesc * pILStubMD, Frame ** ppFrameOut);
#if !defined(DACCESS_COMPILE)
@@ -2018,20 +2018,6 @@ PEXCEPTION_REGISTRATION_RECORD GetCurrentSEHRecord()
return (EXCEPTION_REGISTRATION_RECORD*) fs0;
}
-#ifdef FEATURE_PAL
-VOID SetSEHRecord(PEXCEPTION_REGISTRATION_RECORD record)
-{
- WRAPPER_NO_CONTRACT;
- record->Next = CurrentSEHRecord;
- CurrentSEHRecord = record;
-}
-
-VOID ResetSEHRecord(PEXCEPTION_REGISTRATION_RECORD record)
-{
- CurrentSEHRecord = record->Next;
-}
-#endif // FEATURE_PAL
-
PEXCEPTION_REGISTRATION_RECORD GetFirstCOMPlusSEHRecord(Thread *pThread) {
WRAPPER_NO_CONTRACT;
#ifndef FEATURE_PAL
@@ -2274,19 +2260,11 @@ int COMPlusThrowCallbackHelper(IJitManager *pJitManager,
CONTRACTL_END;
int iFilt = 0;
- BOOL impersonating = FALSE;
#ifndef FEATURE_PAL
EX_TRY
{
GCPROTECT_BEGIN (throwable);
- if (pData->hCallerToken != NULL)
- {
- STRESS_LOG1(LF_EH, LL_INFO100, "In COMPlusThrowCallbackHelper hCallerToken = %d\n",pData->hCallerToken);
- // CLR_ImpersonateLoggedOnUser fails fast on error
- COMPrincipal::CLR_ImpersonateLoggedOnUser(pData->hCallerToken);
- impersonating = TRUE;
- }
// We want to call filters even if the thread is aborting, so suppress abort
// checks while the filter runs.
@@ -2295,25 +2273,10 @@ int COMPlusThrowCallbackHelper(IJitManager *pJitManager,
BYTE* startAddress = (BYTE*)pCf->GetCodeInfo()->GetStartAddress();
iFilt = ::CallJitEHFilter(pCf, startAddress, EHClausePtr, nestingLevel, throwable);
- if (impersonating)
- {
- STRESS_LOG1(LF_EH, LL_INFO100, "In COMPlusThrowCallbackHelper hImpersonationToken = %d\n",pData->hImpersonationToken);
- // CLR_ImpersonateLoggedOnUser fails fast on error
- COMPrincipal::CLR_ImpersonateLoggedOnUser(pData->hImpersonationToken);
- impersonating = FALSE;
- }
GCPROTECT_END();
}
EX_CATCH
{
- if (impersonating)
- {
- STRESS_LOG1(LF_EH, LL_INFO100, "In COMPlusThrowCallbackHelper EX_CATCH hImpersonationToken = %d\n",pData->hImpersonationToken);
- // CLR_ImpersonateLoggedOnUser fails fast on error
- COMPrincipal::CLR_ImpersonateLoggedOnUser(pData->hImpersonationToken);
- impersonating = FALSE;
- }
-
// We had an exception in filter invocation that remained unhandled.
// Sync managed exception state, for the managed thread, based upon the active exception tracker.
pThread->SyncManagedExceptionState(false);
@@ -2445,27 +2408,6 @@ StackWalkAction COMPlusThrowCallback( // SWA value
pData->bSkipLastElement = FALSE;
}
-#ifndef FEATURE_PAL
- // Check for any impersonation on the frame and save that for use during EH filter callbacks
- OBJECTREF* pRefSecDesc = pCf->GetAddrOfSecurityObject();
- if (pRefSecDesc != NULL && *pRefSecDesc != NULL)
- {
- FRAMESECDESCREF fsdRef = (FRAMESECDESCREF)*pRefSecDesc;
- if (fsdRef->GetCallerToken() != NULL)
- {
- // Impersonation info present on the Frame
- pData->hCallerToken = fsdRef->GetCallerToken();
- STRESS_LOG1(LF_EH, LL_INFO100, "In COMPlusThrowCallback. Found non-NULL callertoken on FSD:%d\n",pData->hCallerToken);
- if (!pData->bImpersonationTokenSet)
- {
- pData->hImpersonationToken = fsdRef->GetImpersonationToken();
- STRESS_LOG1(LF_EH, LL_INFO100, "In COMPlusThrowCallback. Found non-NULL impersonationtoken on FSD:%d\n",pData->hImpersonationToken);
- pData->bImpersonationTokenSet = TRUE;
- }
- }
- }
-#endif // !FEATURE_PAL
-
// now we've got the stack trace, if we aren't allowed to catch this and we're first pass, return
if (pData->bDontCatch)
return SWA_CONTINUE;
@@ -3666,33 +3608,11 @@ EXCEPTION_HANDLER_IMPL(UMThunkPrestubHandler)
return retval;
}
-LONG CLRNoCatchHandler(EXCEPTION_POINTERS* pExceptionInfo, PVOID pv)
-{
- WRAPPER_NO_CONTRACT;
- STATIC_CONTRACT_ENTRY_POINT;
-
- LONG result = EXCEPTION_CONTINUE_SEARCH;
-
- // This function can be called during the handling of a SO
- //BEGIN_ENTRYPOINT_VOIDRET;
-
- result = CLRVectoredExceptionHandler(pExceptionInfo);
-
- if (EXCEPTION_EXECUTE_HANDLER == result)
- {
- result = EXCEPTION_CONTINUE_SEARCH;
- }
-
- //END_ENTRYPOINT_VOIDRET;
-
- return result;
-}
-
#ifdef FEATURE_COMINTEROP
// The reverse COM interop path needs to be sure to pop the ComMethodFrame that is pushed, but we do not want
-// to have an additional FS:0 handler between the COM callsite and the call into managed. So we push this
-// FS:0 handler, which will defer to the usual COMPlusFrameHandler and then perform the cleanup of the
-// ComMethodFrame, if needed.
+// to have an additional FS:0 handler between the COM callsite and the call into managed. So we push this
+// FS:0 handler, which will defer to the usual COMPlusFrameHandler and then perform the cleanup of the
+// ComMethodFrame, if needed.
EXCEPTION_HANDLER_IMPL(COMPlusFrameHandlerRevCom)
{
STATIC_CONTRACT_THROWS;
@@ -3711,7 +3631,36 @@ EXCEPTION_HANDLER_IMPL(COMPlusFrameHandlerRevCom)
return result;
}
#endif // FEATURE_COMINTEROP
+#endif // !DACCESS_COMPILE
+#endif // !WIN64EXCEPTIONS
+
+#ifndef DACCESS_COMPILE
+LONG CLRNoCatchHandler(EXCEPTION_POINTERS* pExceptionInfo, PVOID pv)
+{
+#ifndef WIN64EXCEPTIONS
+ WRAPPER_NO_CONTRACT;
+ STATIC_CONTRACT_ENTRY_POINT;
+
+ LONG result = EXCEPTION_CONTINUE_SEARCH;
+
+ // This function can be called during the handling of a SO
+ //BEGIN_ENTRYPOINT_VOIDRET;
+ result = CLRVectoredExceptionHandler(pExceptionInfo);
+
+ if (EXCEPTION_EXECUTE_HANDLER == result)
+ {
+ result = EXCEPTION_CONTINUE_SEARCH;
+ }
+
+ //END_ENTRYPOINT_VOIDRET;
+
+ return result;
+#else // !WIN64EXCEPTIONS
+ return EXCEPTION_CONTINUE_SEARCH;
+#endif // !WIN64EXCEPTIONS
+}
+#endif // !DACCESS_COMPILE
// Returns TRUE if caller should resume execution.
BOOL
@@ -3768,11 +3717,3 @@ AdjustContextForVirtualStub(
return TRUE;
}
-
-#ifdef FEATURE_PAL
-VOID DECLSPEC_NORETURN DispatchManagedException(PAL_SEHException& ex, bool isHardwareException)
-{
- UNREACHABLE();
-}
-#endif
-#endif // !DACCESS_COMPILE