summaryrefslogtreecommitdiff
path: root/src/vm
diff options
context:
space:
mode:
authorJan Vorlicek <janvorli@microsoft.com>2018-03-28 02:41:47 +0200
committerGitHub <noreply@github.com>2018-03-28 02:41:47 +0200
commit04828cfa37ac56d0244411becec9e32d21b4bd68 (patch)
tree83be6da7199b8b02c25f647e7792e474c053237e /src/vm
parent1cb37045f0b9039f41b56e69e406540063c4b2bf (diff)
downloadcoreclr-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.S8
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