summaryrefslogtreecommitdiff
path: root/src/pal/src/exception/seh-unwind.cpp
diff options
context:
space:
mode:
authorGeoff Norton <grompf@gmail.com>2015-02-17 12:50:09 -0800
committerGeoff Norton <grompf@gmail.com>2015-02-17 12:50:09 -0800
commit93e6d80704cfe274a38a2c4cd26e14cb823f7236 (patch)
tree146dd9413ba740d7c47b46f847e7322ec671b67a /src/pal/src/exception/seh-unwind.cpp
parent551c97656c6a5a08c22ff614e81423170ab08ee5 (diff)
parent2ae979db2206f49fef92e83af3571f6901dc5bff (diff)
downloadcoreclr-93e6d80704cfe274a38a2c4cd26e14cb823f7236.tar.gz
coreclr-93e6d80704cfe274a38a2c4cd26e14cb823f7236.tar.bz2
coreclr-93e6d80704cfe274a38a2c4cd26e14cb823f7236.zip
Merge branch 'master' into unix_issue177
Conflicts: src/pal/src/config.h.linux src/pal/src/config.h.osx src/pal/src/exception/seh-unwind.cpp
Diffstat (limited to 'src/pal/src/exception/seh-unwind.cpp')
-rw-r--r--src/pal/src/exception/seh-unwind.cpp33
1 files changed, 3 insertions, 30 deletions
diff --git a/src/pal/src/exception/seh-unwind.cpp b/src/pal/src/exception/seh-unwind.cpp
index 24ae3c550f..94d9c3be16 100644
--- a/src/pal/src/exception/seh-unwind.cpp
+++ b/src/pal/src/exception/seh-unwind.cpp
@@ -215,15 +215,6 @@ void DisplayContext(_Unwind_Context *context)
fprintf(stderr, " cfa=%p", _Unwind_GetCFA(context));
#if defined(_X86_)
// TODO: display more registers
-#elif defined(_PPC_)
- fprintf(stderr, " ra =0x%p", _Unwind_GetGR(context, 0x41));
- fprintf(stderr, " r11=0x%p\n", _Unwind_GetGR(context, 0x46));
- for (int i = 13; i < 32; i++)
- {
- fprintf(stderr, " r%02d=0x%p", i, _Unwind_GetGR(context, i));
- if ((i - 13) % 4 == 3)
- fprintf(stderr, "\n");
- }
#endif
fprintf(stderr, "\n");
}
@@ -512,9 +503,7 @@ static void RtlpRaiseException(EXCEPTION_RECORD *ExceptionRecord)
// The frame we're looking at now is either RaiseException or PAL_TryExcept.
// If it's RaiseException, we have to unwind one level further to get the
// actual context user code could be resumed at.
-#if defined(_PPC_)
- void *pc = (void *) ContextRecord.Iar;
-#elif defined(_X86_)
+#if defined(_X86_)
void *pc = (void *) ContextRecord.Eip;
#elif defined(_AMD64_)
void *pc = (void *) ContextRecord.Rip;
@@ -854,10 +843,7 @@ _Unwind_Reason_Code PAL_SEHPersonalityRoutine(
// Obtain the filter and parameter from the original frame.
PFN_PAL_EXCEPTION_FILTER pfnFilter;
void *pvParam;
-#if defined(_PPC_)
- pfnFilter = (PFN_PAL_EXCEPTION_FILTER) _Unwind_GetGR(context, 28);
- pvParam = _Unwind_GetGR(context, 29);
-#elif defined(_X86_)
+#if defined(_X86_)
pfnFilter = ((PFN_PAL_EXCEPTION_FILTER *) _Unwind_GetGR(context, 4))[3]; // [ebp+12]
pvParam = ((void **) _Unwind_GetGR(context, 4))[4]; // [ebp+16]
#elif defined(_AMD64_)
@@ -1072,9 +1058,7 @@ _Unwind_Reason_Code PAL_SEHFilterPersonalityRoutine(
// Retrieve the dispatcher context of the outer _Unwind_RaiseException.
PAL_DISPATCHER_CONTEXT *outerDispatcherContext;
-#if defined(_PPC_)
- outerDispatcherContext = (PAL_DISPATCHER_CONTEXT *) _Unwind_GetGR(context, 29);
-#elif defined(_X86_)
+#if defined(_X86_)
outerDispatcherContext = (PAL_DISPATCHER_CONTEXT *) ((void **) _Unwind_GetGR(context, 4))[3]; // [ebp+12]
#elif defined(_AMD64_)
// Filter address is stored at RSP+8
@@ -1123,14 +1107,3 @@ _Unwind_Reason_Code PAL_SEHFilterPersonalityRoutine(
return _URC_CONTINUE_UNWIND;
}
}
-
-#ifdef _PPC_
-// This function does not do anything. It ist just here to be called by
-// PAL_TRY, so we can avoid the body of PAL_TRY being translated by the
-// compiler into a leaf function (i.e., one that does not set up its
-// own frame), because on a hardware fault in a leaf function, we would
-// get a stack that would not be unwindable.
-EXTERN_C VOID PALAPI PAL_DummyCall()
-{
-}
-#endif // _PPC_