summaryrefslogtreecommitdiff
path: root/src/pal/inc
diff options
context:
space:
mode:
authorMike McLaughlin <mikem@microsoft.com>2015-12-08 18:58:30 -0800
committerMike McLaughlin <mikem@microsoft.com>2015-12-09 16:02:28 -0800
commit44f43e5d4ece85d05376c690263eea05e11e4174 (patch)
tree4af0dec0636fa6d5e737e43fbec0cf61ecd17b75 /src/pal/inc
parentc27ae7b93c527b2f2865d530f5b4286b09c245cb (diff)
downloadcoreclr-44f43e5d4ece85d05376c690263eea05e11e4174.tar.gz
coreclr-44f43e5d4ece85d05376c690263eea05e11e4174.tar.bz2
coreclr-44f43e5d4ece85d05376c690263eea05e11e4174.zip
Disable h/w exceptions for coreclr (non-DAC) builds.
Fixes the recursive GC crash. Added FEATURE_ENABLE_HARDWARE_EXCEPTIONS to the PAL sxs exception tests so the h/w exceptions generated by the test dlls are caught. Also added to SOS/strike project. Also fixed sos "clrstack -i". The sos data target needed to implement ICorDebugDataTarget4::VirtualUnwind too.
Diffstat (limited to 'src/pal/inc')
-rw-r--r--src/pal/inc/pal.h8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/pal/inc/pal.h b/src/pal/inc/pal.h
index 0bf1fb6de5..c0c9ba70bc 100644
--- a/src/pal/inc/pal.h
+++ b/src/pal/inc/pal.h
@@ -6744,6 +6744,11 @@ public:
static bool IsEnabled();
};
+//
+// NOTE: Catching hardware exceptions are only enabled in the DAC and SOS
+// builds. A hardware exception in coreclr code will fail fast/terminate
+// the process.
+//
#ifdef FEATURE_ENABLE_HARDWARE_EXCEPTIONS
#define HardwareExceptionHolder CatchHardwareExceptionHolder __catchHardwareException;
#else
@@ -6760,7 +6765,7 @@ extern "C++" {
// filter to be called during the first pass to better emulate SEH
// the xplat platforms that only have C++ exception support.
//
-class NativeExceptionHolderBase : CatchHardwareExceptionHolder
+class NativeExceptionHolderBase
{
// Save the address of the holder head so the destructor
// doesn't have access the slow (on Linux) TLS value again.
@@ -6870,6 +6875,7 @@ public:
}; \
try \
{ \
+ HardwareExceptionHolder \
auto __exceptionHolder = NativeExceptionHolderFactory::CreateHolder(&exceptionFilter); \
__exceptionHolder.Push(); \
tryBlock(__param); \