bridges: add a Windows Arm64 UNO bridge

Desktop / LibreOffice - Jan-Marek Glogowski [fbihome.de] - 30 September 2020 01:08 UTC

Since Microsoft follows the general ARM64 ABI calling conventions, and the SEH exception handling is the same, this result is a mixed port of the gcc3_linux_aarch64 bridge and the refactored x86-64 exception handling.

I have no idea, if the complicated 32-bit handling in RaiseInfo() is needed, as the ARM64 trampolines definitly use 64-bit code. But since this is the first working version, I currently don't mind much ;-)

There is definitly more potential for refactoring in the whole bridges directory...

Change-Id: I9782a2e99c0231cdd1286af156ad312229eccf39 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103642

03aacdb73d2f bridges: add a Windows Arm64 UNO bridge
Repository.mk | 4 +-
bridges/Library_cpp_uno.mk | 7 +
bridges/inc/msvc/arm64.hxx | 59 +++
bridges/inc/msvc/except.hxx | 6 +-
bridges/source/cpp_uno/msvc_shared/except.cxx | 4 +-
bridges/source/cpp_uno/msvc_win32_arm64/abi.cxx | 158 ++++++++
bridges/source/cpp_uno/msvc_win32_arm64/abi.hxx | 34 ++
.../cpp_uno/msvc_win32_arm64/callvirtualfunction.S | 72 ++++
.../source/cpp_uno/msvc_win32_arm64/cpp2uno.cxx | 432 +++++++++++++++++++++
bridges/source/cpp_uno/msvc_win32_arm64/except.cxx | 234 +++++++++++
.../source/cpp_uno/msvc_win32_arm64/uno2cpp.cxx | 341 ++++++++++++++++
.../cpp_uno/msvc_win32_arm64/vtableslotcall.S | 72 ++++
solenv/gbuild/platform/com_MSC_class.mk | 16 +
13 files changed, 1433 insertions(+), 6 deletions(-)

Upstream: cgit.freedesktop.org


  • Share