[Libreoffice-commits] core.git: config_host/config_options.h.in config_host.mk.in configure.ac jvmfwk/plugins sal/Library_sal.mk

Stephan Bergmann sbergman at redhat.com
Thu May 8 05:22:36 PDT 2014


 config_host.mk.in                                   |    1 
 config_host/config_options.h.in                     |    3 +
 configure.ac                                        |   33 ++++++++++++++++++++
 jvmfwk/plugins/sunmajor/pluginlib/sunjavaplugin.cxx |   10 ++++--
 sal/Library_sal.mk                                  |    2 -
 5 files changed, 44 insertions(+), 5 deletions(-)

New commits:
commit eae3f52f94f2ce3633539ad782d5c1e768c52089
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Thu May 8 14:20:04 2014 +0200

    New --disable-runtime-optimizations
    
    ...to better serve the needs of tools like -fsanitize=address
    
    Change-Id: Ic2f2b981b2f5c1bc95ff91bc7a8d21fbb695dc8d

diff --git a/config_host.mk.in b/config_host.mk.in
index 6b68d93..ca57978 100644
--- a/config_host.mk.in
+++ b/config_host.mk.in
@@ -159,6 +159,7 @@ export ENABLE_PDFIMPORT=@ENABLE_PDFIMPORT@
 export ENABLE_RANDR=@ENABLE_RANDR@
 export ENABLE_RELEASE_BUILD=@ENABLE_RELEASE_BUILD@
 export ENABLE_REPORTBUILDER=@ENABLE_REPORTBUILDER@
+export ENABLE_RUNTIME_OPTIMIZATIONS=@ENABLE_RUNTIME_OPTIMIZATIONS@
 export ENABLE_SCRIPTING_BEANSHELL=@ENABLE_SCRIPTING_BEANSHELL@
 export ENABLE_SCRIPTING_JAVASCRIPT=@ENABLE_SCRIPTING_JAVASCRIPT@
 export ENABLE_SDREMOTE=@ENABLE_SDREMOTE@
diff --git a/config_host/config_options.h.in b/config_host/config_options.h.in
index 6c882d7..0223f08 100644
--- a/config_host/config_options.h.in
+++ b/config_host/config_options.h.in
@@ -9,7 +9,8 @@
  * Whether we want to link as many object files as possible into one big object.
  * True in case of --enable-lto or --enable-mergelibs.
  */
-
 #define STATIC_LINKING 0
 
+#define ENABLE_RUNTIME_OPTIMIZATIONS 0
+
 #endif
diff --git a/configure.ac b/configure.ac
index 682aee6..4811cd3 100644
--- a/configure.ac
+++ b/configure.ac
@@ -967,6 +967,15 @@ AC_ARG_ENABLE(symbols,
          This enables -g compiler flag for GCC or equivalent,
          without changing anything else compared to productive code.]))
 
+AC_ARG_ENABLE(runtime-optimizations,
+    AS_HELP_STRING([--disable-runtime-optimizations],
+        [Statically disable certain runtime optimizations (like rtl/alloc.h or
+         JVM JIT) that are known to interact badly with certain dynamic analysis
+         tools (like -fsanitize=address or Valgrind).  By default, disabled iff
+         CC contains "-fsanitize=address".  (For Valgrind, those runtime
+         optimizations are typcially disabled dynamically via
+         RUNNING_ON_VALGRIND.)]))
+
 AC_ARG_ENABLE(compiler-plugins,
     AS_HELP_STRING([--enable-compiler-plugins],
         [Enable compiler plugins that will perform additional checks during
@@ -5625,6 +5634,30 @@ AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT4,$SAL_TYPES_ALIGNMENT4)
 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT8,$SAL_TYPES_ALIGNMENT8)
 
 dnl ===================================================================
+dnl Check whether to enable runtime optimizations
+dnl ===================================================================
+ENABLE_RUNTIME_OPTIMIZATIONS=
+AC_MSG_CHECKING([whether to enable runtime optimizations])
+if test -z "$enable_runtime_optimizations"; then
+    for i in $CC; do
+        case $i in
+        -fsanitize=address)
+            enable_runtime_optimizations=no
+            break
+            ;;
+        esac
+    done
+fi
+if test "$enable_runtime_optimizations" != no; then
+    ENABLE_RUNTIME_OPTIMIZATIONS=TRUE
+    AC_DEFINE(ENABLE_RUNTIME_OPTIMIZATIONS)
+    AC_MSG_RESULT([yes])
+else
+    AC_MSG_RESULT([no])
+fi
+AC_SUBST([ENABLE_RUNTIME_OPTIMIZATIONS])
+
+dnl ===================================================================
 dnl Check if valgrind headers are available
 dnl ===================================================================
 ENABLE_VALGRIND=
diff --git a/jvmfwk/plugins/sunmajor/pluginlib/sunjavaplugin.cxx b/jvmfwk/plugins/sunmajor/pluginlib/sunjavaplugin.cxx
index ca816cb..266cdc6 100644
--- a/jvmfwk/plugins/sunmajor/pluginlib/sunjavaplugin.cxx
+++ b/jvmfwk/plugins/sunmajor/pluginlib/sunjavaplugin.cxx
@@ -34,6 +34,7 @@
 #include <string.h>
 
 #include "boost/scoped_array.hpp"
+#include "config_options.h"
 #include "osl/diagnose.h"
 #include "rtl/ustring.hxx"
 #include "rtl/ustrbuf.hxx"
@@ -58,10 +59,13 @@
 #ifdef ANDROID
 #include <osl/detail/android-bootstrap.h>
 #else
-#if defined HAVE_VALGRIND_HEADERS
+#if !ENABLE_RUNTIME_OPTIMIZATIONS
+#define FORCE_INTERPRETED 1
+#elif defined HAVE_VALGRIND_HEADERS
 #include <valgrind/valgrind.h>
+#define FORCE_INTERPRETED RUNNING_ON_VALGRIND
 #else
-#define RUNNING_ON_VALGRIND 0
+#define FORCE_INTERPRETED 0
 #endif
 #endif
 
@@ -627,7 +631,7 @@ javaPluginError jfw_plugin_startJavaVirtualMachine(
 
     // Valgrind typically emits many false errors when executing JIT'ed JVM
     // code, so force the JVM into interpreted mode:
-    bool forceInterpreted = RUNNING_ON_VALGRIND > 0;
+    bool forceInterpreted = FORCE_INTERPRETED > 0;
 
     // Some testing with Java 1.4 showed that JavaVMOption.optionString has to
     // be encoded with the system encoding (i.e., osl_getThreadTextEncoding):
diff --git a/sal/Library_sal.mk b/sal/Library_sal.mk
index d7c28a5..1d88f78 100644
--- a/sal/Library_sal.mk
+++ b/sal/Library_sal.mk
@@ -20,7 +20,7 @@ $(eval $(call gb_Library_set_include,sal,\
 ))
 
 $(eval $(call gb_Library_add_defs,sal,\
-	$(if $(filter $(ALLOC),SYS_ALLOC TCMALLOC JEMALLOC), \
+	$(if $(filter $(ALLOC),SYS_ALLOC TCMALLOC JEMALLOC)$(filter-out X$(ENABLE_RUNTIME_OPTIMIZATIONS),XTRUE), \
 		-DFORCE_SYSALLOC \
 	) \
 	$(if $(filter $(OS),IOS), \


More information about the Libreoffice-commits mailing list