summaryrefslogtreecommitdiff
path: root/bridges
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2014-08-22 12:07:33 +0100
committerCaolán McNamara <caolanm@redhat.com>2014-08-22 12:10:42 +0100
commit6396e18f4d49c24283b170310a1892db40c128d3 (patch)
tree365693d100c892a81f58955102f1f50063f78a41 /bridges
parent75aad687cb5e63a41303aea568bf68b2b5f15d31 (diff)
Related: rhbz#1125588 force existence of argument save area
ELFv2 ABI on ppc64 optimises stack allocation (http://gcc.gnu.org/ml/gcc-patches/2013-11/msg01149.html so we're getting no argument save area This now appears to pass the simple cases and onwards to the tricky ones Change-Id: Ie56d148ebea7fcfc023cb7183bc97f09186e66b4
Diffstat (limited to 'bridges')
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_powerpc64/uno2cpp.cxx4
1 files changed, 4 insertions, 0 deletions
diff --git a/bridges/source/cpp_uno/gcc3_linux_powerpc64/uno2cpp.cxx b/bridges/source/cpp_uno/gcc3_linux_powerpc64/uno2cpp.cxx
index c047ebfc7f1c..33131ea78799 100644
--- a/bridges/source/cpp_uno/gcc3_linux_powerpc64/uno2cpp.cxx
+++ b/bridges/source/cpp_uno/gcc3_linux_powerpc64/uno2cpp.cxx
@@ -114,7 +114,11 @@ static void callVirtualMethod(void * pThis, sal_uInt32 nVtableIndex,
pMethod += 8 * nVtableIndex;
pMethod = *((sal_uInt64 *)pMethod);
+#if _CALL_ELF == 2
+ typedef void (* FunctionCall )(...);
+#else
typedef void (* FunctionCall )( sal_uInt64, sal_uInt64, sal_uInt64, sal_uInt64, sal_uInt64, sal_uInt64, sal_uInt64, sal_uInt64 );
+#endif
FunctionCall pFunc = (FunctionCall)pMethod;
volatile double dret;