diff options
author | Jan Vorlicek <janvorli@microsoft.com> | 2018-03-28 02:41:47 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-03-28 02:41:47 +0200 |
commit | 04828cfa37ac56d0244411becec9e32d21b4bd68 (patch) | |
tree | 83be6da7199b8b02c25f647e7792e474c053237e /src/vm | |
parent | 1cb37045f0b9039f41b56e69e406540063c4b2bf (diff) | |
download | coreclr-04828cfa37ac56d0244411becec9e32d21b4bd68.tar.gz coreclr-04828cfa37ac56d0244411becec9e32d21b4bd68.tar.bz2 coreclr-04828cfa37ac56d0244411becec9e32d21b4bd68.zip |
Fix DelayLoad_MethodCall unwinding (#17275)
* Fix DelayLoad_MethodCall unwinding
Unwinding through DelayLoad_MethodCall was broken due to the overwriting
of R7 which is used as a frame pointer. That caused some managed
exceptions to cause abort with unhandled PAL_SEHException.
This change fixes the problem by using a different register.
* Fix one more spot with the same issue
Diffstat (limited to 'src/vm')
-rw-r--r-- | src/vm/arm/asmhelpers.S | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/vm/arm/asmhelpers.S b/src/vm/arm/asmhelpers.S index b7fc652847..952f5c7eba 100644 --- a/src/vm/arm/asmhelpers.S +++ b/src/vm/arm/asmhelpers.S @@ -1423,7 +1423,7 @@ DelayLoad_MethodCall: // Load the helper arguments ldr r5, [sp,#(__PWTB_TransitionBlock+10*4)] // pModule ldr r6, [sp,#(__PWTB_TransitionBlock+11*4)] // sectionIndex - ldr r7, [sp,#(__PWTB_TransitionBlock+12*4)] // indirection + ldr r8, [sp,#(__PWTB_TransitionBlock+12*4)] // indirection // Spill the actual method arguments str r1, [sp,#(__PWTB_TransitionBlock+10*4)] @@ -1432,7 +1432,7 @@ DelayLoad_MethodCall: add r0, sp, #__PWTB_TransitionBlock // pTransitionBlock - mov r1, r7 // pIndirection + mov r1, r8 // pIndirection mov r2, r6 // sectionIndex mov r3, r5 // pModule @@ -1467,7 +1467,7 @@ DelayLoad_Helper\suffix: // Load the helper arguments ldr r5, [sp,#(__PWTB_TransitionBlock+10*4)] // pModule ldr r6, [sp,#(__PWTB_TransitionBlock+11*4)] // sectionIndex - ldr r7, [sp,#(__PWTB_TransitionBlock+12*4)] // indirection + ldr r8, [sp,#(__PWTB_TransitionBlock+12*4)] // indirection // Spill the actual method arguments str r1, [sp,#(__PWTB_TransitionBlock+10*4)] @@ -1476,7 +1476,7 @@ DelayLoad_Helper\suffix: add r0, sp, #__PWTB_TransitionBlock // pTransitionBlock - mov r1, r7 // pIndirection + mov r1, r8 // pIndirection mov r2, r6 // sectionIndex mov r3, r5 // pModule |