summaryrefslogtreecommitdiff
path: root/src/debug/ee/arm
diff options
context:
space:
mode:
authorJan Vorlicek <janvorli@microsoft.com>2015-09-08 14:01:30 +0200
committerJan Vorlicek <janvorli@microsoft.com>2015-09-08 16:04:31 +0200
commitb7bcb50634745d5280386fb8b03e204896d54df3 (patch)
tree8444a90764cbdcd837b0ad0f4e5d192cd8ea4867 /src/debug/ee/arm
parent1165038551b7ca20f230d867dc5fd2357ede14fe (diff)
downloadcoreclr-b7bcb50634745d5280386fb8b03e204896d54df3.tar.gz
coreclr-b7bcb50634745d5280386fb8b03e204896d54df3.tar.bz2
coreclr-b7bcb50634745d5280386fb8b03e204896d54df3.zip
Remove FuncEvalHijackPersonalityRoutine for PAL
The personality routine on Windows is responsible for redirecting exception unwinding to a different context when function evaluation is injected into a managed thread and there is an exception that escapes the evaluation. However, the FuncEvalHijackRealWorker catches all exceptions that happen during the function evaluation, so nothing should escape. Moreover, if anything escaped, it would go to the original hijacked code which is not expected. So I am replacing the personality routine for PAL with UnhandledExceptionHandlerUnix to guard against unexpected exception escaping. I am also setting the same personality routine to the ExceptionHijack function. Some time ago, it was removed completely there as a temporary fix for a problem with limited max number of personality routines in single executable. I have looked at it again and I can see that no exception should escape the ExceptionHijackWorker either and so the same thing as for FuncEvalHijack applies for ExceptionHijack too.
Diffstat (limited to 'src/debug/ee/arm')
-rw-r--r--src/debug/ee/arm/dbghelpers.S7
1 files changed, 2 insertions, 5 deletions
diff --git a/src/debug/ee/arm/dbghelpers.S b/src/debug/ee/arm/dbghelpers.S
index a71404a9c9..6094151063 100644
--- a/src/debug/ee/arm/dbghelpers.S
+++ b/src/debug/ee/arm/dbghelpers.S
@@ -15,10 +15,7 @@
// r0 : pointer to DebuggerEval object
//
-NESTED_ENTRY FuncEvalHijack, _TEXT, FuncEvalHijackPersonalityRoutine
-
- // NOTE: FuncEvalHijackPersonalityRoutine is dependent on the stack layout so if
- // you change the prolog you will also need to update the personality routine.
+NESTED_ENTRY FuncEvalHijack, _TEXT, UnhandledExceptionHandlerUnix
// push arg to the stack so our personality routine can find it
// push lr to get good stacktrace in debugger
@@ -48,7 +45,7 @@ NESTED_END FuncEvalHijack, _TEXT
// r3 : void* pdata
//
-NESTED_ENTRY ExceptionHijack, _TEXT, ExceptionHijackPersonalityRoutine
+NESTED_ENTRY ExceptionHijack, _TEXT, UnhandledExceptionHandlerUnix
CHECK_STACK_ALIGNMENT