summaryrefslogtreecommitdiff
path: root/bridges/source
diff options
context:
space:
mode:
authorjan Iversen <jani@libreoffice.org>2018-03-16 20:29:02 +0100
committerjan Iversen <jani@libreoffice.org>2018-03-16 20:30:33 +0100
commit8a8663a49b6d2ba297587c730860cc8ca9d139da (patch)
tree326530f79446a09d7a15973c756bbf50111e757e /bridges/source
parent5b75a1697250d8b2b6003c37067f39270a5ad828 (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.cxx6
-rw-r--r--bridges/source/cpp_uno/gcc3_ios/ios64_helper.s9
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: