bridges/source/cpp_uno/gcc3_ios/except.cxx           |    8 ++++++--
 bridges/source/cpp_uno/gcc3_linux_aarch64/abi.cxx    |   14 ++++++--------
 bridges/source/cpp_uno/gcc3_macosx_x86-64/except.cxx |    8 ++++----
 3 files changed, 16 insertions(+), 14 deletions(-)

New commits:
commit 96b3de39bc723ffe0beea278e32b9c858873bfc5
Author:     Stephan Bergmann <sberg...@redhat.com>
AuthorDate: Thu Aug 13 08:29:51 2020 +0200
Commit:     Stephan Bergmann <sberg...@redhat.com>
CommitDate: Thu Aug 13 13:41:20 2020 +0200

    Document that the deleteException hack is only relevant for LLVM 5, not 
later
    
    Change-Id: I2d93d3d76f2fe5e24e6864725184519c0595076b
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/100638
    Tested-by: Jenkins
    Reviewed-by: Stephan Bergmann <sberg...@redhat.com>

diff --git a/bridges/source/cpp_uno/gcc3_ios/except.cxx 
b/bridges/source/cpp_uno/gcc3_ios/except.cxx
index 2ef8ef49b966..58f458da34db 100644
--- a/bridges/source/cpp_uno/gcc3_ios/except.cxx
+++ b/bridges/source/cpp_uno/gcc3_ios/except.cxx
@@ -267,10 +267,14 @@ static void deleteException( void * pExc )
     // size 8 in front of that member (changing its offset from 88 to 96,
     // sizeof(__cxa_exception) from 120 to 128, and alignof(__cxa_exception)
     // from 8 to 16); a hack to dynamically determine whether we run against a
-    // new libcxxabi is to look at the exceptionDestructor member, which must
+    // LLVM 5 libcxxabi is to look at the exceptionDestructor member, which 
must
     // point to this function (the use of __cxa_exception in fillUnoException 
is
     // unaffected, as it only accesses members towards the start of the struct,
-    // through a pointer known to actually point at the start):
+    // through a pointer known to actually point at the start).  The libcxxabi 
commit
+    // 
<https://github.com/llvm/llvm-project/commit/9ef1daa46edb80c47d0486148c0afc4e0d83ddcf>
+    // "Insert padding before the __cxa_exception header to ensure the thrown" 
in LLVM 6
+    // removes the need for this hack, so it can be removed again once we can 
be sure that we only
+    // run against libcxxabi from LLVM >= 6:
     if (header->exceptionDestructor != &deleteException) {
         header = reinterpret_cast<__cxa_exception const *>(
             reinterpret_cast<char const *>(header) - 8);
diff --git a/bridges/source/cpp_uno/gcc3_linux_aarch64/abi.cxx 
b/bridges/source/cpp_uno/gcc3_linux_aarch64/abi.cxx
index 7164b4ecb51c..492c14898977 100644
--- a/bridges/source/cpp_uno/gcc3_linux_aarch64/abi.cxx
+++ b/bridges/source/cpp_uno/gcc3_linux_aarch64/abi.cxx
@@ -174,16 +174,14 @@ extern "C" void _GLIBCXX_CDTOR_CALLABI 
deleteException(void * exception) {
     // size 8 in front of that member (changing its offset from 88 to 96,
     // sizeof(__cxa_exception) from 120 to 128, and alignof(__cxa_exception)
     // from 8 to 16); a hack to dynamically determine whether we run against a
-    // new libcxxabi is to look at the exceptionDestructor member, which must
+    // LLVM 5 libcxxabi is to look at the exceptionDestructor member, which 
must
     // point to this function (the use of __cxa_exception in fillUnoException 
is
     // unaffected, as it only accesses members towards the start of the struct,
-    // through a pointer known to actually point at the start):
-
-    // Later, libcxxabi, as used at least on macOS on arm64, added a
-    // void *reserve at the start of the __cxa_exception in front of
-    // the referenceCount. See
-    // 
https://github.com/llvm/llvm-project/commit/674ec1eb16678b8addc02a4b0534ab383d22fa77
-
+    // through a pointer known to actually point at the start).  The libcxxabi 
commit
+    // 
<https://github.com/llvm/llvm-project/commit/9ef1daa46edb80c47d0486148c0afc4e0d83ddcf>
+    // "Insert padding before the __cxa_exception header to ensure the thrown" 
in LLVM 6
+    // removes the need for this hack, so it can be removed again once we can 
be sure that we only
+    // run against libcxxabi from LLVM >= 6:
     if (header->exceptionDestructor != &deleteException) {
         header = reinterpret_cast<__cxxabiv1::__cxa_exception *>(
             reinterpret_cast<char *>(header) - 8);
diff --git a/bridges/source/cpp_uno/gcc3_macosx_x86-64/except.cxx 
b/bridges/source/cpp_uno/gcc3_macosx_x86-64/except.cxx
index e0216ddf3824..60f5f6e40ef1 100644
--- a/bridges/source/cpp_uno/gcc3_macosx_x86-64/except.cxx
+++ b/bridges/source/cpp_uno/gcc3_macosx_x86-64/except.cxx
@@ -271,14 +271,14 @@ static void deleteException( void * pExc )
     // size 8 in front of that member (changing its offset from 88 to 96,
     // sizeof(__cxa_exception) from 120 to 128, and alignof(__cxa_exception)
     // from 8 to 16); a hack to dynamically determine whether we run against a
-    // new libcxxabi is to look at the exceptionDestructor member, which must
+    // LLVM 5 libcxxabi is to look at the exceptionDestructor member, which 
must
     // point to this function (the use of __cxa_exception in fillUnoException 
is
     // unaffected, as it only accesses members towards the start of the struct,
     // through a pointer known to actually point at the start).  The libcxxabi 
commit
-    // 
<https://github.com/llvm/llvm-project/commit/674ec1eb16678b8addc02a4b0534ab383d22fa77>
-    // "[libcxxabi] Insert padding in __cxa_exception struct for 
compatibility" in LLVM 10
+    // 
<https://github.com/llvm/llvm-project/commit/9ef1daa46edb80c47d0486148c0afc4e0d83ddcf>
+    // "Insert padding before the __cxa_exception header to ensure the thrown" 
in LLVM 6
     // removes the need for this hack, so it can be removed again once we can 
be sure that we only
-    // run against libcxxabi from LLVM >= 10:
+    // run against libcxxabi from LLVM >= 6:
     if (header->exceptionDestructor != &deleteException) {
         header = reinterpret_cast<__cxa_exception const *>(
             reinterpret_cast<char const *>(header) - 8);
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to