bridges/source/cpp_uno/msvc_win32_arm64/callvirtualfunction.S |    9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

New commits:
commit e5199109d558899afc0d9e21a364c8afd6ca0ac6
Author:     Stephan Bergmann <stephan.bergm...@allotropia.de>
AuthorDate: Thu Apr 25 09:48:40 2024 +0200
Commit:     Balazs Varga <balazs.varga.ext...@allotropia.de>
CommitDate: Wed Oct 2 19:20:02 2024 +0200

    Add back the callVirtualFunction_fake boilerplate
    
    ...that ae6ee262d7649222a137f8722886a10db274ddf5 "Some fixing of
    msvc_win32_arm64 UNO bridge" had removed, assuming it wasn't actually 
necessary.
    But looks like Windows exception handling stack unwinding somehow needs it 
after
    all.  Getting past the CustomTarget_testtools/uno_test getRaiseAttr1() call 
now
    (but still failing at some later place).
    
    Change-Id: I1e84345f2f355ab1e480c779da6b221b744132b3
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166616
    Reviewed-by: Stephan Bergmann <stephan.bergm...@allotropia.de>
    Tested-by: Jenkins
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174221
    Tested-by: Balazs Varga <balazs.varga.ext...@allotropia.de>
    Reviewed-by: Balazs Varga <balazs.varga.ext...@allotropia.de>

diff --git a/bridges/source/cpp_uno/msvc_win32_arm64/callvirtualfunction.S 
b/bridges/source/cpp_uno/msvc_win32_arm64/callvirtualfunction.S
index 546c02cf5040..55fd3f95ff85 100644
--- a/bridges/source/cpp_uno/msvc_win32_arm64/callvirtualfunction.S
+++ b/bridges/source/cpp_uno/msvc_win32_arm64/callvirtualfunction.S
@@ -25,7 +25,12 @@
    x3 function
 */
 
-    NESTED_ENTRY callVirtualFunction
+    NESTED_ENTRY callVirtualFunction_fake
+
+        // for unwind information, Windows has to store fp and lr
+        PROLOG_SAVE_REG_PAIR   x29, x30, #-32!
+
+        ALTERNATE_ENTRY callVirtualFunction
 
         sub   sp, sp, #32
         stp   fp, lr, [sp]
@@ -75,7 +80,7 @@ done
         ldp   fp, lr, [sp, #-32]
         ret
 
-        NESTED_END callVirtualFunction
+        NESTED_END callVirtualFunction_fake
 
     END
 

Reply via email to