diff options
author | Jonghyun Park <parjong@gmail.com> | 2016-08-30 11:36:51 +0900 |
---|---|---|
committer | Jan Kotas <jkotas@microsoft.com> | 2016-08-29 19:36:51 -0700 |
commit | f4952b4da7e87f825e49907f36f78ceb5cc46e28 (patch) | |
tree | 697ddde1ce30c98158d49dc1ced8718dce82be69 /src/vm/arm/asmhelpers.S | |
parent | 4f60a817e3ea408a176c74ec0f0ea5e9f151dd61 (diff) | |
download | coreclr-f4952b4da7e87f825e49907f36f78ceb5cc46e28.tar.gz coreclr-f4952b4da7e87f825e49907f36f78ceb5cc46e28.tar.bz2 coreclr-f4952b4da7e87f825e49907f36f78ceb5cc46e28.zip |
Revises UMThunkStub unwindable in ARM/Linux (#6788)
In ARM/Linux, UMThunkStub currently pushes r0-r3 and r12 without .pad,
which results in #6787.
This commit revises the prolog and epilog of UMThunkStub to fix 6787.
(In addition, personality routine is addes as ARM64/AMD64 already does.)
Diffstat (limited to 'src/vm/arm/asmhelpers.S')
-rw-r--r-- | src/vm/arm/asmhelpers.S | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/vm/arm/asmhelpers.S b/src/vm/arm/asmhelpers.S index 55bdd9fcba..5717f392b4 100644 --- a/src/vm/arm/asmhelpers.S +++ b/src/vm/arm/asmhelpers.S @@ -309,10 +309,12 @@ LOCAL_LABEL(LNullThis): // // r12 = UMEntryThunk* // - NESTED_ENTRY UMThunkStub,_TEXT,NoHandler + NESTED_ENTRY UMThunkStub,_TEXT,UnhandledExceptionHandlerUnix PROLOG_PUSH "{r4,r5,r7,r11,lr}" - push {r0-r3,r12} - PROLOG_STACK_SAVE_OFFSET r7, #28 + PROLOG_STACK_SAVE_OFFSET r7, #8 + + alloc_stack 4 * 5 + stm sp, {r0-r3,r12} //GBLA UMThunkStub_HiddenArgOffest // offset of saved UMEntryThunk * //GBLA UMThunkStub_StackArgsOffest // offset of original stack args @@ -378,8 +380,7 @@ LOCAL_LABEL(UMThunkStub_PostCall): mov r4, 0 str r4, [r5, #Thread__m_fPreemptiveGCDisabled] - EPILOG_STACK_RESTORE_OFFSET r7, #28 - free_stack 4 * 5 + EPILOG_STACK_RESTORE_OFFSET r7, #8 EPILOG_POP "{r4,r5,r7,r11,pc}" LOCAL_LABEL(UMThunkStub_DoThreadSetup): |