[Libreoffice-commits] core.git: external/libabw external/libcdr external/libebook external/libmspub external/libmwaw external/libodfgen external/libpagemaker external/librevenge external/libvisio solenv/gbuild

Stephan Bergmann sbergman at redhat.com
Fri Feb 27 01:13:32 PST 2015


 external/libabw/UnpackedTarball_libabw.mk             |   10 ++++++++++
 external/libabw/ubsan-visibility.patch                |   11 +++++++++++
 external/libcdr/UnpackedTarball_libcdr.mk             |   10 ++++++++++
 external/libcdr/ubsan-visibility.patch                |   11 +++++++++++
 external/libebook/UnpackedTarball_libebook.mk         |    8 ++++++++
 external/libebook/ubsan-visibility.patch              |   11 +++++++++++
 external/libmspub/UnpackedTarball_libmspub.mk         |    8 ++++++++
 external/libmspub/ubsan-visibility.patch              |   11 +++++++++++
 external/libmwaw/UnpackedTarball_libmwaw.mk           |    8 ++++++++
 external/libmwaw/ubsan-visibility.patch.0             |   11 +++++++++++
 external/libodfgen/UnpackedTarball_libodfgen.mk       |    8 ++++++++
 external/libodfgen/ubsan-visibility.patch             |   11 +++++++++++
 external/libpagemaker/UnpackedTarball_libpagemaker.mk |   10 ++++++++++
 external/libpagemaker/ubsan-visibility.patch          |   11 +++++++++++
 external/librevenge/UnpackedTarball_librevenge.mk     |   10 +++++++++-
 external/librevenge/ubsan-visibility.patch            |   11 +++++++++++
 external/libvisio/UnpackedTarball_libvisio.mk         |    8 ++++++++
 external/libvisio/ubsan-visibility.patch              |   11 +++++++++++
 solenv/gbuild/platform/com_GCC_defs.mk                |    8 +++++++-
 19 files changed, 185 insertions(+), 2 deletions(-)

New commits:
commit f0aa1a78fb209310e8baef53c02f365fca518d11
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Fri Feb 27 10:05:22 2015 +0100

    For Clang -fsanitize=vptr use -fvisibility-ms-compat, not -fvisibility=hidden
    
    As discussed in b4f6b26b5a1a78fecfa95ec2eb7ac8b80495d8aa "SAL_DLLPUBLIC_RTTI for
    proper RTTI visibility for LLVM," RTTI-based -fsanitize= checks with Clang on
    Linux need special precautions to make RTTI symbols visible across DSOs.  The
    approach taken there, as well as in 598d8194b0ea1a64e0ebba28a86c128bafa57c7c
    "Visible function type RTTI for Clang -fsanitize=function," was to add explicit
    SAL_DLLPUBLIC_RTTI annontations to relevant type definitions.  However, for
    -fsanitize=vptr that would have required many more of those, so it appears
    easier to "misuse" -fsanitize-ms-compat in that case, which happens to give all
    RTTI symbols default visibility (while otherwise still honoring our
    SAL_DLLPUBLIC/PRIVATE annotations).
    
    The SAL_DLLPUBLIC_RTTI annotations from 598d8194b0ea1a64e0ebba28a86c128bafa57c7c
    "Visible function type RTTI for Clang -fsanitize=function" can likely be removed
    again.
    
    Change-Id: Ibeff7ab8c908111a7dc66ff0677204f112b24db8

diff --git a/external/libabw/UnpackedTarball_libabw.mk b/external/libabw/UnpackedTarball_libabw.mk
index 6288b0e..eb6b75c 100644
--- a/external/libabw/UnpackedTarball_libabw.mk
+++ b/external/libabw/UnpackedTarball_libabw.mk
@@ -11,4 +11,14 @@ $(eval $(call gb_UnpackedTarball_UnpackedTarball,libabw))
 
 $(eval $(call gb_UnpackedTarball_set_tarball,libabw,$(ABW_TARBALL)))
 
+$(eval $(call gb_UnpackedTarball_set_patchlevel,libabw,0))
+
+ifeq ($(COM_GCC_IS_CLANG),TRUE)
+ifneq ($(filter -fsanitize=%,$(CC)),)
+$(eval $(call gb_UnpackedTarball_add_patches,libabw, \
+    external/libabw/ubsan-visibility.patch \
+))
+endif
+endif
+
 # vim: set noet sw=4 ts=4:
diff --git a/external/libabw/ubsan-visibility.patch b/external/libabw/ubsan-visibility.patch
new file mode 100644
index 0000000..2285ef8
--- /dev/null
+++ b/external/libabw/ubsan-visibility.patch
@@ -0,0 +1,11 @@
+--- configure
++++ configure
+@@ -16635,7 +16635,7 @@
+         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -fvisibility=hidden compiler flag" >&5
+ $as_echo_n "checking for -fvisibility=hidden compiler flag... " >&6; }
+         saved_CXXFLAGS="$CXXFLAGS"
+-        CXXFLAGS="$CXXFLAGS -fvisibility=hidden"
++        CXXFLAGS="$CXXFLAGS -fvisibility-ms-compat"
+         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ 
diff --git a/external/libcdr/UnpackedTarball_libcdr.mk b/external/libcdr/UnpackedTarball_libcdr.mk
index a91bc8e..f43bd1b 100644
--- a/external/libcdr/UnpackedTarball_libcdr.mk
+++ b/external/libcdr/UnpackedTarball_libcdr.mk
@@ -11,4 +11,14 @@ $(eval $(call gb_UnpackedTarball_UnpackedTarball,libcdr))
 
 $(eval $(call gb_UnpackedTarball_set_tarball,libcdr,$(CDR_TARBALL)))
 
+$(eval $(call gb_UnpackedTarball_set_patchlevel,libcdr,0))
+
+ifeq ($(COM_GCC_IS_CLANG),TRUE)
+ifneq ($(filter -fsanitize=%,$(CC)),)
+$(eval $(call gb_UnpackedTarball_add_patches,libcdr, \
+    external/libcdr/ubsan-visibility.patch \
+))
+endif
+endif
+
 # vim: set noet sw=4 ts=4:
diff --git a/external/libcdr/ubsan-visibility.patch b/external/libcdr/ubsan-visibility.patch
new file mode 100644
index 0000000..2581786
--- /dev/null
+++ b/external/libcdr/ubsan-visibility.patch
@@ -0,0 +1,11 @@
+--- configure
++++ configure
+@@ -17651,7 +17641,7 @@
+         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -fvisibility=hidden compiler flag" >&5
+ $as_echo_n "checking for -fvisibility=hidden compiler flag... " >&6; }
+         saved_CXXFLAGS="$CXXFLAGS"
+-        CXXFLAGS="$CXXFLAGS -fvisibility=hidden"
++        CXXFLAGS="$CXXFLAGS -fvisibility-ms-compat"
+         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ 
diff --git a/external/libebook/UnpackedTarball_libebook.mk b/external/libebook/UnpackedTarball_libebook.mk
index 02c17db..4d8622e 100644
--- a/external/libebook/UnpackedTarball_libebook.mk
+++ b/external/libebook/UnpackedTarball_libebook.mk
@@ -18,4 +18,12 @@ $(eval $(call gb_UnpackedTarball_add_patches,libebook, \
     external/libebook/0001-lrf-compute-color-interpolation-coeff.-correctly.patch.1 \
 ))
 
+ifeq ($(COM_GCC_IS_CLANG),TRUE)
+ifneq ($(filter -fsanitize=%,$(CC)),)
+$(eval $(call gb_UnpackedTarball_add_patches,libebook, \
+    external/libebook/ubsan-visibility.patch \
+))
+endif
+endif
+
 # vim: set noet sw=4 ts=4:
diff --git a/external/libebook/ubsan-visibility.patch b/external/libebook/ubsan-visibility.patch
new file mode 100644
index 0000000..b18f6a4
--- /dev/null
+++ b/external/libebook/ubsan-visibility.patch
@@ -0,0 +1,11 @@
+--- configure
++++ configure
+@@ -17254,7 +17254,7 @@
+         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -fvisibility=hidden compiler flag" >&5
+ $as_echo_n "checking for -fvisibility=hidden compiler flag... " >&6; }
+         saved_CXXFLAGS="$CXXFLAGS"
+-        CXXFLAGS="$CXXFLAGS -fvisibility=hidden"
++        CXXFLAGS="$CXXFLAGS -fvisibility-ms-compat"
+         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ 
diff --git a/external/libmspub/UnpackedTarball_libmspub.mk b/external/libmspub/UnpackedTarball_libmspub.mk
index cce7b54..a8c673c 100644
--- a/external/libmspub/UnpackedTarball_libmspub.mk
+++ b/external/libmspub/UnpackedTarball_libmspub.mk
@@ -17,4 +17,12 @@ $(eval $(call gb_UnpackedTarball_add_patches,libmspub,\
     external/libmspub/ubsan.patch \
 ))
 
+ifeq ($(COM_GCC_IS_CLANG),TRUE)
+ifneq ($(filter -fsanitize=%,$(CC)),)
+$(eval $(call gb_UnpackedTarball_add_patches,libmspub, \
+    external/libmspub/ubsan-visibility.patch \
+))
+endif
+endif
+
 # vim: set noet sw=4 ts=4:
diff --git a/external/libmspub/ubsan-visibility.patch b/external/libmspub/ubsan-visibility.patch
new file mode 100644
index 0000000..edaa1d0
--- /dev/null
+++ b/external/libmspub/ubsan-visibility.patch
@@ -0,0 +1,11 @@
+--- configure
++++ configure
+@@ -17060,7 +17060,7 @@
+         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -fvisibility=hidden compiler flag" >&5
+ $as_echo_n "checking for -fvisibility=hidden compiler flag... " >&6; }
+         saved_CXXFLAGS="$CXXFLAGS"
+-        CXXFLAGS="$CXXFLAGS -fvisibility=hidden"
++        CXXFLAGS="$CXXFLAGS -fvisibility-ms-compat"
+         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ 
diff --git a/external/libmwaw/UnpackedTarball_libmwaw.mk b/external/libmwaw/UnpackedTarball_libmwaw.mk
index 5338ce5..f88842a 100644
--- a/external/libmwaw/UnpackedTarball_libmwaw.mk
+++ b/external/libmwaw/UnpackedTarball_libmwaw.mk
@@ -19,4 +19,12 @@ $(eval $(call gb_UnpackedTarball_add_patches,libmwaw,\
 	external/libmwaw/ubsan.patch.0 \
 ))
 
+ifeq ($(COM_GCC_IS_CLANG),TRUE)
+ifneq ($(filter -fsanitize=%,$(CC)),)
+$(eval $(call gb_UnpackedTarball_add_patches,libmwaw, \
+    external/libmwaw/ubsan-visibility.patch.0 \
+))
+endif
+endif
+
 # vim: set noet sw=4 ts=4:
diff --git a/external/libmwaw/ubsan-visibility.patch.0 b/external/libmwaw/ubsan-visibility.patch.0
new file mode 100644
index 0000000..a14d201
--- /dev/null
+++ b/external/libmwaw/ubsan-visibility.patch.0
@@ -0,0 +1,11 @@
+--- configure
++++ configure
+@@ -17225,7 +17225,7 @@
+         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -fvisibility=hidden compiler flag" >&5
+ $as_echo_n "checking for -fvisibility=hidden compiler flag... " >&6; }
+         saved_CXXFLAGS="$CXXFLAGS"
+-        CXXFLAGS="$CXXFLAGS -fvisibility=hidden"
++        CXXFLAGS="$CXXFLAGS -fvisibility-ms-compat"
+         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ 
diff --git a/external/libodfgen/UnpackedTarball_libodfgen.mk b/external/libodfgen/UnpackedTarball_libodfgen.mk
index 965a278..1aa716f 100644
--- a/external/libodfgen/UnpackedTarball_libodfgen.mk
+++ b/external/libodfgen/UnpackedTarball_libodfgen.mk
@@ -18,4 +18,12 @@ $(eval $(call gb_UnpackedTarball_add_patches,libodfgen, \
 	external/libodfgen/rtti.patch \
 ))
 
+ifeq ($(COM_GCC_IS_CLANG),TRUE)
+ifneq ($(filter -fsanitize=%,$(CC)),)
+$(eval $(call gb_UnpackedTarball_add_patches,libodfgen, \
+    external/libodfgen/ubsan-visibility.patch \
+))
+endif
+endif
+
 # vim: set noet sw=4 ts=4:
diff --git a/external/libodfgen/ubsan-visibility.patch b/external/libodfgen/ubsan-visibility.patch
new file mode 100644
index 0000000..5dcae64
--- /dev/null
+++ b/external/libodfgen/ubsan-visibility.patch
@@ -0,0 +1,11 @@
+--- configure
++++ configure
+@@ -15721,7 +15721,7 @@
+         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -fvisibility=hidden compiler flag" >&5
+ $as_echo_n "checking for -fvisibility=hidden compiler flag... " >&6; }
+         saved_CXXFLAGS="$CXXFLAGS"
+-        CXXFLAGS="$CXXFLAGS -fvisibility=hidden"
++        CXXFLAGS="$CXXFLAGS -fvisibility-ms-compat"
+         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ 
diff --git a/external/libpagemaker/UnpackedTarball_libpagemaker.mk b/external/libpagemaker/UnpackedTarball_libpagemaker.mk
index fec1c03..6322c2e 100644
--- a/external/libpagemaker/UnpackedTarball_libpagemaker.mk
+++ b/external/libpagemaker/UnpackedTarball_libpagemaker.mk
@@ -11,4 +11,14 @@ $(eval $(call gb_UnpackedTarball_UnpackedTarball,libpagemaker))
 
 $(eval $(call gb_UnpackedTarball_set_tarball,libpagemaker,$(PAGEMAKER_TARBALL)))
 
+$(eval $(call gb_UnpackedTarball_set_patchlevel,libpagemaker,0))
+
+ifeq ($(COM_GCC_IS_CLANG),TRUE)
+ifneq ($(filter -fsanitize=%,$(CC)),)
+$(eval $(call gb_UnpackedTarball_add_patches,libpagemaker, \
+    external/libpagemaker/ubsan-visibility.patch \
+))
+endif
+endif
+
 # vim: set noet sw=4 ts=4:
diff --git a/external/libpagemaker/ubsan-visibility.patch b/external/libpagemaker/ubsan-visibility.patch
new file mode 100644
index 0000000..90ead2b
--- /dev/null
+++ b/external/libpagemaker/ubsan-visibility.patch
@@ -0,0 +1,11 @@
+--- configure
++++ configure
+@@ -16787,7 +16787,7 @@
+         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -fvisibility=hidden compiler flag" >&5
+ $as_echo_n "checking for -fvisibility=hidden compiler flag... " >&6; }
+         saved_CXXFLAGS="$CXXFLAGS"
+-        CXXFLAGS="$CXXFLAGS -fvisibility=hidden"
++        CXXFLAGS="$CXXFLAGS -fvisibility-ms-compat"
+         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ 
diff --git a/external/librevenge/UnpackedTarball_librevenge.mk b/external/librevenge/UnpackedTarball_librevenge.mk
index 470f58f..dabad6a 100644
--- a/external/librevenge/UnpackedTarball_librevenge.mk
+++ b/external/librevenge/UnpackedTarball_librevenge.mk
@@ -11,6 +11,14 @@ $(eval $(call gb_UnpackedTarball_UnpackedTarball,librevenge))
 
 $(eval $(call gb_UnpackedTarball_set_tarball,librevenge,$(REVENGE_TARBALL)))
 
-$(eval $(call gb_UnpackedTarball_set_patchlevel,librevenge,1))
+$(eval $(call gb_UnpackedTarball_set_patchlevel,librevenge,0))
+
+ifeq ($(COM_GCC_IS_CLANG),TRUE)
+ifneq ($(filter -fsanitize=%,$(CC)),)
+$(eval $(call gb_UnpackedTarball_add_patches,librevenge, \
+    external/librevenge/ubsan-visibility.patch \
+))
+endif
+endif
 
 # vim: set noet sw=4 ts=4:
diff --git a/external/librevenge/ubsan-visibility.patch b/external/librevenge/ubsan-visibility.patch
new file mode 100644
index 0000000..ede44d4
--- /dev/null
+++ b/external/librevenge/ubsan-visibility.patch
@@ -0,0 +1,11 @@
+--- src/lib/Makefile.in
++++ src/lib/Makefile.in
+@@ -79,7 +79,7 @@
+ POST_UNINSTALL = :
+ build_triplet = @build@
+ host_triplet = @host@
+- at HAVE_VISIBILITY_TRUE@am__append_1 = -fvisibility=hidden
++ at HAVE_VISIBILITY_TRUE@am__append_1 = -fvisibility-ms-compat
+ @HAVE_VISIBILITY_TRUE at am__append_2 = -DLIBREVENGE_VISIBILITY
+ @BUILD_GENERATORS_TRUE at am__append_3 = librevenge-generators- at RVNG_MAJOR_VERSION@. at RVNG_MINOR_VERSION@.la
+ @BUILD_GENERATORS_TRUE@@HAVE_VISIBILITY_TRUE at am__append_4 = -DLIBREVENGE_GENERATORS_VISIBILITY
diff --git a/external/libvisio/UnpackedTarball_libvisio.mk b/external/libvisio/UnpackedTarball_libvisio.mk
index caae903..4c55ece 100644
--- a/external/libvisio/UnpackedTarball_libvisio.mk
+++ b/external/libvisio/UnpackedTarball_libvisio.mk
@@ -18,4 +18,12 @@ $(eval $(call gb_UnpackedTarball_add_patches,libvisio,\
        external/libvisio/ubsan.patch \
 ))
 
+ifeq ($(COM_GCC_IS_CLANG),TRUE)
+ifneq ($(filter -fsanitize=%,$(CC)),)
+$(eval $(call gb_UnpackedTarball_add_patches,libvisio, \
+    external/libvisio/ubsan-visibility.patch \
+))
+endif
+endif
+
 # vim: set noet sw=4 ts=4:
diff --git a/external/libvisio/ubsan-visibility.patch b/external/libvisio/ubsan-visibility.patch
new file mode 100644
index 0000000..1855c73
--- /dev/null
+++ b/external/libvisio/ubsan-visibility.patch
@@ -0,0 +1,11 @@
+--- configure
++++ configure
+@@ -17847,7 +17847,7 @@
+         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -fvisibility=hidden compiler flag" >&5
+ $as_echo_n "checking for -fvisibility=hidden compiler flag... " >&6; }
+         saved_CXXFLAGS="$CXXFLAGS"
+-        CXXFLAGS="$CXXFLAGS -fvisibility=hidden"
++        CXXFLAGS="$CXXFLAGS -fvisibility-ms-compat"
+         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ 
diff --git a/solenv/gbuild/platform/com_GCC_defs.mk b/solenv/gbuild/platform/com_GCC_defs.mk
index 7f8b617..319ea9f 100644
--- a/solenv/gbuild/platform/com_GCC_defs.mk
+++ b/solenv/gbuild/platform/com_GCC_defs.mk
@@ -89,7 +89,13 @@ ifeq ($(HAVE_GCC_VISIBILITY_FEATURE),TRUE)
 gb_VISIBILITY_FLAGS := -DHAVE_GCC_VISIBILITY_FEATURE
 # If CC or CXX already include -fvisibility=hidden, don't duplicate it
 ifeq (,$(filter -fvisibility=hidden,$(CC)))
-gb_VISIBILITY_FLAGS += -fvisibility=hidden
+gb__visibility_hidden := -fvisibility=hidden
+ifeq ($(COM_GCC_IS_CLANG),TRUE)
+ifneq ($(filter -fsanitize=%,$(CC)),)
+gb__visibility_hidden := -fvisibility-ms-compat
+endif
+endif
+gb_VISIBILITY_FLAGS += $(gb__visibility_hidden)
 endif
 ifneq ($(HAVE_GCC_VISIBILITY_BROKEN),TRUE)
 gb_VISIBILITY_FLAGS_CXX := -fvisibility-inlines-hidden


More information about the Libreoffice-commits mailing list