New commits:
commit 9a7aa3326d087c79879e435179e359dd76aa5e0a
Author: Stephan Bergmann <sbergman@redhat.com>
AuthorDate: Tue Apr 16 16:11:39 2019 +0200
Commit: Stephan Bergmann <sbergman@redhat.com>
CommitDate: Fri May 3 13:46:25 2019 +0200
The -fvisibility-ms-compat hack is no longer needed for UBSan on Linux...
...with latest Clang trunk towards Clang 9. All the no-longer necessary hacks
are made conditional on new NEED_CLANG_LINUX_UBSAN_RTTI_VISIBILITY, which is
still set for UBSan builds with older Clang on Linux (but which should
eventually be purged).
Various classes needed additional SAL_DLLPUBLIC_RTTI annotations, as building
with UBSan instrumentation can generate references to RTTI symbols from
additional places like outside a dynamic library that used to hide those symbols
by default (but used to not hide them for old UBSan builds thanks to the
-fvisibility-ms-compat hack).
The odr-violation suppressions in solenv/sanitizers/asan-suppressions (which is
not referenced from anywhere in the code base, but meant to be included in an
ASan/UBSan build's ASAN_OPTIONS env var) are also no longer needed when
NEED_CLANG_LINUX_UBSAN_RTTI_VISIBILITY is false.
Change-Id: I24ec3e388b0cbab50dbe2bf008d9569bff7bf25a
Reviewed-on: https://gerrit.libreoffice.org/70829
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
diff --git a/config_host.mk.in b/config_host.mk.in
index eccc3ef1924f..66cca894d96c 100644
--- a/config_host.mk.in
+++ b/config_host.mk.in
@@ -410,6 +410,7 @@ export MWAW_LIBS=$(gb_SPACE)@MWAW_LIBS@
export MYTHES_CFLAGS=$(gb_SPACE)@MYTHES_CFLAGS@
export MYTHES_LIBS=$(gb_SPACE)@MYTHES_LIBS@
export NASM=@NASM@
+export NEED_CLANG_LINUX_UBSAN_RTTI_VISIBILITY=@NEED_CLANG_LINUX_UBSAN_RTTI_VISIBILITY@
export NEON_CFLAGS=$(gb_SPACE)@NEON_CFLAGS@
export NEON_LIBS=$(gb_SPACE)@NEON_LIBS@
export NEON_VERSION=@NEON_VERSION@
diff --git a/configure.ac b/configure.ac
index 9d010de28280..36e0c359dedf 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3864,6 +3864,28 @@ else
fi
AC_SUBST(ENABLE_DEBUG)
+AC_MSG_CHECKING([whether special RTTI visibility flags are needed for Clang Linux UBSan])
+NEED_CLANG_LINUX_UBSAN_RTTI_VISIBILITY=
+dnl Clang 9 is known fixed since
+dnl <https://github.com/llvm/llvm-project/commit/5745eccef54ddd3caca278d1d292a88b2281528b> "Adapt
+dnl -fsanitize=function to SANITIZER_NON_UNIQUE_TYPEINFO":
+if test "$COM_IS_CLANG" = TRUE && test "$CLANGVER" -lt 90000 && test "$_os" = Linux; then
+ for i in $CC; do
+ case $i in
+ -fsanitize=*)
+ NEED_CLANG_LINUX_UBSAN_RTTI_VISIBILITY=TRUE
+ break
+ ;;
+ esac
+ done
+fi
+if test "$NEED_CLANG_LINUX_UBSAN_RTTI_VISIBILITY" = TRUE; then
+ AC_MSG_RESULT([yes])
+else
+ AC_MSG_RESULT([no])
+fi
+AC_SUBST([NEED_CLANG_LINUX_UBSAN_RTTI_VISIBILITY])
+
dnl ===================================================================
dnl Select the linker to use (gold/lld/ld.bfd).
dnl This is done only after compiler checks (need to know if Clang is
@@ -3889,17 +3911,8 @@ printf ("hello world\n");
AC_MSG_RESULT( yes )
use_ld_ok=yes
dnl For obscure reasons, unxgcc.mk uses the --dynamic-list-cpp-typeinfo linker option
- dnl if sanitizers are used, and lld doesn't support this option.
- use_ld_has_sanitizers=
- for i in $CC; do
- case $i in
- -fsanitize=*)
- use_ld_has_sanitizers=yes
- break
- ;;
- esac
- done
- if test -n "$use_ld_has_sanitizers"; then
+ dnl if NEED_CLANG_LINUX_UBSAN_RTTI_VISIBILITY, and lld doesn't support this option.
+ if test -n "$NEED_CLANG_LINUX_UBSAN_RTTI_VISIBILITY"; then
AC_MSG_CHECKING([for --dynamic-list-cpp-typeinfo linker support (-fuse-ld=$use_ld)])
use_ld_ldflags_save_2="$LDFLAGS"
LDFLAGS="$LDFLAGS -Wl,--dynamic-list-cpp-typeinfo"
diff --git a/external/libabw/UnpackedTarball_libabw.mk b/external/libabw/UnpackedTarball_libabw.mk
index 27195d3a0ab3..212abfbc4674 100644
--- a/external/libabw/UnpackedTarball_libabw.mk
+++ b/external/libabw/UnpackedTarball_libabw.mk
@@ -19,12 +19,10 @@ $(eval $(call gb_UnpackedTarball_add_patches,libabw, \
external/libabw/libabw-msvc.patch.1 \
))
-ifeq ($(COM_IS_CLANG),TRUE)
-ifneq ($(filter -fsanitize=%,$(CC)),)
+ifeq ($(NEED_CLANG_LINUX_UBSAN_RTTI_VISIBILITY),TRUE)
$(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/libcdr/UnpackedTarball_libcdr.mk b/external/libcdr/UnpackedTarball_libcdr.mk
index 23874f7d01b5..7433d2bb4e67 100644
--- a/external/libcdr/UnpackedTarball_libcdr.mk
+++ b/external/libcdr/UnpackedTarball_libcdr.mk
@@ -19,12 +19,10 @@ $(eval $(call gb_UnpackedTarball_add_patches,libcdr, \
external/libcdr/libcdr-visibility-win.patch \
))
-ifeq ($(COM_IS_CLANG),TRUE)
-ifneq ($(filter -fsanitize=%,$(CC)),)
+ifeq ($(NEED_CLANG_LINUX_UBSAN_RTTI_VISIBILITY),TRUE)
$(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/libebook/UnpackedTarball_libebook.mk
b/external/libebook/UnpackedTarball_libebook.mk
index af2ddea28ae1..17b1a892dc3e 100644
--- a/external/libebook/UnpackedTarball_libebook.mk
+++ b/external/libebook/UnpackedTarball_libebook.mk
@@ -15,12 +15,10 @@ $(eval $(call gb_UnpackedTarball_set_patchlevel,libebook,0))
$(eval $(call gb_UnpackedTarball_update_autoconf_configs,libebook))
-ifeq ($(COM_IS_CLANG),TRUE)
-ifneq ($(filter -fsanitize=%,$(CC)),)
+ifeq ($(NEED_CLANG_LINUX_UBSAN_RTTI_VISIBILITY),TRUE)
$(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/libepubgen/UnpackedTarball_libepubgen.mk
b/external/libepubgen/UnpackedTarball_libepubgen.mk
index 7553e825284f..051cc29021cc 100644
--- a/external/libepubgen/UnpackedTarball_libepubgen.mk
+++ b/external/libepubgen/UnpackedTarball_libepubgen.mk
@@ -10,11 +10,9 @@
epubgen_patches :=
epubgen_patches += tdf-120491.patch
-ifeq ($(COM_IS_CLANG),TRUE)
-ifneq ($(filter -fsanitize=%,$(CC)),)
+ifeq ($(NEED_CLANG_LINUX_UBSAN_RTTI_VISIBILITY),TRUE)
epubgen_patches += ubsan-visibility.patch
endif
-endif
$(eval $(call gb_UnpackedTarball_UnpackedTarball,libepubgen))
diff --git a/external/libetonyek/UnpackedTarball_libetonyek.mk b/external/libetonyek/UnpackedTarball_libetonyek.mk
index 81685831fb60..01aac83c812a 100644
--- a/external/libetonyek/UnpackedTarball_libetonyek.mk
+++ b/external/libetonyek/UnpackedTarball_libetonyek.mk
@@ -32,12 +32,10 @@ endif
endif
endif
-ifeq ($(COM_IS_CLANG),TRUE)
-ifneq ($(filter -fsanitize=%,$(CC)),)
+ifeq ($(NEED_CLANG_LINUX_UBSAN_RTTI_VISIBILITY),TRUE)
$(eval $(call gb_UnpackedTarball_add_patches,libetonyek, \
external/libetonyek/ubsan-visibility.patch \
))
endif
-endif
# vim: set noet sw=4 ts=4:
diff --git a/external/libfreehand/UnpackedTarball_libfreehand.mk
b/external/libfreehand/UnpackedTarball_libfreehand.mk
index 3d4a3d522687..0853d0420129 100644
--- a/external/libfreehand/UnpackedTarball_libfreehand.mk
+++ b/external/libfreehand/UnpackedTarball_libfreehand.mk
@@ -15,12 +15,10 @@ $(eval $(call gb_UnpackedTarball_set_patchlevel,libfreehand,0))
$(eval $(call gb_UnpackedTarball_update_autoconf_configs,libfreehand))
-ifeq ($(COM_IS_CLANG),TRUE)
-ifneq ($(filter -fsanitize=%,$(CC)),)
+ifeq ($(NEED_CLANG_LINUX_UBSAN_RTTI_VISIBILITY),TRUE)
$(eval $(call gb_UnpackedTarball_add_patches,libfreehand, \
external/libfreehand/ubsan-visibility.patch \
))
endif
-endif
# vim: set noet sw=4 ts=4:
diff --git a/external/libmspub/UnpackedTarball_libmspub.mk
b/external/libmspub/UnpackedTarball_libmspub.mk
index 5e5bedb27d83..f337d402d47f 100644
--- a/external/libmspub/UnpackedTarball_libmspub.mk
+++ b/external/libmspub/UnpackedTarball_libmspub.mk
@@ -25,12 +25,10 @@ $(eval $(call gb_UnpackedTarball_add_patches,libmspub, \
))
endif
-ifeq ($(COM_IS_CLANG),TRUE)
-ifneq ($(filter -fsanitize=%,$(CC)),)
+ifeq ($(NEED_CLANG_LINUX_UBSAN_RTTI_VISIBILITY),TRUE)
$(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/libmwaw/UnpackedTarball_libmwaw.mk
b/external/libmwaw/UnpackedTarball_libmwaw.mk
index cd1551a1fe97..62357c008071 100644
--- a/external/libmwaw/UnpackedTarball_libmwaw.mk
+++ b/external/libmwaw/UnpackedTarball_libmwaw.mk
@@ -15,13 +15,11 @@ $(eval $(call gb_UnpackedTarball_set_patchlevel,libmwaw,0))
$(eval $(call gb_UnpackedTarball_update_autoconf_configs,libmwaw))
-ifeq ($(COM_IS_CLANG),TRUE)
-ifneq ($(filter -fsanitize=%,$(CC)),)
+ifeq ($(NEED_CLANG_LINUX_UBSAN_RTTI_VISIBILITY),TRUE)
$(eval $(call gb_UnpackedTarball_add_patches,libmwaw, \
external/libmwaw/ubsan-visibility.patch \
))
endif
-endif
ifneq ($(OS),MACOSX)
ifneq ($(OS),WNT)
diff --git a/external/libodfgen/UnpackedTarball_libodfgen.mk
b/external/libodfgen/UnpackedTarball_libodfgen.mk
index 10eb24fd77a7..80ccbf73bfd5 100644
--- a/external/libodfgen/UnpackedTarball_libodfgen.mk
+++ b/external/libodfgen/UnpackedTarball_libodfgen.mk
@@ -15,13 +15,11 @@ $(eval $(call gb_UnpackedTarball_set_patchlevel,libodfgen,0))
$(eval $(call gb_UnpackedTarball_update_autoconf_configs,libodfgen))
-ifeq ($(COM_IS_CLANG),TRUE)
-ifneq ($(filter -fsanitize=%,$(CC)),)
+ifeq ($(NEED_CLANG_LINUX_UBSAN_RTTI_VISIBILITY),TRUE)
$(eval $(call gb_UnpackedTarball_add_patches,libodfgen, \
external/libodfgen/ubsan-visibility.patch \
))
endif
-endif
ifeq ($(SYSTEM_REVENGE),)
$(eval $(call gb_UnpackedTarball_add_patches,libodfgen, \
diff --git a/external/libpagemaker/UnpackedTarball_libpagemaker.mk
b/external/libpagemaker/UnpackedTarball_libpagemaker.mk
index 2de27d5abbfd..a090d334c3fe 100644
--- a/external/libpagemaker/UnpackedTarball_libpagemaker.mk
+++ b/external/libpagemaker/UnpackedTarball_libpagemaker.mk
@@ -15,12 +15,10 @@ $(eval $(call gb_UnpackedTarball_set_patchlevel,libpagemaker,0))
$(eval $(call gb_UnpackedTarball_update_autoconf_configs,libpagemaker))
-ifeq ($(COM_IS_CLANG),TRUE)
-ifneq ($(filter -fsanitize=%,$(CC)),)
+ifeq ($(NEED_CLANG_LINUX_UBSAN_RTTI_VISIBILITY),TRUE)
$(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/libqxp/UnpackedTarball_libqxp.mk b/external/libqxp/UnpackedTarball_libqxp.mk
index 8519e983d957..c0d89263a4d2 100644
--- a/external/libqxp/UnpackedTarball_libqxp.mk
+++ b/external/libqxp/UnpackedTarball_libqxp.mk
@@ -15,13 +15,11 @@ $(eval $(call gb_UnpackedTarball_set_patchlevel,libqxp,0))
$(eval $(call gb_UnpackedTarball_update_autoconf_configs,libqxp))
-ifeq ($(COM_IS_CLANG),TRUE)
-ifneq ($(filter -fsanitize=%,$(CC)),)
+ifeq ($(NEED_CLANG_LINUX_UBSAN_RTTI_VISIBILITY),TRUE)
$(eval $(call gb_UnpackedTarball_add_patches,libqxp, \
external/libqxp/ubsan-visibility.patch \
))
endif
-endif
$(eval $(call gb_UnpackedTarball_add_patches,libqxp, \
external/libqxp/android-workaround.patch.1 \
diff --git a/external/librevenge/UnpackedTarball_librevenge.mk
b/external/librevenge/UnpackedTarball_librevenge.mk
index 678da6454586..7e4c48f59619 100644
--- a/external/librevenge/UnpackedTarball_librevenge.mk
+++ b/external/librevenge/UnpackedTarball_librevenge.mk
@@ -19,13 +19,11 @@ $(eval $(call gb_UnpackedTarball_add_patches,librevenge, \
external/librevenge/rpath.patch \
))
-ifeq ($(COM_IS_CLANG),TRUE)
-ifneq ($(filter -fsanitize=%,$(CC)),)
+ifeq ($(NEED_CLANG_LINUX_UBSAN_RTTI_VISIBILITY),TRUE)
$(eval $(call gb_UnpackedTarball_add_patches,librevenge, \
external/librevenge/ubsan-visibility.patch \
))
endif
-endif
ifneq ($(OS),MACOSX)
ifneq ($(OS),WNT)
diff --git a/external/libstaroffice/UnpackedTarball_libstaroffice.mk
b/external/libstaroffice/UnpackedTarball_libstaroffice.mk
index fdf668d196dc..98b8e14cdaec 100644
--- a/external/libstaroffice/UnpackedTarball_libstaroffice.mk
+++ b/external/libstaroffice/UnpackedTarball_libstaroffice.mk
@@ -15,13 +15,11 @@ $(eval $(call gb_UnpackedTarball_set_patchlevel,libstaroffice,0))
$(eval $(call gb_UnpackedTarball_update_autoconf_configs,libstaroffice))
-ifeq ($(COM_IS_CLANG),TRUE)
-ifneq ($(filter -fsanitize=%,$(CC)),)
+ifeq ($(NEED_CLANG_LINUX_UBSAN_RTTI_VISIBILITY),TRUE)
$(eval $(call gb_UnpackedTarball_add_patches,libstaroffice, \
external/libstaroffice/ubsan-visibility.patch \
))
endif
-endif
ifneq ($(OS),MACOSX)
ifneq ($(OS),WNT)
diff --git a/external/libvisio/UnpackedTarball_libvisio.mk
b/external/libvisio/UnpackedTarball_libvisio.mk
index 1ab8b392c4e8..0ff189261f42 100644
--- a/external/libvisio/UnpackedTarball_libvisio.mk
+++ b/external/libvisio/UnpackedTarball_libvisio.mk
@@ -20,12 +20,10 @@ $(eval $(call gb_UnpackedTarball_add_patches,libvisio, \
external/libvisio/0001-fix-debug-build.patch.1 \
))
-ifeq ($(COM_IS_CLANG),TRUE)
-ifneq ($(filter -fsanitize=%,$(CC)),)
+ifeq ($(NEED_CLANG_LINUX_UBSAN_RTTI_VISIBILITY),TRUE)
$(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/libwps/UnpackedTarball_libwps.mk b/external/libwps/UnpackedTarball_libwps.mk
index d712f25406bd..b148db2f93d2 100644
--- a/external/libwps/UnpackedTarball_libwps.mk
+++ b/external/libwps/UnpackedTarball_libwps.mk
@@ -27,12 +27,10 @@ $(eval $(call gb_UnpackedTarball_add_patches,libwps,\
endif
endif
-ifeq ($(COM_IS_CLANG),TRUE)
-ifneq ($(filter -fsanitize=%,$(CC)),)
+ifeq ($(NEED_CLANG_LINUX_UBSAN_RTTI_VISIBILITY),TRUE)
$(eval $(call gb_UnpackedTarball_add_patches,libwps, \
external/libwps/ubsan-visibility.patch.0 \
))
endif
-endif
# vim: set noet sw=4 ts=4:
diff --git a/external/libzmf/UnpackedTarball_libzmf.mk b/external/libzmf/UnpackedTarball_libzmf.mk
index 3aafc660e9d5..5d5e7066572d 100644
--- a/external/libzmf/UnpackedTarball_libzmf.mk
+++ b/external/libzmf/UnpackedTarball_libzmf.mk
@@ -15,13 +15,11 @@ $(eval $(call gb_UnpackedTarball_set_patchlevel,libzmf,0))
$(eval $(call gb_UnpackedTarball_update_autoconf_configs,libzmf))
-ifeq ($(COM_IS_CLANG),TRUE)
-ifneq ($(filter -fsanitize=%,$(CC)),)
+ifeq ($(NEED_CLANG_LINUX_UBSAN_RTTI_VISIBILITY),TRUE)
$(eval $(call gb_UnpackedTarball_add_patches,libzmf, \
external/libzmf/ubsan-visibility.patch \
))
endif
-endif
$(eval $(call gb_UnpackedTarball_add_patches,libzmf, \
external/libzmf/android-workaround.patch.1 \
diff --git a/include/oox/vml/vmlshape.hxx b/include/oox/vml/vmlshape.hxx
index 2bab907e884f..cb60a13c6356 100644
--- a/include/oox/vml/vmlshape.hxx
+++ b/include/oox/vml/vmlshape.hxx
@@ -122,7 +122,7 @@ struct OOX_DLLPUBLIC ShapeTypeModel
/** A shape template contains all formatting properties of shapes and can serve
as templates for several shapes in a drawing. */
-class ShapeType
+class SAL_DLLPUBLIC_RTTI ShapeType
{
public:
explicit ShapeType( Drawing& rDrawing );
diff --git a/include/svx/AccessibleControlShape.hxx b/include/svx/AccessibleControlShape.hxx
index 5b0e49941741..8c8115d9d748 100644
--- a/include/svx/AccessibleControlShape.hxx
+++ b/include/svx/AccessibleControlShape.hxx
@@ -66,7 +66,7 @@ namespace accessibility {
> AccessibleControlShape_Base;
/** @descr
*/
-class AccessibleControlShape final
+class SAL_DLLPUBLIC_RTTI AccessibleControlShape final
:public AccessibleShape
,public AccessibleControlShape_Base
{
diff --git a/include/svx/EnhancedCustomShapeFunctionParser.hxx
b/include/svx/EnhancedCustomShapeFunctionParser.hxx
index 30873c5eb644..ff53f38c6bff 100644
--- a/include/svx/EnhancedCustomShapeFunctionParser.hxx
+++ b/include/svx/EnhancedCustomShapeFunctionParser.hxx
@@ -134,7 +134,7 @@ inline std::basic_ostream<charT, traits> & operator <<(
SVX_DLLPUBLIC void FillEquationParameter( const css::drawing::EnhancedCustomShapeParameter&, const sal_Int32, EnhancedCustomShapeEquation& );
-class ExpressionNode
+class SAL_DLLPUBLIC_RTTI ExpressionNode
{
public:
virtual ~ExpressionNode();
diff --git a/include/svx/gridctrl.hxx b/include/svx/gridctrl.hxx
index fecb365b34ec..60f39a39198c 100644
--- a/include/svx/gridctrl.hxx
+++ b/include/svx/gridctrl.hxx
@@ -63,7 +63,7 @@ enum class GridRowStatus
// DbGridRow, description of rows
-class DbGridRow : public SvRefBase
+class SAL_DLLPUBLIC_RTTI DbGridRow : public SvRefBase
{
css::uno::Any m_aBookmark; // Bookmark of the row, can be set
::std::vector< std::unique_ptr<::svxform::DataColumn> >
diff --git a/include/toolkit/awt/vclxwindows.hxx b/include/toolkit/awt/vclxwindows.hxx
index 025238ecedbe..202d5974c8f9 100644
--- a/include/toolkit/awt/vclxwindows.hxx
+++ b/include/toolkit/awt/vclxwindows.hxx
@@ -175,7 +175,7 @@ protected:
// class VCLXCheckBox
-class VCLXCheckBox : public css::awt::XCheckBox,
+class SAL_DLLPUBLIC_RTTI VCLXCheckBox : public css::awt::XCheckBox,
public css::awt::XButton,
public VCLXGraphicControl
{
@@ -233,7 +233,7 @@ public:
// class VCLXRadioButton
-class VCLXRadioButton : public css::awt::XRadioButton,
+class SAL_DLLPUBLIC_RTTI VCLXRadioButton : public css::awt::XRadioButton,
public css::awt::XButton,
public VCLXGraphicControl
{
@@ -562,7 +562,7 @@ public:
// class VCLXScrollBar
-class VCLXScrollBar : public css::awt::XScrollBar,
+class SAL_DLLPUBLIC_RTTI VCLXScrollBar : public css::awt::XScrollBar,
public VCLXWindow
{
private:
@@ -874,7 +874,7 @@ public:
// class VCLXFormattedSpinField
-class VCLXFormattedSpinField : public VCLXSpinField
+class SAL_DLLPUBLIC_RTTI VCLXFormattedSpinField : public VCLXSpinField
{
private:
FormatterBase* mpFormatter;
diff --git a/include/xmloff/NamedBoolPropertyHdl.hxx b/include/xmloff/NamedBoolPropertyHdl.hxx
index d5fe6eb83927..1a5609c4042e 100644
--- a/include/xmloff/NamedBoolPropertyHdl.hxx
+++ b/include/xmloff/NamedBoolPropertyHdl.hxx
@@ -26,7 +26,7 @@
/**
PropertyHandler for a named xml bool type:
*/
-class XMLNamedBoolPropertyHdl : public XMLPropertyHandler
+class SAL_DLLPUBLIC_RTTI XMLNamedBoolPropertyHdl : public XMLPropertyHandler
{
private:
const OUString maTrueStr;
diff --git a/include/xmloff/controlpropertyhdl.hxx b/include/xmloff/controlpropertyhdl.hxx
index 141111816dad..51f95986af0d 100644
--- a/include/xmloff/controlpropertyhdl.hxx
+++ b/include/xmloff/controlpropertyhdl.hxx
@@ -36,7 +36,7 @@ namespace xmloff
//= ORotationAngleHandler
- class ORotationAngleHandler : public XMLPropertyHandler
+ class SAL_DLLPUBLIC_RTTI ORotationAngleHandler : public XMLPropertyHandler
{
public:
ORotationAngleHandler();
@@ -48,7 +48,7 @@ namespace xmloff
//= OFontWidthHandler
- class OFontWidthHandler : public XMLPropertyHandler
+ class SAL_DLLPUBLIC_RTTI OFontWidthHandler : public XMLPropertyHandler
{
public:
OFontWidthHandler();
@@ -60,7 +60,7 @@ namespace xmloff
//= OControlBorderHandlerBase
- class OControlBorderHandler : public XMLPropertyHandler
+ class SAL_DLLPUBLIC_RTTI OControlBorderHandler : public XMLPropertyHandler
{
public:
enum BorderFacet
diff --git a/sc/inc/chgtrack.hxx b/sc/inc/chgtrack.hxx
index 65f049ad163f..fa18d418dfc6 100644
--- a/sc/inc/chgtrack.hxx
+++ b/sc/inc/chgtrack.hxx
@@ -174,7 +174,7 @@ public:
// this is only for the XML Export in the hxx
class ScChangeActionContent;
-class ScChangeAction
+class SAL_DLLPUBLIC_RTTI ScChangeAction
{
friend class ScChangeTrack;
friend class ScChangeActionIns;
@@ -363,7 +363,7 @@ public:
};
// ScChangeActionIns
-class ScChangeActionIns : public ScChangeAction
+class SAL_DLLPUBLIC_RTTI ScChangeActionIns : public ScChangeAction
{
friend class ScChangeTrack;
@@ -398,7 +398,7 @@ public:
};
// ScChangeActionDel
-class ScChangeActionMove;
+class SAL_DLLPUBLIC_RTTI ScChangeActionMove;
class ScChangeActionDelMoveEntry : public ScChangeActionLinkEntry
{
@@ -597,7 +597,7 @@ enum ScChangeActionContentCellType
SC_CACCT_MATREF
};
-class ScChangeActionContent : public ScChangeAction
+class SAL_DLLPUBLIC_RTTI ScChangeActionContent : public ScChangeAction
{
friend class ScChangeTrack;
@@ -817,7 +817,7 @@ enum ScChangeTrackMergeState
// and are decremented, to keep values in a table separated from "normal" actions.
#define SC_CHGTRACK_GENERATED_START (sal_uInt32(0xfffffff0))
-class ScChangeTrack : public utl::ConfigurationListener
+class SAL_DLLPUBLIC_RTTI ScChangeTrack : public utl::ConfigurationListener
{
friend void ScChangeAction::RejectRestoreContents( ScChangeTrack*, SCCOL, SCROW );
friend bool ScChangeActionDel::Reject( ScDocument* pDoc );
diff --git a/sc/inc/dapiuno.hxx b/sc/inc/dapiuno.hxx
index 872745086d98..ad6f9b275502 100644
--- a/sc/inc/dapiuno.hxx
+++ b/sc/inc/dapiuno.hxx
@@ -128,7 +128,7 @@ public:
};
// ScDataPilotDescriptorBase is never instantiated directly
-class ScDataPilotDescriptorBase : public css::sheet::XDataPilotDescriptor,
+class SAL_DLLPUBLIC_RTTI ScDataPilotDescriptorBase : public css::sheet::XDataPilotDescriptor,
public css::beans::XPropertySet,
public css::sheet::XDataPilotDataLayoutFieldSupplier,
public css::lang::XServiceInfo,
diff --git a/sc/inc/dbdata.hxx b/sc/inc/dbdata.hxx
index 9a260b4e8390..7fd60a530b66 100644
--- a/sc/inc/dbdata.hxx
+++ b/sc/inc/dbdata.hxx
@@ -58,7 +58,7 @@ protected:
ScRangeList maDirtyTableColumnNames;
};
-class ScDBData : public SvtListener, public ScRefreshTimer
+class SAL_DLLPUBLIC_RTTI ScDBData : public SvtListener, public ScRefreshTimer
{
private:
std::unique_ptr<ScSortParam> mpSortParam;
diff --git a/sc/inc/queryparam.hxx b/sc/inc/queryparam.hxx
index 594b21d56057..b06496547d7e 100644
--- a/sc/inc/queryparam.hxx
+++ b/sc/inc/queryparam.hxx
@@ -39,7 +39,7 @@ class SharedStringPool;
}
-struct ScQueryParamBase
+struct SAL_DLLPUBLIC_RTTI ScQueryParamBase
{
utl::SearchParam::SearchType eSearchType;
bool bHasHeader;
@@ -99,7 +99,7 @@ inline std::basic_ostream<charT, traits> & operator <<(std::basic_ostream<charT,
return stream;
}
-struct ScQueryParamTable
+struct SAL_DLLPUBLIC_RTTI ScQueryParamTable
{
SCCOL nCol1;
SCROW nRow1;
diff --git a/sc/inc/scmod.hxx b/sc/inc/scmod.hxx
index 2c517eedf770..7d0d7e0a3675 100644
--- a/sc/inc/scmod.hxx
+++ b/sc/inc/scmod.hxx
@@ -77,7 +77,7 @@ class ScMarkData;
struct ScDragData;
class SfxDialogController;
-class ScModule: public SfxModule, public SfxListener, public utl::ConfigurationListener
+class SAL_DLLPUBLIC_RTTI ScModule: public SfxModule, public SfxListener, public
utl::ConfigurationListener
{
Timer m_aIdleTimer;
Idle m_aSpellIdle;
diff --git a/sc/inc/stlsheet.hxx b/sc/inc/stlsheet.hxx
index bd5aa843d8b4..69bc83be6365 100644
--- a/sc/inc/stlsheet.hxx
+++ b/sc/inc/stlsheet.hxx
@@ -26,7 +26,7 @@
class ScStyleSheetPool;
-class ScStyleSheet final : public SfxStyleSheet
+class SAL_DLLPUBLIC_RTTI ScStyleSheet final : public SfxStyleSheet
{
friend class ScStyleSheetPool;
diff --git a/sc/inc/userdat.hxx b/sc/inc/userdat.hxx
index 56874721f0f1..17a81261b3cd 100644
--- a/sc/inc/userdat.hxx
+++ b/sc/inc/userdat.hxx
@@ -82,7 +82,7 @@ public:
const ImageMap& GetImageMap() const { return aImageMap; }
};
-class ScMacroInfo : public SdrObjUserData
+class SAL_DLLPUBLIC_RTTI ScMacroInfo : public SdrObjUserData
{
public:
ScMacroInfo();
diff --git a/sc/source/ui/inc/dbfunc.hxx b/sc/source/ui/inc/dbfunc.hxx
index 7e807d9a5ad0..e4db4d500cb0 100644
--- a/sc/source/ui/inc/dbfunc.hxx
+++ b/sc/source/ui/inc/dbfunc.hxx
@@ -35,7 +35,7 @@ class ScDPSaveData;
struct ScDPNumGroupInfo;
struct ScSubTotalParam;
-class ScDBFunc : public ScViewFunc
+class SAL_DLLPUBLIC_RTTI ScDBFunc : public ScViewFunc
{
private:
void GetSelectedMemberList(ScDPUniqueStringSet& rEntries, long& rDimension);
diff --git a/sc/source/ui/inc/gridwin.hxx b/sc/source/ui/inc/gridwin.hxx
index ca2a4ce8308d..cdbd9b83f7a0 100644
--- a/sc/source/ui/inc/gridwin.hxx
+++ b/sc/source/ui/inc/gridwin.hxx
@@ -82,7 +82,7 @@ struct SpellCallbackInfo;
// predefines
namespace sdr { namespace overlay { class OverlayObjectList; }}
-class ScGridWindow : public vcl::Window, public DropTargetHelper, public DragSourceHelper
+class SAL_DLLPUBLIC_RTTI ScGridWindow : public vcl::Window, public DropTargetHelper, public
DragSourceHelper
{
// ScFilterListBox is always used for selection list
friend class ScFilterListBox;
diff --git a/sc/source/ui/inc/preview.hxx b/sc/source/ui/inc/preview.hxx
index f3595722398c..69133b9e9c1b 100644
--- a/sc/source/ui/inc/preview.hxx
+++ b/sc/source/ui/inc/preview.hxx
@@ -29,7 +29,7 @@ class ScDocShell;
class ScPreviewShell;
class FmFormView;
-class ScPreview : public vcl::Window
+class SAL_DLLPUBLIC_RTTI ScPreview : public vcl::Window
{
private:
ScMarkData::MarkedTabsType maSelectedTabs;
diff --git a/sc/source/ui/inc/transobj.hxx b/sc/source/ui/inc/transobj.hxx
index 211fa8fc7ef2..5b7f405fb55e 100644
--- a/sc/source/ui/inc/transobj.hxx
+++ b/sc/source/ui/inc/transobj.hxx
@@ -36,7 +36,7 @@ namespace com { namespace sun { namespace star {
}
}}}
-class ScTransferObj : public TransferableHelper
+class SAL_DLLPUBLIC_RTTI ScTransferObj : public TransferableHelper
{
private:
ScDocumentUniquePtr m_pDoc;
diff --git a/sd/inc/CustomAnimationEffect.hxx b/sd/inc/CustomAnimationEffect.hxx
index d27a4c13efcb..f60e350ba3cf 100644
--- a/sd/inc/CustomAnimationEffect.hxx
+++ b/sd/inc/CustomAnimationEffect.hxx
@@ -365,7 +365,7 @@ private:
typedef std::shared_ptr< InteractiveSequence > InteractiveSequencePtr;
typedef std::vector< InteractiveSequencePtr > InteractiveSequenceVector;
-class MainSequence : public EffectSequenceHelper, public ISequenceListener
+class SAL_DLLPUBLIC_RTTI MainSequence : public EffectSequenceHelper, public ISequenceListener
{
friend class UndoAnimation;
friend class MainSequenceRebuildGuard;
diff --git a/sd/inc/sdmod.hxx b/sd/inc/sdmod.hxx
index 65d9cdedf4e7..8fedd75ae242 100644
--- a/sd/inc/sdmod.hxx
+++ b/sd/inc/sdmod.hxx
@@ -69,7 +69,7 @@ typedef std::map< sal_uInt32, css::uno::Sequence< css::uno::Type> > SdTypesCache
*/
-class SdModule final : public SfxModule, public SfxListener
+class SAL_DLLPUBLIC_RTTI SdModule final : public SfxModule, public SfxListener
{
public:
SFX_DECL_INTERFACE(SD_IF_SDAPP)
diff --git a/sd/inc/stlpool.hxx b/sd/inc/stlpool.hxx
index f4cf930d26e3..d1fd4505fc80 100644
--- a/sd/inc/stlpool.hxx
+++ b/sd/inc/stlpool.hxx
@@ -45,7 +45,7 @@ typedef ::cppu::ImplInheritanceHelper< SfxStyleSheetPool,
css::container::XNameAccess,
css::lang::XComponent > SdStyleSheetPoolBase;
-class SdStyleSheetPool final : public SdStyleSheetPoolBase, public SfxListener
+class SAL_DLLPUBLIC_RTTI SdStyleSheetPool final : public SdStyleSheetPoolBase, public SfxListener
{
friend class SdDrawDocument;
public:
diff --git a/sd/source/ui/inc/DrawViewShell.hxx b/sd/source/ui/inc/DrawViewShell.hxx
index df5590cfebd3..713cac92c2fc 100644
--- a/sd/source/ui/inc/DrawViewShell.hxx
+++ b/sd/source/ui/inc/DrawViewShell.hxx
@@ -65,7 +65,7 @@ class ViewOverlayManager;
overview over several slides or a textual
overview over the text in an Impress document (OutlineViewShell).
*/
-class DrawViewShell
+class SAL_DLLPUBLIC_RTTI DrawViewShell
: public ViewShell,
public SfxListener,
public utl::ConfigurationListener
diff --git a/sd/source/ui/inc/GraphicViewShell.hxx b/sd/source/ui/inc/GraphicViewShell.hxx
index aea154e7059f..fd79bda658d7 100644
--- a/sd/source/ui/inc/GraphicViewShell.hxx
+++ b/sd/source/ui/inc/GraphicViewShell.hxx
@@ -35,7 +35,7 @@ namespace sd {
ViewShell that turns off some of the features for GraphicViewShell
instances.</p>
*/
-class GraphicViewShell final
+class SAL_DLLPUBLIC_RTTI GraphicViewShell final
: public DrawViewShell
{
public:
diff --git a/sd/source/ui/inc/LayerTabBar.hxx b/sd/source/ui/inc/LayerTabBar.hxx
index 3654f47026ce..2e0bee3aabef 100644
--- a/sd/source/ui/inc/LayerTabBar.hxx
+++ b/sd/source/ui/inc/LayerTabBar.hxx
@@ -31,7 +31,7 @@ namespace sd {
*/
class DrawViewShell;
-class LayerTabBar final
+class SAL_DLLPUBLIC_RTTI LayerTabBar final
: public TabBar,
public DropTargetHelper
{
diff --git a/sd/source/ui/inc/SlideSorterViewShell.hxx b/sd/source/ui/inc/SlideSorterViewShell.hxx
index 196134a32974..43f94f4d60cd 100644
--- a/sd/source/ui/inc/SlideSorterViewShell.hxx
+++ b/sd/source/ui/inc/SlideSorterViewShell.hxx
@@ -35,7 +35,7 @@ namespace sd { namespace slidesorter {
class SlideSorter;
-class SlideSorterViewShell
+class SAL_DLLPUBLIC_RTTI SlideSorterViewShell
: public ViewShell
{
friend class controller::SlotManager;
diff --git a/sd/source/ui/inc/ViewShell.hxx b/sd/source/ui/inc/ViewShell.hxx
index 8b7707504173..dea7dfbfea4c 100644
--- a/sd/source/ui/inc/ViewShell.hxx
+++ b/sd/source/ui/inc/ViewShell.hxx
@@ -86,7 +86,7 @@ static const DrawModeFlags OUTPUT_DRAWMODE_CONTRAST
<p>This class replaces the former ViewShell class.</p>
*/
-class ViewShell
+class SAL_DLLPUBLIC_RTTI ViewShell
: public SfxShell
{
public:
diff --git a/sd/source/ui/slidesorter/inc/controller/SlsClipboard.hxx
b/sd/source/ui/slidesorter/inc/controller/SlsClipboard.hxx
index a77de34d9f18..b79af210bfe5 100644
--- a/sd/source/ui/slidesorter/inc/controller/SlsClipboard.hxx
+++ b/sd/source/ui/slidesorter/inc/controller/SlsClipboard.hxx
@@ -52,7 +52,7 @@ namespace sd { namespace slidesorter { namespace controller {
class SlideSorterController;
-class Clipboard
+class SAL_DLLPUBLIC_RTTI Clipboard
: public ViewClipboard
{
public:
diff --git a/solenv/gbuild/platform/com_GCC_defs.mk b/solenv/gbuild/platform/com_GCC_defs.mk
index 28bb7138d0d7..3946662d8f67 100644
--- a/solenv/gbuild/platform/com_GCC_defs.mk
+++ b/solenv/gbuild/platform/com_GCC_defs.mk
@@ -121,11 +121,10 @@ endif
# If CC or CXX already include -fvisibility=hidden, don't duplicate it
ifeq (,$(filter -fvisibility=hidden,$(CC)))
-gb_VISIBILITY_FLAGS := -fvisibility=hidden
-ifeq ($(COM_IS_CLANG),TRUE)
-ifneq ($(filter -fsanitize=%,$(CC)),)
+ifeq ($(NEED_CLANG_LINUX_UBSAN_RTTI_VISIBILITY),TRUE)
gb_VISIBILITY_FLAGS := -fvisibility-ms-compat
-endif
+else
+gb_VISIBILITY_FLAGS := -fvisibility=hidden
endif
endif
gb_VISIBILITY_FLAGS_CXX := -fvisibility-inlines-hidden
diff --git a/solenv/gbuild/platform/unxgcc.mk b/solenv/gbuild/platform/unxgcc.mk
index 0cd205891d2e..1d6b38cdf8ce 100644
--- a/solenv/gbuild/platform/unxgcc.mk
+++ b/solenv/gbuild/platform/unxgcc.mk
@@ -84,12 +84,10 @@ endif
ifneq ($(HAVE_LD_BSYMBOLIC_FUNCTIONS),)
gb_LinkTarget_LDFLAGS += -Wl,-Bsymbolic-functions
-ifeq ($(COM_IS_CLANG),TRUE)
-ifneq ($(filter -fsanitize=%,$(CC)),)
+ifeq ($(NEED_CLANG_LINUX_UBSAN_RTTI_VISIBILITY),TRUE)
gb_LinkTarget_LDFLAGS += -Wl,--dynamic-list-cpp-typeinfo
endif
endif
-endif
gb_LINKEROPTFLAGS := -Wl,-O1
gb_LINKERSTRIPDEBUGFLAGS := -Wl,-S
diff --git a/sw/inc/AnnotationWin.hxx b/sw/inc/AnnotationWin.hxx
index 5295c93f641e..e4c509641851 100644
--- a/sw/inc/AnnotationWin.hxx
+++ b/sw/inc/AnnotationWin.hxx
@@ -56,7 +56,7 @@ namespace sw { namespace sidebarwindows {
namespace sw { namespace annotation {
-class SwAnnotationWin : public vcl::Window
+class SAL_DLLPUBLIC_RTTI SwAnnotationWin : public vcl::Window
{
public:
SwAnnotationWin( SwEditWin& rEditWin,
diff --git a/sw/inc/PostItMgr.hxx b/sw/inc/PostItMgr.hxx
index b6f8242864f0..d34ae3f34b72 100644
--- a/sw/inc/PostItMgr.hxx
+++ b/sw/inc/PostItMgr.hxx
@@ -124,7 +124,7 @@ class SwNoteProps: public utl::ConfigItem
virtual void Notify( const css::uno::Sequence< OUString >& aPropertyNames ) override;
};
-class SwPostItMgr: public SfxListener
+class SAL_DLLPUBLIC_RTTI SwPostItMgr: public SfxListener
{
private:
SwView* mpView;
diff --git a/sw/inc/authfld.hxx b/sw/inc/authfld.hxx
index ea92f4289d9b..9a9ba06c13c1 100644
--- a/sw/inc/authfld.hxx
+++ b/sw/inc/authfld.hxx
@@ -145,7 +145,7 @@ public:
one of the instances with the same m_nHandle is actually in the document,
they're all cloned via CopyField()...
*/
-class SwAuthorityField : public SwField
+class SAL_DLLPUBLIC_RTTI SwAuthorityField : public SwField
{
rtl::Reference<SwAuthEntry> m_xAuthEntry;
mutable sal_IntPtr m_nTempSequencePos;
diff --git a/sw/inc/dcontact.hxx b/sw/inc/dcontact.hxx
index d19befc69a96..175b98de3231 100644
--- a/sw/inc/dcontact.hxx
+++ b/sw/inc/dcontact.hxx
@@ -302,7 +302,7 @@ bool CheckControlLayer( const SdrObject *pObj );
typedef std::unique_ptr< SwDrawVirtObj, SdrObjectFreeOp > SwDrawVirtObjPtr;
-class SwDrawContact final : public SwContact
+class SAL_DLLPUBLIC_RTTI SwDrawContact final : public SwContact
{
private:
/** anchored drawing object instance for the
diff --git a/sw/inc/docufld.hxx b/sw/inc/docufld.hxx
index d6ff1692e5bf..bdd7fd68756f 100644
--- a/sw/inc/docufld.hxx
+++ b/sw/inc/docufld.hxx
@@ -123,7 +123,7 @@ enum SwJumpEditFormat
JE_FMT_OLE
};
-class SwPageNumberFieldType : public SwFieldType
+class SAL_DLLPUBLIC_RTTI SwPageNumberFieldType : public SwFieldType
{
SvxNumType m_nNumberingType;
bool m_bVirtual;
@@ -196,7 +196,7 @@ public:
virtual bool PutValue( const css::uno::Any& rVal, sal_uInt16 nWhich ) override;
};
-class SwFileNameFieldType : public SwFieldType
+class SAL_DLLPUBLIC_RTTI SwFileNameFieldType : public SwFieldType
{
SwDoc *m_pDoc;
public:
@@ -222,7 +222,7 @@ public:
virtual bool PutValue( const css::uno::Any& rVal, sal_uInt16 nWhich ) override;
};
-class SwTemplNameFieldType : public SwFieldType
+class SAL_DLLPUBLIC_RTTI SwTemplNameFieldType : public SwFieldType
{
SwDoc *m_pDoc;
public:
@@ -244,7 +244,7 @@ public:
};
// Document statistics
-class SwDocStatFieldType : public SwFieldType
+class SAL_DLLPUBLIC_RTTI SwDocStatFieldType : public SwFieldType
{
SwDoc* m_pDoc;
SvxNumType m_nNumberingType;
@@ -276,7 +276,7 @@ public:
virtual bool PutValue( const css::uno::Any& rVal, sal_uInt16 nWhich ) override;
};
-class SwHiddenTextFieldType : public SwFieldType
+class SAL_DLLPUBLIC_RTTI SwHiddenTextFieldType : public SwFieldType
{
bool m_bHidden;
public:
@@ -375,7 +375,7 @@ public:
virtual bool PutValue( const css::uno::Any& rVal, sal_uInt16 nWhich ) override;
};
-class SwMacroFieldType : public SwFieldType
+class SAL_DLLPUBLIC_RTTI SwMacroFieldType : public SwFieldType
{
SwDoc* const m_pDoc;
@@ -423,7 +423,7 @@ public:
static bool isScriptURL( const OUString& str );
};
-class SwPostItFieldType : public SwFieldType
+class SAL_DLLPUBLIC_RTTI SwPostItFieldType : public SwFieldType
{
private:
SwDoc* const mpDoc;
@@ -496,7 +496,7 @@ public:
virtual void dumpAsXml(xmlTextWriterPtr pWriter) const override;
};
-class SwDocInfoFieldType : public SwValueFieldType
+class SAL_DLLPUBLIC_RTTI SwDocInfoFieldType : public SwValueFieldType
{
public:
SwDocInfoFieldType(SwDoc* pDc);
@@ -573,7 +573,7 @@ protected:
};
// Relative page numbering.
-class SwRefPageSetField : public SwField
+class SAL_DLLPUBLIC_RTTI SwRefPageSetField : public SwField
{
short m_nOffset;
bool m_bOn;
@@ -680,7 +680,7 @@ public:
virtual std::unique_ptr<SwFieldType> Copy() const override;
};
-class SwScriptField : public SwField
+class SAL_DLLPUBLIC_RTTI SwScriptField : public SwField
{
OUString m_sType; ///< Type of Code (Java/VBScript/...)
OUString m_sCode; /**< Code as text.
@@ -711,7 +711,7 @@ public:
};
// Combined Character Fieldtype
-class SwCombinedCharFieldType : public SwFieldType
+class SAL_DLLPUBLIC_RTTI SwCombinedCharFieldType : public SwFieldType
{
public:
SwCombinedCharFieldType();
diff --git a/sw/inc/expfld.hxx b/sw/inc/expfld.hxx
index 23d00b3d9fbb..dcd1354619b3 100644
--- a/sw/inc/expfld.hxx
+++ b/sw/inc/expfld.hxx
@@ -67,7 +67,7 @@ public:
void Clear() { maData.clear(); }
};
-class SwGetExpFieldType : public SwValueFieldType
+class SAL_DLLPUBLIC_RTTI SwGetExpFieldType : public SwValueFieldType
{
public:
SwGetExpFieldType(SwDoc* pDoc);
@@ -268,7 +268,7 @@ inline bool SwSetExpField::GetInputFlag() const
inline bool SwSetExpField::IsSequenceField() const
{ return 0 != (nsSwGetSetExpType::GSE_SEQ &
static_cast<SwSetExpFieldType*>(GetTyp())->GetType()); }
-class SwInputFieldType : public SwFieldType
+class SAL_DLLPUBLIC_RTTI SwInputFieldType : public SwFieldType
{
SwDoc* const mpDoc;
public:
diff --git a/sw/inc/flddat.hxx b/sw/inc/flddat.hxx
index 38ea963196b9..bdc7c93a2c10 100644
--- a/sw/inc/flddat.hxx
+++ b/sw/inc/flddat.hxx
@@ -32,7 +32,7 @@ enum SwDateSubFormat
DATE_VAR
};
-class SwDateTimeFieldType : public SwValueFieldType
+class SAL_DLLPUBLIC_RTTI SwDateTimeFieldType : public SwValueFieldType
{
public:
SwDateTimeFieldType(SwDoc* pDoc);
diff --git a/sw/inc/flddropdown.hxx b/sw/inc/flddropdown.hxx
index cc29a2e84c7f..2fbf8d0b6bb2 100644
--- a/sw/inc/flddropdown.hxx
+++ b/sw/inc/flddropdown.hxx
@@ -28,7 +28,7 @@
/**
Field type for dropdown boxes.
*/
-class SwDropDownFieldType : public SwFieldType
+class SAL_DLLPUBLIC_RTTI SwDropDownFieldType : public SwFieldType
{
public:
/**
diff --git a/sw/inc/fmtautofmt.hxx b/sw/inc/fmtautofmt.hxx
index 76527f90ddfe..0863ca5e7c1b 100644
--- a/sw/inc/fmtautofmt.hxx
+++ b/sw/inc/fmtautofmt.hxx
@@ -22,7 +22,7 @@
#include <svl/poolitem.hxx>
#include <memory>
-class SwFormatAutoFormat: public SfxPoolItem
+class SAL_DLLPUBLIC_RTTI SwFormatAutoFormat: public SfxPoolItem
{
std::shared_ptr<SfxItemSet> mpHandle;
diff --git a/sw/inc/fmtflcnt.hxx b/sw/inc/fmtflcnt.hxx
index 18ba66c2fb48..ffe143e434f6 100644
--- a/sw/inc/fmtflcnt.hxx
+++ b/sw/inc/fmtflcnt.hxx
@@ -29,7 +29,7 @@ class SwTextFlyCnt;
*
* A pool item that is attached to the placeholder character of an as-character frame.
(TextFrame, etc.)
*/
-class SwFormatFlyCnt : public SfxPoolItem
+class SAL_DLLPUBLIC_RTTI SwFormatFlyCnt : public SfxPoolItem
{
friend class SwTextFlyCnt;
SwTextFlyCnt* m_pTextAttr;
diff --git a/sw/inc/fmtrfmrk.hxx b/sw/inc/fmtrfmrk.hxx
index b235961baf5b..0b10bfeb8ed6 100644
--- a/sw/inc/fmtrfmrk.hxx
+++ b/sw/inc/fmtrfmrk.hxx
@@ -33,7 +33,7 @@ class SwTextRefMark;
// ATT_REFMARK
-class SwFormatRefMark
+class SAL_DLLPUBLIC_RTTI SwFormatRefMark
: public SfxPoolItem
, public SwModify
, public sw::BroadcasterMixin
diff --git a/sw/inc/grfatr.hxx b/sw/inc/grfatr.hxx
index 6cdd70b9a768..87db52a36ab9 100644
--- a/sw/inc/grfatr.hxx
+++ b/sw/inc/grfatr.hxx
@@ -77,7 +77,7 @@ public:
virtual SfxPoolItem* Clone( SfxItemPool *pPool = nullptr ) const override;
};
-class SwRotationGrf : public SfxUInt16Item
+class SAL_DLLPUBLIC_RTTI SwRotationGrf : public SfxUInt16Item
{
private:
Size const aUnrotatedSize;
diff --git a/sw/inc/modcfg.hxx b/sw/inc/modcfg.hxx
index 795d1f382fdc..e7854ef8fb9f 100644
--- a/sw/inc/modcfg.hxx
+++ b/sw/inc/modcfg.hxx
@@ -57,7 +57,7 @@ public:
void Insert(InsCaptionOpt* pObj);
};
-class SwRevisionConfig : public utl::ConfigItem
+class SAL_DLLPUBLIC_RTTI SwRevisionConfig : public utl::ConfigItem
{
friend class SwModuleOptions;
@@ -90,7 +90,7 @@ enum class SwCompareMode
ByChar
};
-class SwCompareConfig : public utl::ConfigItem
+class SAL_DLLPUBLIC_RTTI SwCompareConfig : public utl::ConfigItem
{
friend class SwModuleOptions;
@@ -114,7 +114,7 @@ public:
using ConfigItem::SetModified;
};
-class SwInsertConfig : public utl::ConfigItem
+class SAL_DLLPUBLIC_RTTI SwInsertConfig : public utl::ConfigItem
{
friend class SwModuleOptions;
@@ -142,7 +142,7 @@ public:
using ConfigItem::SetModified;
};
-class SwTableConfig : public utl::ConfigItem
+class SAL_DLLPUBLIC_RTTI SwTableConfig : public utl::ConfigItem
{
friend class SwModuleOptions;
@@ -170,7 +170,7 @@ public:
using ConfigItem::SetModified;
};
-class SwMiscConfig : public utl::ConfigItem
+class SAL_DLLPUBLIC_RTTI SwMiscConfig : public utl::ConfigItem
{
friend class SwModuleOptions;
diff --git a/sw/inc/node.hxx b/sw/inc/node.hxx
index 1b53254083de..d1e0f36fcae7 100644
--- a/sw/inc/node.hxx
+++ b/sw/inc/node.hxx
@@ -520,7 +520,7 @@ private:
SwTableNode & operator= ( const SwTableNode & rNode ) = delete;
};
-class SwSectionNode
+class SAL_DLLPUBLIC_RTTI SwSectionNode
: public SwStartNode
{
friend class SwNodes;
diff --git a/sw/inc/reffld.hxx b/sw/inc/reffld.hxx
index 4adf0becfc31..f2c61877b180 100644
--- a/sw/inc/reffld.hxx
+++ b/sw/inc/reffld.hxx
@@ -60,7 +60,7 @@ enum REFERENCEMARK
/// Get reference.
-class SwGetRefFieldType : public SwFieldType
+class SAL_DLLPUBLIC_RTTI SwGetRefFieldType : public SwFieldType
{
SwDoc* m_pDoc;
protected:
diff --git a/sw/inc/swatrset.hxx b/sw/inc/swatrset.hxx
index d446dcddcc51..48cc2d6f0e20 100644
--- a/sw/inc/swatrset.hxx
+++ b/sw/inc/swatrset.hxx
@@ -132,7 +132,7 @@ namespace vcl {
typedef OutputDevice RenderContext;
};
-class SwAttrPool : public SfxItemPool
+class SAL_DLLPUBLIC_RTTI SwAttrPool : public SfxItemPool
{
private:
// helpers to add/rmove DrawingLayer ItemPool, used in constructor
diff --git a/sw/inc/txtfld.hxx b/sw/inc/txtfld.hxx
index 38ca9caa6251..0db27ba5818a 100644
--- a/sw/inc/txtfld.hxx
+++ b/sw/inc/txtfld.hxx
@@ -28,7 +28,7 @@
class SwPaM;
class SwTextNode;
-class SwTextField : public virtual SwTextAttr
+class SAL_DLLPUBLIC_RTTI SwTextField : public virtual SwTextAttr
{
mutable OUString m_aExpand; // only used to determine, if field content is changing in
<ExpandTextField()>
SwTextNode * m_pTextNode;
diff --git a/sw/inc/txttxmrk.hxx b/sw/inc/txttxmrk.hxx
index 2329c1c5012e..a0c26987b707 100644
--- a/sw/inc/txttxmrk.hxx
+++ b/sw/inc/txttxmrk.hxx
@@ -25,7 +25,7 @@ class SwTextNode;
class SwDoc;
// Attribute for indices/tables of contents.
-class SwTextTOXMark : public SwTextAttrEnd
+class SAL_DLLPUBLIC_RTTI SwTextTOXMark : public SwTextAttrEnd
{
SwTextNode * m_pTextNode;
sal_Int32 * m_pEnd; // 0 if SwTOXMark without AlternativeText
diff --git a/sw/inc/unocrsr.hxx b/sw/inc/unocrsr.hxx
index bcc0a5f27ae8..9a10a891c032 100644
--- a/sw/inc/unocrsr.hxx
+++ b/sw/inc/unocrsr.hxx
@@ -32,7 +32,7 @@ namespace sw
};
}
-class SwUnoCursor : public virtual SwCursor
+class SAL_DLLPUBLIC_RTTI SwUnoCursor : public virtual SwCursor
{
private:
bool m_bRemainInSection : 1;
diff --git a/sw/source/core/inc/DocumentRedlineManager.hxx
b/sw/source/core/inc/DocumentRedlineManager.hxx
index 8412e9a57c04..f962d4fb6a70 100644
--- a/sw/source/core/inc/DocumentRedlineManager.hxx
+++ b/sw/source/core/inc/DocumentRedlineManager.hxx
@@ -28,7 +28,7 @@ class SwDoc;
namespace sw
{
-class DocumentRedlineManager : public IDocumentRedlineAccess
+class SAL_DLLPUBLIC_RTTI DocumentRedlineManager : public IDocumentRedlineAccess
{
public:
DocumentRedlineManager( SwDoc& i_rSwdoc );
diff --git a/sw/source/core/inc/UndoManager.hxx b/sw/source/core/inc/UndoManager.hxx
index 3f7d9b34f631..fda9c734a7e6 100644
--- a/sw/source/core/inc/UndoManager.hxx
+++ b/sw/source/core/inc/UndoManager.hxx
@@ -33,7 +33,7 @@ class SwView;
namespace sw {
-class UndoManager
+class SAL_DLLPUBLIC_RTTI UndoManager
: public IDocumentUndoRedo
, public SdrUndoManager
{
diff --git a/sw/source/core/inc/ftnboss.hxx b/sw/source/core/inc/ftnboss.hxx
index ba363e53a2f7..6e1f5c24fd67 100644
--- a/sw/source/core/inc/ftnboss.hxx
+++ b/sw/source/core/inc/ftnboss.hxx
@@ -45,7 +45,7 @@ enum class SwNeighbourAdjust {
typedef std::vector<SwFootnoteFrame*> SwFootnoteFrames;
-class SwFootnoteBossFrame: public SwLayoutFrame
+class SAL_DLLPUBLIC_RTTI SwFootnoteBossFrame: public SwLayoutFrame
{
// for private footnote operations
friend class SwFrame;
diff --git a/sw/source/core/inc/pagefrm.hxx b/sw/source/core/inc/pagefrm.hxx
index 887c2ba07c7f..39fdce0d7cc6 100644
--- a/sw/source/core/inc/pagefrm.hxx
+++ b/sw/source/core/inc/pagefrm.hxx
@@ -37,7 +37,7 @@ class SwAnchoredObject;
/// A page of the document layout. Upper frame is expected to be an SwRootFrame
/// instance. At least an SwBodyFrame lower is expected.
-class SwPageFrame: public SwFootnoteBossFrame
+class SAL_DLLPUBLIC_RTTI SwPageFrame: public SwFootnoteBossFrame
{
friend class SwFrame;
diff --git a/sw/source/core/inc/rootfrm.hxx b/sw/source/core/inc/rootfrm.hxx
index d9893e6e31f9..91244888ce86 100644
--- a/sw/source/core/inc/rootfrm.hxx
+++ b/sw/source/core/inc/rootfrm.hxx
@@ -77,7 +77,7 @@ using SwDestroyList = std::set<SwSectionFrame*>;
/// The root element of a Writer document layout. Lower frames are expected to
/// be SwPageFrame instances.
-class SwRootFrame: public SwLayoutFrame
+class SAL_DLLPUBLIC_RTTI SwRootFrame: public SwLayoutFrame
{
// Needs to disable the Superfluous temporarily
friend void AdjustSizeChgNotify( SwRootFrame *pRoot );
diff --git a/sw/source/uibase/inc/chldwrap.hxx b/sw/source/uibase/inc/chldwrap.hxx
index 0ff0823950b8..b6f5b41ab3b1 100644
--- a/sw/source/uibase/inc/chldwrap.hxx
+++ b/sw/source/uibase/inc/chldwrap.hxx
@@ -24,7 +24,7 @@
class SwDocShell;
-class SwChildWinWrapper : public SfxChildWindow
+class SAL_DLLPUBLIC_RTTI SwChildWinWrapper : public SfxChildWindow
{
Timer m_aUpdateTimer;
SwDocShell* m_pDocSh;
diff --git a/sw/source/uibase/inc/pview.hxx b/sw/source/uibase/inc/pview.hxx
index cb4b6f5a788e..53b8decd504e 100644
--- a/sw/source/uibase/inc/pview.hxx
+++ b/sw/source/uibase/inc/pview.hxx
@@ -43,7 +43,7 @@ class SvtAccessibilityOptions;
class SwPagePreviewLayout;
// Delete member <mnVirtPage> and its accessor
-class SwPagePreviewWin : public vcl::Window
+class SAL_DLLPUBLIC_RTTI SwPagePreviewWin : public vcl::Window
{
SwViewShell* mpViewShell;
sal_uInt16 mnSttPage;