summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2015-01-26 14:57:05 +0100
committerStephan Bergmann <sbergman@redhat.com>2015-01-26 15:17:28 +0100
commit598d8194b0ea1a64e0ebba28a86c128bafa57c7c (patch)
treec81c2a85795c6218327d2c40dc2a52850a7d22ef
parent64235bc9896911b4abfca47089ac1e71056afea7 (diff)
Visible function type RTTI for Clang -fsanitize=function
...by adding some further SAL_DLLPUBLIC_RTTI type annotations (cf. b4f6b26b5a1a78fecfa95ec2eb7ac8b80495d8aa "SAL_DLLPUBLIC_RTTI for proper RTTI visibility for LLVM") and by making sure relevant function types do not use incomplete types in their parameter and return types (which would make the RTTI hidden). Change-Id: Id7aadcbc0704b9759968ae36266fc9ce11a2e340
-rw-r--r--drawinglayer/source/drawinglayeruno/xprimitive2drenderer.cxx1
-rw-r--r--filter/source/graphicfilter/ipict/ipict.cxx3
-rw-r--r--include/com/sun/star/uno/Any.h2
-rw-r--r--include/com/sun/star/uno/Reference.h2
-rw-r--r--include/com/sun/star/uno/Sequence.h2
-rw-r--r--include/com/sun/star/uno/Type.h2
-rw-r--r--include/registry/regtype.h6
-rw-r--r--include/rtl/alloc.h2
-rw-r--r--include/rtl/string.hxx2
-rw-r--r--include/rtl/unload.h2
-rw-r--r--include/rtl/ustring.h2
-rw-r--r--include/rtl/ustring.hxx2
-rw-r--r--include/sfx2/childwin.hxx8
-rw-r--r--include/tools/ref.hxx2
-rw-r--r--include/typelib/typedescription.h6
-rw-r--r--include/uno/any2.h2
-rw-r--r--include/uno/dispatcher.h2
-rw-r--r--include/uno/environment.h4
-rw-r--r--include/uno/mapping.h2
-rw-r--r--package/source/xstor/xfactory.cxx3
-rw-r--r--sal/textenc/tenchelp.hxx2
-rw-r--r--sc/inc/filter.hxx2
-rw-r--r--sc/source/ui/view/tabvwsh.cxx3
-rw-r--r--sd/source/filter/eppt/eppt.cxx3
-rw-r--r--sd/source/filter/html/HtmlOptionsDialog.cxx1
-rw-r--r--svl/source/uno/pathservice.cxx1
-rw-r--r--sw/qa/extras/ooxmlexport/data/fdo79822-SPECIAL.docxbin0 -> 39108 bytes
-rw-r--r--sw/source/uibase/web/wdocsh.cxx3
-rw-r--r--sw/source/uibase/web/wformsh.cxx3
-rw-r--r--sw/source/uibase/web/wfrmsh.cxx3
-rw-r--r--sw/source/uibase/web/wgrfsh.cxx3
-rw-r--r--sw/source/uibase/web/wlistsh.cxx3
-rw-r--r--sw/source/uibase/web/wtabsh.cxx3
-rw-r--r--sw/source/uibase/web/wtextsh.cxx3
-rw-r--r--sw/source/uibase/web/wview.cxx3
-rw-r--r--vcl/inc/salframe.hxx4
-rw-r--r--vcl/inc/unx/desktops.hxx6
-rw-r--r--vcl/source/components/dtranscomp.cxx1
-rw-r--r--vcl/source/components/fontident.cxx1
-rw-r--r--xmloff/source/chart/SchXMLExport.cxx1
-rw-r--r--xmloff/source/draw/animationimport.cxx1
-rw-r--r--xmloff/source/meta/MetaImportComponent.cxx1
-rw-r--r--xmloff/source/transform/OOo2Oasis.cxx1
-rw-r--r--xmloff/source/transform/Oasis2OOo.cxx1
44 files changed, 82 insertions, 28 deletions
diff --git a/drawinglayer/source/drawinglayeruno/xprimitive2drenderer.cxx b/drawinglayer/source/drawinglayeruno/xprimitive2drenderer.cxx
index 4ce1d7b71b83..ed5a73043b15 100644
--- a/drawinglayer/source/drawinglayeruno/xprimitive2drenderer.cxx
+++ b/drawinglayer/source/drawinglayeruno/xprimitive2drenderer.cxx
@@ -21,6 +21,7 @@
#include <boost/noncopyable.hpp>
#include <com/sun/star/graphic/XPrimitive2DRenderer.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
#include <com/sun/star/lang/XServiceInfo.hpp>
#include <cppuhelper/implbase2.hxx>
#include <cppuhelper/supportsservice.hxx>
diff --git a/filter/source/graphicfilter/ipict/ipict.cxx b/filter/source/graphicfilter/ipict/ipict.cxx
index 19e1a75e3ffc..683819cab047 100644
--- a/filter/source/graphicfilter/ipict/ipict.cxx
+++ b/filter/source/graphicfilter/ipict/ipict.cxx
@@ -30,7 +30,8 @@
#include "shape.hxx"
#include <boost/scoped_array.hpp>
-class FilterConfigItem;
+#include <vcl/FilterConfigItem.hxx>
+ // complete FilterConfigItem for GraphicImport under -fsanitize=function
namespace PictReaderInternal {
//! utilitary class to store a pattern, ...
diff --git a/include/com/sun/star/uno/Any.h b/include/com/sun/star/uno/Any.h
index 2f44d741bcd2..ea69ec7e696d 100644
--- a/include/com/sun/star/uno/Any.h
+++ b/include/com/sun/star/uno/Any.h
@@ -46,7 +46,7 @@ class Type;
return true if the any contains an assignable value (no data loss), e.g. the any contains a
short and you >>= it into a long variable.
*/
-class SAL_WARN_UNUSED Any : public uno_Any
+class SAL_WARN_UNUSED SAL_DLLPUBLIC_RTTI Any : public uno_Any
{
public:
/// @cond INTERNAL
diff --git a/include/com/sun/star/uno/Reference.h b/include/com/sun/star/uno/Reference.h
index 47a5c171e2d1..91db7f59cb65 100644
--- a/include/com/sun/star/uno/Reference.h
+++ b/include/com/sun/star/uno/Reference.h
@@ -213,7 +213,7 @@ template< typename T2 > struct UpCast< XInterface, T2 > {};
for reference type.
*/
template< class interface_type >
-class Reference : public BaseReference
+class SAL_DLLPUBLIC_RTTI Reference : public BaseReference
{
/** Queries given interface for type interface_type.
diff --git a/include/com/sun/star/uno/Sequence.h b/include/com/sun/star/uno/Sequence.h
index 21e3e9df6156..b52894ddbc32 100644
--- a/include/com/sun/star/uno/Sequence.h
+++ b/include/com/sun/star/uno/Sequence.h
@@ -52,7 +52,7 @@ namespace uno
@tparam E element type of sequence
*/
template< class E >
-class SAL_WARN_UNUSED Sequence
+class SAL_WARN_UNUSED SAL_DLLPUBLIC_RTTI Sequence
{
/** sequence handle
*/
diff --git a/include/com/sun/star/uno/Type.h b/include/com/sun/star/uno/Type.h
index 45a866013747..c1d0590482ef 100644
--- a/include/com/sun/star/uno/Type.h
+++ b/include/com/sun/star/uno/Type.h
@@ -51,7 +51,7 @@ enum UnoType_NoAcquire
@see typelib_TypeDescriptionReference
*/
-class SAL_WARN_UNUSED Type
+class SAL_WARN_UNUSED SAL_DLLPUBLIC_RTTI Type
{
/** the C typelib reference pointer
*/
diff --git a/include/registry/regtype.h b/include/registry/regtype.h
index b08db8137852..79c3d993537d 100644
--- a/include/registry/regtype.h
+++ b/include/registry/regtype.h
@@ -50,7 +50,7 @@ typedef sal_uInt16 RegAccessMode;
a value and link keys which navigate over the linktarget to an existing
other key (which are no longer supported).
*/
-enum RegKeyType
+enum SAL_DLLPUBLIC_RTTI RegKeyType
{
/// represents a real key
RG_KEYTYPE,
@@ -66,7 +66,7 @@ enum RegKeyType
to define own data structures and store these types in the registry. The UNO
core reflection data is stored as a binary blob in the type registry.
*/
-enum RegValueType
+enum SAL_DLLPUBLIC_RTTI RegValueType
{
/// The key has no value or the value type is unknown.
RG_VALUETYPE_NOT_DEFINED,
@@ -87,7 +87,7 @@ enum RegValueType
};
/// specifies the possible error codes which can occur using the registry API.
-enum RegError
+enum SAL_DLLPUBLIC_RTTI RegError
{
/// no error.
REG_NO_ERROR,
diff --git a/include/rtl/alloc.h b/include/rtl/alloc.h
index 6a804928669c..835db155ac44 100644
--- a/include/rtl/alloc.h
+++ b/include/rtl/alloc.h
@@ -131,7 +131,7 @@ SAL_DLLPUBLIC void SAL_CALL rtl_freeAlignedMemory (
/** Opaque rtl_arena_type.
*/
-typedef struct rtl_arena_st rtl_arena_type;
+typedef struct SAL_DLLPUBLIC_RTTI rtl_arena_st rtl_arena_type;
#define RTL_ARENA_NAME_LENGTH 31
diff --git a/include/rtl/string.hxx b/include/rtl/string.hxx
index b3a89fc52c3f..94dad50bc3b4 100644
--- a/include/rtl/string.hxx
+++ b/include/rtl/string.hxx
@@ -85,7 +85,7 @@ namespace rtl
use this class.
*/
-class SAL_WARN_UNUSED OString
+class SAL_WARN_UNUSED SAL_DLLPUBLIC_RTTI OString
{
public:
/// @cond INTERNAL
diff --git a/include/rtl/unload.h b/include/rtl/unload.h
index f29a7543de96..53a5df18f515 100644
--- a/include/rtl/unload.h
+++ b/include/rtl/unload.h
@@ -39,7 +39,7 @@ extern "C"
@deprecated Do not use.
*/
-typedef struct _rtl_ModuleCount
+typedef struct SAL_DLLPUBLIC_RTTI _rtl_ModuleCount
{
void ( SAL_CALL * acquire ) ( struct _rtl_ModuleCount * that );
void ( SAL_CALL * release ) ( struct _rtl_ModuleCount * that );
diff --git a/include/rtl/ustring.h b/include/rtl/ustring.h
index 80c6bccf7f3d..8dd70cb4911f 100644
--- a/include/rtl/ustring.h
+++ b/include/rtl/ustring.h
@@ -1173,7 +1173,7 @@ SAL_DLLPUBLIC double SAL_CALL rtl_ustr_toDouble(
/** @cond INTERNAL */
/** The implementation of a Unicode string.
*/
-typedef struct _rtl_uString
+typedef struct SAL_DLLPUBLIC_RTTI _rtl_uString
{
oslInterlockedCount refCount; /* opaque */
sal_Int32 length;
diff --git a/include/rtl/ustring.hxx b/include/rtl/ustring.hxx
index 418892670596..78a6b60f1c17 100644
--- a/include/rtl/ustring.hxx
+++ b/include/rtl/ustring.hxx
@@ -111,7 +111,7 @@ template<char C> struct SAL_WARN_UNUSED OUStringLiteral1 {
less people should have understanding problems when they use this class.
*/
-class SAL_WARN_UNUSED OUString
+class SAL_WARN_UNUSED SAL_DLLPUBLIC_RTTI OUString
{
public:
/// @cond INTERNAL
diff --git a/include/sfx2/childwin.hxx b/include/sfx2/childwin.hxx
index d4a8efbcc494..a768e82cf919 100644
--- a/include/sfx2/childwin.hxx
+++ b/include/sfx2/childwin.hxx
@@ -20,6 +20,7 @@
#define INCLUDED_SFX2_CHILDWIN_HXX
#include <sal/config.h>
+
#include <sfx2/dllapi.h>
#include <sal/types.h>
#include <vcl/window.hxx>
@@ -28,9 +29,12 @@
#include <sfx2/shell.hxx>
#include <sfx2/chalign.hxx>
+#include <sfx2/bindings.hxx>
+ // complete SfxBindings for complete SfxChildWinCtor, SfxChildWinContextCtor
+ // under -fsanitize=function
+
class SfxWorkWindow;
class SfxModule;
-class SfxBindings;
class SfxShell;
class SfxChildWindow;
class SfxChildWindowContext;
@@ -45,7 +49,7 @@ class SfxChildWindowContext;
#define CHILDWIN_NOPOS USHRT_MAX
// ChildWindow Configuration
-struct SfxChildWinInfo
+struct SAL_DLLPUBLIC_RTTI SfxChildWinInfo
{
bool bVisible;
Point aPos;
diff --git a/include/tools/ref.hxx b/include/tools/ref.hxx
index aecc2b379e00..a2cba5088fad 100644
--- a/include/tools/ref.hxx
+++ b/include/tools/ref.hxx
@@ -33,7 +33,7 @@
namespace tools {
/** T must be a class that extends SvRefBase */
-template<typename T> class SvRef {
+template<typename T> class SAL_DLLPUBLIC_RTTI SvRef {
public:
SvRef(): pObj(0) {}
diff --git a/include/typelib/typedescription.h b/include/typelib/typedescription.h
index 2b7314f20b6f..8ed5ce068e58 100644
--- a/include/typelib/typedescription.h
+++ b/include/typelib/typedescription.h
@@ -37,7 +37,7 @@ struct _typelib_TypeDescription;
/** Holds a weak reference to a type description.
*/
-typedef struct _typelib_TypeDescriptionReference
+typedef struct SAL_DLLPUBLIC_RTTI _typelib_TypeDescriptionReference
{
/** reference count of type; don't ever modify this by yourself, use
typelib_typedescriptionreference_acquire() and typelib_typedescriptionreference_release()
@@ -68,7 +68,7 @@ typedef struct _typelib_TypeDescriptionReference
typelib_TypeDescriptionReference for the first six members.
So a typedescription can be used as type reference.
*/
-typedef struct _typelib_TypeDescription
+typedef struct SAL_DLLPUBLIC_RTTI _typelib_TypeDescription
{
/** reference count; don't ever modify this by yourself, use
typelib_typedescription_acquire() and typelib_typedescription_release()
@@ -367,7 +367,7 @@ typedef struct _typelib_InterfaceAttributeTypeDescription
<code>typelib_typedescription_complete</code>.</li>
</ul>
*/
-typedef struct _typelib_InterfaceTypeDescription
+typedef struct SAL_DLLPUBLIC_RTTI _typelib_InterfaceTypeDescription
{
/** inherits all members of typelib_TypeDescription
*/
diff --git a/include/uno/any2.h b/include/uno/any2.h
index 49a0d35e4c8b..556476dd5d89 100644
--- a/include/uno/any2.h
+++ b/include/uno/any2.h
@@ -37,7 +37,7 @@ struct _uno_Mapping;
/** This is the binary specification of an UNO any.
*/
-typedef struct _uno_Any
+typedef struct SAL_DLLPUBLIC_RTTI _uno_Any
{
/** type of value
*/
diff --git a/include/uno/dispatcher.h b/include/uno/dispatcher.h
index 71d1563db09a..d4bde04d077e 100644
--- a/include/uno/dispatcher.h
+++ b/include/uno/dispatcher.h
@@ -58,7 +58,7 @@ typedef void (SAL_CALL * uno_DispatchMethod)(
/** The binary C uno interface description.
*/
-typedef struct _uno_Interface
+typedef struct SAL_DLLPUBLIC_RTTI _uno_Interface
{
/** Acquires uno interface.
diff --git a/include/uno/environment.h b/include/uno/environment.h
index f9ab4e68cae9..d0051227ac69 100644
--- a/include/uno/environment.h
+++ b/include/uno/environment.h
@@ -38,7 +38,7 @@ struct _typelib_InterfaceTypeDescription;
/** The binary specification of an UNO environment.
*/
-typedef struct _uno_Environment
+typedef struct SAL_DLLPUBLIC_RTTI _uno_Environment
{
/** reserved for future use (0 if not used)
*/
@@ -130,7 +130,7 @@ typedef void * (SAL_CALL * uno_memAlloc)( sal_Size nBytes );
/** The binary specification of an UNO environment supporting interface registration.
*/
-typedef struct _uno_ExtEnvironment
+typedef struct SAL_DLLPUBLIC_RTTI _uno_ExtEnvironment
{
/** inherits all members of an uno_Environment
*/
diff --git a/include/uno/mapping.h b/include/uno/mapping.h
index 7673514e0a2d..5a55fbf68b45 100644
--- a/include/uno/mapping.h
+++ b/include/uno/mapping.h
@@ -61,7 +61,7 @@ typedef void (SAL_CALL * uno_MapInterfaceFunc)(
/** This is the binary specification of a mapping.
*/
-typedef struct _uno_Mapping
+typedef struct SAL_DLLPUBLIC_RTTI _uno_Mapping
{
/** Acquires mapping
*/
diff --git a/package/source/xstor/xfactory.cxx b/package/source/xstor/xfactory.cxx
index 11391e4897e9..95bb21a84622 100644
--- a/package/source/xstor/xfactory.cxx
+++ b/package/source/xstor/xfactory.cxx
@@ -17,6 +17,9 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
+#include <sal/config.h>
+
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
#include <com/sun/star/ucb/SimpleFileAccess.hpp>
#include <com/sun/star/embed/ElementModes.hpp>
#include <com/sun/star/embed/StorageFormats.hpp>
diff --git a/sal/textenc/tenchelp.hxx b/sal/textenc/tenchelp.hxx
index b2f7fa51995e..410fca891c71 100644
--- a/sal/textenc/tenchelp.hxx
+++ b/sal/textenc/tenchelp.hxx
@@ -87,7 +87,7 @@ struct ImplTextConverter
/* - TextEncoding - Structures - */
/* ----------------------------- */
-struct ImplTextEncodingData
+struct SAL_DLLPUBLIC_RTTI ImplTextEncodingData
{
ImplTextConverter maConverter;
sal_uInt8 mnMinCharSize;
diff --git a/sc/inc/filter.hxx b/sc/inc/filter.hxx
index 4602f19b1c92..40d93fd945ce 100644
--- a/sc/inc/filter.hxx
+++ b/sc/inc/filter.hxx
@@ -79,7 +79,7 @@ class ScEEAbsImport {
SvNumberFormatter* pFormatter = NULL, bool bConvertDate = true ) = 0;
};
-class ScFormatFilterPlugin {
+class SAL_DLLPUBLIC_RTTI ScFormatFilterPlugin {
public:
// various import filters
virtual FltError ScImportLotus123( SfxMedium&, ScDocument*, rtl_TextEncoding eSrc = RTL_TEXTENCODING_DONTKNOW ) = 0;
diff --git a/sc/source/ui/view/tabvwsh.cxx b/sc/source/ui/view/tabvwsh.cxx
index c22278bebbbe..95b3903cf257 100644
--- a/sc/source/ui/view/tabvwsh.cxx
+++ b/sc/source/ui/view/tabvwsh.cxx
@@ -41,6 +41,9 @@
#include "spelldialog.hxx"
#include <searchresults.hxx>
+#include <sfx2/request.hxx>
+ // needed for -fsanitize=function visibility of typeinfo for functions of
+ // type void(SfxShell*,SfxRequest&) defined in scslots.hxx
#define ScTabViewShell
#include "scslots.hxx"
diff --git a/sd/source/filter/eppt/eppt.cxx b/sd/source/filter/eppt/eppt.cxx
index c66192f7e2fa..f4b4d8238fa0 100644
--- a/sd/source/filter/eppt/eppt.cxx
+++ b/sd/source/filter/eppt/eppt.cxx
@@ -55,6 +55,9 @@
#include <oox/ole/olehelper.hxx>
#include <rtl/math.hxx>
+#include <sfx2/objsh.hxx>
+ // complete SfxObjectShell for SaveVBA under -fsanitize=function
+
using namespace com::sun::star;
using namespace ::com::sun::star::uno;
using namespace ::com::sun::star::presentation;
diff --git a/sd/source/filter/html/HtmlOptionsDialog.cxx b/sd/source/filter/html/HtmlOptionsDialog.cxx
index 2945f525af73..d837d87730c8 100644
--- a/sd/source/filter/html/HtmlOptionsDialog.cxx
+++ b/sd/source/filter/html/HtmlOptionsDialog.cxx
@@ -22,6 +22,7 @@
#include <com/sun/star/frame/XModel.hpp>
#include <com/sun/star/document/XViewDataSupplier.hpp>
#include <com/sun/star/container/XIndexAccess.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
#include <com/sun/star/lang/XServiceInfo.hpp>
#include <com/sun/star/uno/Sequence.h>
#include <com/sun/star/uno/Any.h>
diff --git a/svl/source/uno/pathservice.cxx b/svl/source/uno/pathservice.cxx
index 8ad781fd674f..91a640d36347 100644
--- a/svl/source/uno/pathservice.cxx
+++ b/svl/source/uno/pathservice.cxx
@@ -24,6 +24,7 @@
#include <cppuhelper/implbase2.hxx>
#include <cppuhelper/supportsservice.hxx>
#include <com/sun/star/frame/XConfigManager.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
#include <com/sun/star/lang/XServiceInfo.hpp>
#include <registerservices.hxx>
diff --git a/sw/qa/extras/ooxmlexport/data/fdo79822-SPECIAL.docx b/sw/qa/extras/ooxmlexport/data/fdo79822-SPECIAL.docx
new file mode 100644
index 000000000000..48fde879344f
--- /dev/null
+++ b/sw/qa/extras/ooxmlexport/data/fdo79822-SPECIAL.docx
Binary files differ
diff --git a/sw/source/uibase/web/wdocsh.cxx b/sw/source/uibase/web/wdocsh.cxx
index afe87184981f..275fbb0b4617 100644
--- a/sw/source/uibase/web/wdocsh.cxx
+++ b/sw/source/uibase/web/wdocsh.cxx
@@ -33,6 +33,9 @@
#include "wdocsh.hxx"
#include "web.hrc"
+#include <sfx2/request.hxx>
+ // needed for -fsanitize=function visibility of typeinfo for functions of
+ // type void(SfxShell*,SfxRequest&) defined in swslots.hxx
#define SwWebDocShell
#include "swslots.hxx"
diff --git a/sw/source/uibase/web/wformsh.cxx b/sw/source/uibase/web/wformsh.cxx
index 2d1c24f2aa7e..6daf3022188d 100644
--- a/sw/source/uibase/web/wformsh.cxx
+++ b/sw/source/uibase/web/wformsh.cxx
@@ -33,6 +33,9 @@
#include "popup.hrc"
#include "shells.hrc"
+#include <sfx2/request.hxx>
+ // needed for -fsanitize=function visibility of typeinfo for functions of
+ // type void(SfxShell*,SfxRequest&) defined in swslots.hxx
#define SwWebDrawFormShell
#include "swslots.hxx"
diff --git a/sw/source/uibase/web/wfrmsh.cxx b/sw/source/uibase/web/wfrmsh.cxx
index cb49a405a11f..f455f57db584 100644
--- a/sw/source/uibase/web/wfrmsh.cxx
+++ b/sw/source/uibase/web/wfrmsh.cxx
@@ -31,6 +31,9 @@
#include "web.hrc"
// STATIC DATA
+#include <sfx2/request.hxx>
+ // needed for -fsanitize=function visibility of typeinfo for functions of
+ // type void(SfxShell*,SfxRequest&) defined in swslots.hxx
#define SwWebFrameShell
#include <sfx2/msg.hxx>
#include "swslots.hxx"
diff --git a/sw/source/uibase/web/wgrfsh.cxx b/sw/source/uibase/web/wgrfsh.cxx
index 24e83a5a7cff..58a32bd39b27 100644
--- a/sw/source/uibase/web/wgrfsh.cxx
+++ b/sw/source/uibase/web/wgrfsh.cxx
@@ -35,6 +35,9 @@
#include "web.hrc"
#include "wgrfsh.hxx"
+#include <sfx2/request.hxx>
+ // needed for -fsanitize=function visibility of typeinfo for functions of
+ // type void(SfxShell*,SfxRequest&) defined in swslots.hxx
#define SwWebGrfShell
#include "swslots.hxx"
diff --git a/sw/source/uibase/web/wlistsh.cxx b/sw/source/uibase/web/wlistsh.cxx
index ad487d4c5c27..e41c8ad5b8be 100644
--- a/sw/source/uibase/web/wlistsh.cxx
+++ b/sw/source/uibase/web/wlistsh.cxx
@@ -31,6 +31,9 @@
#include "uinums.hxx"
#include "wlistsh.hxx"
+#include <sfx2/request.hxx>
+ // needed for -fsanitize=function visibility of typeinfo for functions of
+ // type void(SfxShell*,SfxRequest&) defined in swslots.hxx
#define SwWebListShell
#include "swslots.hxx"
diff --git a/sw/source/uibase/web/wtabsh.cxx b/sw/source/uibase/web/wtabsh.cxx
index c42fab259d00..a50e56617ca7 100644
--- a/sw/source/uibase/web/wtabsh.cxx
+++ b/sw/source/uibase/web/wtabsh.cxx
@@ -33,6 +33,9 @@
#include "wrtsh.hxx"
#include "wtabsh.hxx"
+#include <sfx2/request.hxx>
+ // needed for -fsanitize=function visibility of typeinfo for functions of
+ // type void(SfxShell*,SfxRequest&) defined in swslots.hxx
#define SwWebTableShell
#include <sfx2/msg.hxx>
#include "svx/svxids.hrc"
diff --git a/sw/source/uibase/web/wtextsh.cxx b/sw/source/uibase/web/wtextsh.cxx
index b45bdc17e395..a572f85b1361 100644
--- a/sw/source/uibase/web/wtextsh.cxx
+++ b/sw/source/uibase/web/wtextsh.cxx
@@ -37,6 +37,9 @@
#include <unomid.h>
// STATIC DATA
+#include <sfx2/request.hxx>
+ // needed for -fsanitize=function visibility of typeinfo for functions of
+ // type void(SfxShell*,SfxRequest&) defined in swslots.hxx
#define SwWebTextShell
#include <sfx2/msg.hxx>
#include "swslots.hxx"
diff --git a/sw/source/uibase/web/wview.cxx b/sw/source/uibase/web/wview.cxx
index c8dffd7261a2..eff5f9b6c713 100644
--- a/sw/source/uibase/web/wview.cxx
+++ b/sw/source/uibase/web/wview.cxx
@@ -60,6 +60,9 @@
#include <web.hrc>
#include <shells.hrc>
+#include <sfx2/request.hxx>
+ // needed for -fsanitize=function visibility of typeinfo for functions of
+ // type void(SfxShell*,SfxRequest&) defined in swslots.hxx
#define SwWebView
#define Text
#define TextInTable
diff --git a/vcl/inc/salframe.hxx b/vcl/inc/salframe.hxx
index 95e8bf2391af..6bbcb29f658f 100644
--- a/vcl/inc/salframe.hxx
+++ b/vcl/inc/salframe.hxx
@@ -34,11 +34,13 @@
#include <rtl/ustring.hxx>
#include <vcl/keycod.hxx>
+#include <vcl/window.hxx>
+ // complete vcl::Window for SalFrame::CallCallback under -fsanitize=function
+
class AllSettings;
class SalGraphics;
class SalBitmap;
class SalMenu;
-namespace vcl { class Window; }
struct SalFrameState;
struct SalInputContext;
diff --git a/vcl/inc/unx/desktops.hxx b/vcl/inc/unx/desktops.hxx
index babb1686e674..e88c47326b28 100644
--- a/vcl/inc/unx/desktops.hxx
+++ b/vcl/inc/unx/desktops.hxx
@@ -20,7 +20,11 @@
#ifndef INCLUDED_VCL_INC_UNX_DESKTOPS_HXX
#define INCLUDED_VCL_INC_UNX_DESKTOPS_HXX
-enum DesktopType {
+#include <sal/config.h>
+
+#include <sal/types.h>
+
+enum SAL_DLLPUBLIC_RTTI DesktopType {
DESKTOP_NONE, // headless, i.e. no X connection at all
DESKTOP_UNKNOWN, // unknown desktop, simple WM, etc.
DESKTOP_GNOME,
diff --git a/vcl/source/components/dtranscomp.cxx b/vcl/source/components/dtranscomp.cxx
index 5b443e264971..05a149008a48 100644
--- a/vcl/source/components/dtranscomp.cxx
+++ b/vcl/source/components/dtranscomp.cxx
@@ -25,6 +25,7 @@
#include "svdata.hxx"
#include "salinst.hxx"
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
#include "com/sun/star/lang/XServiceInfo.hpp"
#include "com/sun/star/lang/XSingleServiceFactory.hpp"
#include "com/sun/star/lang/XInitialization.hpp"
diff --git a/vcl/source/components/fontident.cxx b/vcl/source/components/fontident.cxx
index e5880d3bcd88..a7e6f3672724 100644
--- a/vcl/source/components/fontident.cxx
+++ b/vcl/source/components/fontident.cxx
@@ -23,6 +23,7 @@
#include "factory.hxx"
#include "svdata.hxx"
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
#include <com/sun/star/lang/XServiceInfo.hpp>
#include <com/sun/star/beans/XMaterialHolder.hpp>
#include <com/sun/star/awt/FontDescriptor.hpp>
diff --git a/xmloff/source/chart/SchXMLExport.cxx b/xmloff/source/chart/SchXMLExport.cxx
index f854708f3566..927644570235 100644
--- a/xmloff/source/chart/SchXMLExport.cxx
+++ b/xmloff/source/chart/SchXMLExport.cxx
@@ -52,6 +52,7 @@
#include <algorithm>
#include <com/sun/star/task/XStatusIndicatorSupplier.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
#include <com/sun/star/lang/XServiceInfo.hpp>
#include <com/sun/star/lang/XServiceName.hpp>
#include <com/sun/star/beans/XPropertySet.hpp>
diff --git a/xmloff/source/draw/animationimport.cxx b/xmloff/source/draw/animationimport.cxx
index a72dcedc6fb0..67df98731c51 100644
--- a/xmloff/source/draw/animationimport.cxx
+++ b/xmloff/source/draw/animationimport.cxx
@@ -18,6 +18,7 @@
*/
#include <xmloff/unointerfacetouniqueidentifiermapper.hxx>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
#include <com/sun/star/lang/XServiceInfo.hpp>
#include <com/sun/star/lang/XInitialization.hpp>
#include <com/sun/star/animations/AnimationTransformType.hpp>
diff --git a/xmloff/source/meta/MetaImportComponent.cxx b/xmloff/source/meta/MetaImportComponent.cxx
index 217cc66c102f..0e271094a778 100644
--- a/xmloff/source/meta/MetaImportComponent.cxx
+++ b/xmloff/source/meta/MetaImportComponent.cxx
@@ -23,6 +23,7 @@
#include <xmloff/xmltoken.hxx>
#include <xmloff/xmlmetai.hxx>
#include <xmloff/nmspmap.hxx>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
#include <comphelper/processfactory.hxx>
using namespace ::com::sun::star;
diff --git a/xmloff/source/transform/OOo2Oasis.cxx b/xmloff/source/transform/OOo2Oasis.cxx
index b944dccecf21..6ec9363980de 100644
--- a/xmloff/source/transform/OOo2Oasis.cxx
+++ b/xmloff/source/transform/OOo2Oasis.cxx
@@ -19,6 +19,7 @@
#include <rtl/ustrbuf.hxx>
#include <osl/diagnose.h>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
#include <comphelper/processfactory.hxx>
#include <comphelper/servicehelper.hxx>
#include <sax/tools/converter.hxx>
diff --git a/xmloff/source/transform/Oasis2OOo.cxx b/xmloff/source/transform/Oasis2OOo.cxx
index 519f39d71757..461b8776ddb4 100644
--- a/xmloff/source/transform/Oasis2OOo.cxx
+++ b/xmloff/source/transform/Oasis2OOo.cxx
@@ -18,6 +18,7 @@
*/
#include <com/sun/star/beans/XPropertySetInfo.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
#include <rtl/ustrbuf.hxx>
#include <sax/tools/converter.hxx>
#include <xmloff/nmspmap.hxx>