This is an automated email from the ASF dual-hosted git repository. jim pushed a commit to branch AOO42X in repository https://gitbox.apache.org/repos/asf/openoffice.git
The following commit(s) were added to refs/heads/AOO42X by this push: new 5212c07 Pull in some hints from FreeBSD, clang-wise. new 29e330b Merge branch 'AOO42X' of https://gitbox.apache.org/repos/asf/openoffice into AOO42X 5212c07 is described below commit 5212c076c3f52ea325e96b3a3a1ea406af69eb2b Author: Jim Jagielski <jim...@gmail.com> AuthorDate: Thu Dec 10 16:45:19 2020 -0500 Pull in some hints from FreeBSD, clang-wise. --- .../source/cpp_uno/gcc3_macosx_x86-64/abi.cxx | 2 +- .../source/cpp_uno/gcc3_macosx_x86-64/cpp2uno.cxx | 16 ++++++++-------- .../source/cpp_uno/gcc3_macosx_x86-64/except.cxx | 6 ++---- .../source/cpp_uno/gcc3_macosx_x86-64/share.hxx | 21 +++++++++++++++------ 4 files changed, 26 insertions(+), 19 deletions(-) diff --git a/main/bridges/source/cpp_uno/gcc3_macosx_x86-64/abi.cxx b/main/bridges/source/cpp_uno/gcc3_macosx_x86-64/abi.cxx index 201b119..877eac2 100644 --- a/main/bridges/source/cpp_uno/gcc3_macosx_x86-64/abi.cxx +++ b/main/bridges/source/cpp_uno/gcc3_macosx_x86-64/abi.cxx @@ -324,7 +324,7 @@ void x86_64::fill_struct( typelib_TypeDescriptionReference *pTypeRef, const sal_ n = classify_argument( pTypeRef, classes, 0 ); - sal_uInt64 *pStructAlign = reinterpret_cast<sal_uInt64 *>( pStruct ); + sal_uInt64 *pStructAlign = static_cast<sal_uInt64 *>( pStruct ); for ( n--; n >= 0; n-- ) switch ( classes[n] ) { diff --git a/main/bridges/source/cpp_uno/gcc3_macosx_x86-64/cpp2uno.cxx b/main/bridges/source/cpp_uno/gcc3_macosx_x86-64/cpp2uno.cxx index 00f7085..5a8dc9a 100644 --- a/main/bridges/source/cpp_uno/gcc3_macosx_x86-64/cpp2uno.cxx +++ b/main/bridges/source/cpp_uno/gcc3_macosx_x86-64/cpp2uno.cxx @@ -102,12 +102,12 @@ static typelib_TypeClass cpp2uno_call( // stack space // parameters - void ** pUnoArgs = (void **)alloca( 4 * sizeof(void *) * nParams ); + void ** pUnoArgs = static_cast<void **>(alloca( 4 * sizeof(void *) * nParams )); void ** pCppArgs = pUnoArgs + nParams; // indizes of values this have to be converted (interface conversion cpp<=>uno) - sal_Int32 * pTempIndizes = (sal_Int32 *)(pUnoArgs + (2 * nParams)); + sal_Int32 * pTempIndizes = reinterpret_cast<sal_Int32 *>(pUnoArgs + (2 * nParams)); // type descriptions for reconversions - typelib_TypeDescription ** ppTempParamTypeDescr = (typelib_TypeDescription **)(pUnoArgs + (3 * nParams)); + typelib_TypeDescription ** ppTempParamTypeDescr = reinterpret_cast<typelib_TypeDescription **>(pUnoArgs + (3 * nParams)); sal_Int32 nTempIndizes = 0; @@ -241,7 +241,7 @@ static typelib_TypeClass cpp2uno_call( uno_destructData( pUnoReturn, pReturnTypeDescr, 0 ); } // complex return ptr is set to return reg - *(void **)pRegisterReturn = pCppReturn; + *reinterpret_cast<void **>(pRegisterReturn) = pCppReturn; } if ( pReturnTypeDescr ) { @@ -340,19 +340,19 @@ extern "C" typelib_TypeClass cpp_vtable_call( case 0: // queryInterface() opt { typelib_TypeDescription * pTD = 0; - TYPELIB_DANGER_GET( &pTD, reinterpret_cast<Type *>( gpreg[2] )->getTypeLibType() ); + TYPELIB_DANGER_GET( &pTD, static_cast<Type *>( gpreg[2] )->getTypeLibType() ); if ( pTD ) { XInterface * pInterface = 0; (*pCppI->getBridge()->getCppEnv()->getRegisteredInterface) ( pCppI->getBridge()->getCppEnv(), - (void **)&pInterface, + reinterpret_cast<void **>(&pInterface), pCppI->getOid().pData, reinterpret_cast<typelib_InterfaceTypeDescription *>( pTD ) ); if ( pInterface ) { - ::uno_any_construct( reinterpret_cast<uno_Any *>( gpreg[0] ), + ::uno_any_construct( static_cast<uno_Any *>( gpreg[0] ), &pInterface, pTD, cpp_acquire ); pInterface->release(); @@ -455,7 +455,7 @@ unsigned char * codeSnippet( unsigned char * code, sal_Int32 nFunctionIndex, sal_Int32 nVtableOffset, bool bHasHiddenParam ) SAL_THROW( () ) { - sal_uInt64 nOffsetAndIndex = ( ( (sal_uInt64) nVtableOffset ) << 32 ) | ( (sal_uInt64) nFunctionIndex ); + sal_uInt64 nOffsetAndIndex = ( static_cast<sal_uInt64>( nVtableOffset ) << 32 ) | static_cast<sal_uInt64>( nFunctionIndex ); if ( bHasHiddenParam ) nOffsetAndIndex |= 0x80000000; diff --git a/main/bridges/source/cpp_uno/gcc3_macosx_x86-64/except.cxx b/main/bridges/source/cpp_uno/gcc3_macosx_x86-64/except.cxx index 317e14a..bf62e2f 100644 --- a/main/bridges/source/cpp_uno/gcc3_macosx_x86-64/except.cxx +++ b/main/bridges/source/cpp_uno/gcc3_macosx_x86-64/except.cxx @@ -156,7 +156,7 @@ type_info * RTTI::getRTTI( typelib_CompoundTypeDescription *pTypeDescr ) SAL_THR buf.append( 'E' ); OString symName( buf.makeStringAndClear() ); - rtti = (type_info *)dlsym( m_hApp, symName.getStr() ); + rtti = static_cast<std::type_info *>(dlsym( m_hApp, symName.getStr() )); if (rtti) { @@ -214,9 +214,7 @@ type_info * RTTI::getRTTI( typelib_CompoundTypeDescription *pTypeDescr ) SAL_THR //-------------------------------------------------------------------------------------------------- static void deleteException( void * pExc ) { - __cxa_exception const * header = ((__cxa_exception const *)pExc - 1); - if( !header->exceptionType) // TODO: remove this when getRTTI() always returns non-NULL - return; // NOTE: leak for now + __cxa_exception const * header = static_cast<__cxa_exception const *>(pExc) - 1; typelib_TypeDescription * pTD = 0; OUString unoName( toUNOname( header->exceptionType->name() ) ); ::typelib_typedescription_getByName( &pTD, unoName.pData ); diff --git a/main/bridges/source/cpp_uno/gcc3_macosx_x86-64/share.hxx b/main/bridges/source/cpp_uno/gcc3_macosx_x86-64/share.hxx index 4fe21da..c248532 100644 --- a/main/bridges/source/cpp_uno/gcc3_macosx_x86-64/share.hxx +++ b/main/bridges/source/cpp_uno/gcc3_macosx_x86-64/share.hxx @@ -32,19 +32,28 @@ namespace CPPU_CURRENT_NAMESPACE void dummy_can_throw_anything( char const * ); +typedef unsigned _Unwind_Ptr __attribute__((__mode__(__pointer__))); + // ----- the following structure is compatible with the one declared in libunwind's unwind.h +// (use forced types) struct _Unwind_Exception { - unsigned exception_class __attribute__((__mode__(__DI__))); + uint64_t exception_class; void * exception_cleanup; - unsigned private_1 __attribute__((__mode__(__word__))); - unsigned private_2 __attribute__((__mode__(__word__))); -} __attribute__((__aligned__)); + uintptr_t private_1; + uintptr_t private_2; +}; struct __cxa_exception -{ -#if __LP64__ // ----- from libcxxabi/src/cxa_exception.hpp +{ +#if __LP64__ +#if ( COM = CLANG ) && ( CCNUMVER >= 1000000000 ) + // From LLVM 10 - Added reserved member at top of struct. Who the hell does that? + // https://reviews.llvm.org/rG674ec1eb16678b8addc02a4b0534ab383d22fa77 + void *dummy; +#endif + // ----- from libcxxabi/src/cxa_exception.hpp // This is a new field to support C++ 0x exception_ptr. // For binary compatibility it is at the start of this // struct which is prepended to the object thrown in