diff options
author | jan Iversen <jani@libreoffice.org> | 2018-03-16 20:29:02 +0100 |
---|---|---|
committer | jan Iversen <jani@libreoffice.org> | 2018-03-16 20:30:33 +0100 |
commit | 8a8663a49b6d2ba297587c730860cc8ca9d139da (patch) | |
tree | 326530f79446a09d7a15973c756bbf50111e757e /bridges/source | |
parent | 5b75a1697250d8b2b6003c37067f39270a5ad828 (diff) |
iOS, solved call stack problem.
Stack was not corrupted, but the call stack was not intact when
passing the assembler code.
Change-Id: If07909dce2b4a73634a130e5f50e84312115b845
Diffstat (limited to 'bridges/source')
-rw-r--r-- | bridges/source/cpp_uno/gcc3_ios/cpp2uno.cxx | 6 | ||||
-rw-r--r-- | bridges/source/cpp_uno/gcc3_ios/ios64_helper.s | 9 |
2 files changed, 9 insertions, 6 deletions
diff --git a/bridges/source/cpp_uno/gcc3_ios/cpp2uno.cxx b/bridges/source/cpp_uno/gcc3_ios/cpp2uno.cxx index 748d276ac21b..9ad3954e4504 100644 --- a/bridges/source/cpp_uno/gcc3_ios/cpp2uno.cxx +++ b/bridges/source/cpp_uno/gcc3_ios/cpp2uno.cxx @@ -418,8 +418,8 @@ namespace * (called by asm snippets) */ -extern "C" sal_Int64 cpp_vtable_call( sal_Int32 func, sal_Int32 offset, - void **pCallStack ) +extern "C" void cpp_vtable_call( sal_Int32 func, sal_Int32 offset, + void **pCallStack ) { sal_Int64 nRegReturn; typelib_TypeClass aType = cpp_mediate( func, offset, pCallStack, &nRegReturn ); @@ -444,8 +444,6 @@ extern "C" sal_Int64 cpp_vtable_call( sal_Int32 func, sal_Int32 offset, default: break; } - - return nRegReturn; } namespace diff --git a/bridges/source/cpp_uno/gcc3_ios/ios64_helper.s b/bridges/source/cpp_uno/gcc3_ios/ios64_helper.s index 67620c38e426..4c09f2b1b2f9 100644 --- a/bridges/source/cpp_uno/gcc3_ios/ios64_helper.s +++ b/bridges/source/cpp_uno/gcc3_ios/ios64_helper.s @@ -199,6 +199,8 @@ _privateSnippetExecutor: .cfi_offset w29, -16 // _privateSnippetExecutor is jumped to from codeSnippet_* + stp x29, x30, [sp, #-0x10]! + mov x29, sp // push all GP, FP/SIMD registers to the stack stp x6, x7, [sp, #-16]! @@ -220,9 +222,12 @@ _privateSnippetExecutor: mov x2, sp bl _cpp_vtable_call - ldp x8, lr, [sp, #0] +// ldp x8, lr, [sp, #0] +// add sp, sp, #144 +// ret lr add sp, sp, #144 - ret lr + ldp x29, x30, [sp], #0x10 + ret .cfi_endproc // vim:set shiftwidth=4 softtabstop=4 expandtab: |