[Libreoffice-commits] core.git: 3 commits - bridges/source configure.ac external/nss
Stephan Bergmann
sbergman at redhat.com
Fri Feb 14 15:12:20 CET 2014
bridges/source/cpp_uno/gcc3_linux_intel/except.cxx | 9 ---
bridges/source/cpp_uno/gcc3_linux_intel/share.hxx | 50 ++++++++++++++------
bridges/source/cpp_uno/gcc3_linux_intel/uno2cpp.cxx | 7 ++
configure.ac | 8 +++
external/nss/UnpackedTarball_nss.mk | 1
external/nss/nss-linux-x86.patch.0 | 10 ++++
6 files changed, 61 insertions(+), 24 deletions(-)
New commits:
commit bfd6428fff6e9cbd2e1bfde76a237bd438a8c9a6
Author: Stephan Bergmann <sbergman at redhat.com>
Date: Fri Feb 14 15:10:32 2014 +0100
Hack for mysql_config under linux32
Change-Id: I3a6b4aae36df7e23c05da9fd27b0588a6228b92b
diff --git a/configure.ac b/configure.ac
index 39cd009..4f71d15 100644
--- a/configure.ac
+++ b/configure.ac
@@ -8056,6 +8056,14 @@ if test "$ENABLE_MARIADBC" = "TRUE"; then
MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-fstack-protector-strong//)
fi
MARIADB_LIBS=`$MARIADBCONFIG --libs_r`
+ dnl At least mariadb-5.5.34-3.fc20.x86_64 plus
+ dnl mariadb-5.5.34-3.fc20.i686 reports 64-bit specific output even under
+ dnl linux32:
+ if test "$OS" = LINUX -a "$CPUNAME" = INTEL; then
+ MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-m64//)
+ MARIADB_LIBS=$(printf '%s' "$MARIADB_LIBS" \
+ | sed -e 's|/lib64/|/lib/|')
+ fi
AC_MSG_RESULT([includes '$MARIADB_CFLAGS', libraries '$MARIADB_LIBS'])
AC_MSG_CHECKING([whether to bundle the MySQL/MariaDB client library])
if test "$enable_bundle_mariadb" = "yes"; then
commit 7273e371bec8042699d27f3ada83f1f50073ac15
Author: Stephan Bergmann <sbergman at redhat.com>
Date: Fri Feb 14 15:06:49 2014 +0100
Linux x86 nss/lib/freebl/mpi/mpi_x86.s confusion of mp_digit size
see <https://groups.google.com/forum/#!topic/mozilla.dev.security/n16bQj4qZHc>
Change-Id: I6635d187b29d6b50fbccaf3f4c29d72660fcaa5e
diff --git a/external/nss/UnpackedTarball_nss.mk b/external/nss/UnpackedTarball_nss.mk
index 15a02d2..17eb436 100644
--- a/external/nss/UnpackedTarball_nss.mk
+++ b/external/nss/UnpackedTarball_nss.mk
@@ -16,6 +16,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,nss,\
external/nss/nss.aix.patch \
external/nss/nss-3.13.5-zlib-werror.patch \
external/nss/nss_macosx.patch \
+ external/nss/nss-linux-x86.patch.0 \
$(if $(filter WNTMSC,$(OS)$(COM)),external/nss/nss.windows.patch) \
$(if $(filter WNTGCC,$(OS)$(COM)),external/nss/nspr-4.9-build.patch.3 \
external/nss/nss-3.13.3-build.patch.3 \
diff --git a/external/nss/nss-linux-x86.patch.0 b/external/nss/nss-linux-x86.patch.0
new file mode 100644
index 0000000..e23a786
--- /dev/null
+++ b/external/nss/nss-linux-x86.patch.0
@@ -0,0 +1,10 @@
+--- nss/lib/freebl/Makefile
++++ nss/lib/freebl/Makefile
+@@ -195,6 +195,7 @@
+ ifeq ($(CPU_ARCH),x86)
+ ASFILES = mpi_x86.s
+ DEFINES += -DMP_ASSEMBLY_MULTIPLY -DMP_ASSEMBLY_SQUARE
++ DEFINES += -DMP_USE_UINT_DIGIT
+ DEFINES += -DMP_ASSEMBLY_DIV_2DX1D
+ DEFINES += -DMP_CHAR_STORE_SLOW -DMP_IS_LITTLE_ENDIAN
+ # The floating point ECC code doesn't work on Linux x86 (bug 311432).
commit 9dc337e9d073352cd9c9018d30b40bd4dcd5b1cb
Author: Stephan Bergmann <sbergman at redhat.com>
Date: Fri Feb 14 15:04:50 2014 +0100
Adapt gcc3_linux_intel to Clang 3.4
...same as 5ba3d1740b03efa394b2d2bf34fb8a8d3db2331d "Clean up declaration of
__cxa_get_globals" plus c17f01753ce94e9f57d6e4a2763152240fbcd50a "...and
similarly for __cxa_allocate_exception and __cxa_throw."
Change-Id: I02361cfca260577ce13fb634b5637938daf0283d
diff --git a/bridges/source/cpp_uno/gcc3_linux_intel/except.cxx b/bridges/source/cpp_uno/gcc3_linux_intel/except.cxx
index ee26ba0..f9397a9 100644
--- a/bridges/source/cpp_uno/gcc3_linux_intel/except.cxx
+++ b/bridges/source/cpp_uno/gcc3_linux_intel/except.cxx
@@ -22,11 +22,6 @@
#include <dlfcn.h>
#include <boost/unordered_map.hpp>
-#include <cxxabi.h>
-#ifndef _GLIBCXX_CDTOR_CALLABI // new in GCC 4.7 cxxabi.h
-#define _GLIBCXX_CDTOR_CALLABI
-#endif
-
#include <rtl/strbuf.hxx>
#include <rtl/ustrbuf.hxx>
#include <osl/diagnose.h>
@@ -248,7 +243,7 @@ void raiseException( uno_Any * pUnoExc, uno_Mapping * pUno2Cpp )
Reference< XInterface >() );
}
- pCppExc = __cxa_allocate_exception( pTypeDescr->nSize );
+ pCppExc = __cxxabiv1::__cxa_allocate_exception( pTypeDescr->nSize );
::uno_copyAndConvertData( pCppExc, pUnoExc->pData, pTypeDescr, pUno2Cpp );
// destruct uno exception
@@ -280,7 +275,7 @@ void raiseException( uno_Any * pUnoExc, uno_Mapping * pUno2Cpp )
}
}
- __cxa_throw( pCppExc, rtti, deleteException );
+ __cxxabiv1::__cxa_throw( pCppExc, rtti, deleteException );
}
//==================================================================================================
diff --git a/bridges/source/cpp_uno/gcc3_linux_intel/share.hxx b/bridges/source/cpp_uno/gcc3_linux_intel/share.hxx
index e37df21..4077d57 100644
--- a/bridges/source/cpp_uno/gcc3_linux_intel/share.hxx
+++ b/bridges/source/cpp_uno/gcc3_linux_intel/share.hxx
@@ -17,13 +17,20 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-#include "uno/mapping.h"
+#include "sal/config.h"
#include <typeinfo>
#include <exception>
#include <cstddef>
+#include <cxxabi.h>
+#ifndef _GLIBCXX_CDTOR_CALLABI // new in GCC 4.7 cxxabi.h
+#define _GLIBCXX_CDTOR_CALLABI
+#endif
+
+#include "config_gcc.h"
#include <uno/any2.h>
+#include "uno/mapping.h"
namespace CPPU_CURRENT_NAMESPACE
{
@@ -69,24 +76,37 @@ struct __cxa_eh_globals
}
-extern "C" CPPU_CURRENT_NAMESPACE::__cxa_eh_globals *__cxa_get_globals () throw();
+// __cxa_get_globals is exported from libstdc++ since GCC 3.4.0 (CXXABI_1.3),
+// but it is only declared in cxxabi.h (in namespace __cxxabiv1) since
+// GCC 4.7.0. It returns a pointer to a struct __cxa_eh_globals, but that
+// struct is only incompletely declared even in the GCC 4.7.0 cxxabi.h.
+// Therefore, provide a declaration here for old GCC (libstdc++, really) version
+// that returns a void pointer, and in the code calling it always cast to the
+// above fake definition of CPPU_CURRENT_NAMESPACE::__cxa_eh_globals (which
+// hopefully keeps matching the real definition in libstdc++); similarly for
+// __cxa_allocate_exception and __cxa_throw, though they do not have the
+// additional problem of an incompletely declared return type:
+
+#if !HAVE_GCC_CXXABI_H_CXA_GET_GLOBALS
+namespace __cxxabiv1 { extern "C" void * __cxa_get_globals() throw(); }
+#endif
-namespace CPPU_CURRENT_NAMESPACE
-{
+#if !HAVE_GCC_CXXABI_H_CXA_ALLOCATE_EXCEPTION
+namespace __cxxabiv1 {
+extern "C" void * __cxa_allocate_exception(std::size_t thrown_size) throw();
+}
+#endif
-// The following are in cxxabi.h since GCC 4.7 (they are wrapped in
-// CPPU_CURRENT_NAMESPACE here as different GCC versions have slightly different
-// declarations for them, e.g., with or without throw() specification, so would
-// complain about redeclarations of these somewhat implicitly declared
-// functions):
-#if __GNUC__ == 4 && __GNUC_MINOR__ <= 6
-extern "C" void *__cxa_allocate_exception(
- std::size_t thrown_size ) throw();
-extern "C" void __cxa_throw (
- void *thrown_exception, void *tinfo, void (*dest) (void *) ) __attribute__((noreturn));
+#if !HAVE_GCC_CXXABI_H_CXA_THROW
+namespace __cxxabiv1 {
+extern "C" void __cxa_throw(
+ void * thrown_exception, void * tinfo, void (* dest)(void *))
+ __attribute__((noreturn));
+}
#endif
-// -----
+namespace CPPU_CURRENT_NAMESPACE
+{
//==================================================================================================
void raiseException(
diff --git a/bridges/source/cpp_uno/gcc3_linux_intel/uno2cpp.cxx b/bridges/source/cpp_uno/gcc3_linux_intel/uno2cpp.cxx
index 37605ca..ab95916 100644
--- a/bridges/source/cpp_uno/gcc3_linux_intel/uno2cpp.cxx
+++ b/bridges/source/cpp_uno/gcc3_linux_intel/uno2cpp.cxx
@@ -202,8 +202,11 @@ static void cpp_call(
}
catch (...)
{
- // fill uno exception
- fillUnoException( __cxa_get_globals()->caughtExceptions, *ppUnoExc, pThis->getBridge()->getCpp2Uno() );
+ // fill uno exception
+ fillUnoException(
+ reinterpret_cast< CPPU_CURRENT_NAMESPACE::__cxa_eh_globals * >(
+ __cxxabiv1::__cxa_get_globals())->caughtExceptions,
+ *ppUnoExc, pThis->getBridge()->getCpp2Uno());
// temporary params
for ( ; nTempIndices--; )
More information about the Libreoffice-commits
mailing list