Files
loongoffice/bridges
Stephan Bergmann ae6ee262d7 Some fixing of msvc_win32_arm64 UNO bridge
For one, the Windows ABI deviates from the generic aarch64 ABI regarding
returning class instances by value from non-static member functions, see
<https://learn.microsoft.com/en-us/cpp/build/arm64-windows-abi-conventions?view=msvc-170#return-values>:
"The caller shall reserve a block of memory of sufficient size and alignment to
hold the result.  The address of the memory block shall be passed as an
additional argument to the function in x0, or x1 if $this is passed in x0.  The
callee may modify the result memory block at any point during the execution of
the subroutine.  The callee returns the address of the memory block in x0."
That means RETURN_KIND_HFA_FLOAT and RETURN_KIND_HFA_DOUBLE are not needed, and
can be cleaned up in a follow-up commit.

And for another, setting up a call stack frame in call() in uno2cpp.cxx for
callVirtualFunction() didn't actually work, so go with a slightly less ambitious
aproach (as also used by the gcc_linux_aarch64 bridge) and explicitly copy the
arguments that end up on the stack around in callVirtualFunction().

This allows CustomTarget_testtools/uno_test to proceed at least as far as the
call of getRaiseAttr1(), which still leads to an uncaught
css::uno::RuntimeException.

Change-Id: I4a8ec09c270864ac4de246d7e8d1f923198236b1
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166585
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
2024-04-24 19:03:19 +02:00
..

UNO Bridges

Bridges from various C++ ABIs, Java JNI, MS .NET to UNO and back. A bridge for .NET is in cli_ure.

Also implementation of the UNO Remote Protocol.