summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2017-09-27 16:08:59 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2017-09-29 10:37:47 +0200
commita599eeab786ecbe1b5b6509e3c792e5c1ba31248 (patch)
tree73e530ebe30d10eb61856b7c7986ce87eb9705e3
parentloplugin:unusedfields improve finding callee (diff)
downloadcore-a599eeab786ecbe1b5b6509e3c792e5c1ba31248.tar.gz
core-a599eeab786ecbe1b5b6509e3c792e5c1ba31248.zip
check for unnecessary DLLPUBLIC annotations
on classes which are fully defined in a header file Rename the dllprivate plugin to dllmacro and add the functionality there. Change-Id: I4581d551c46a8f61213d95973f323359d08278d8
-rw-r--r--chart2/source/inc/CommonFunctors.hxx8
-rw-r--r--chart2/source/inc/PropertyHelper.hxx2
-rw-r--r--compilerplugins/clang/dllmacro.cxx111
-rw-r--r--compilerplugins/clang/dllprivate.cxx79
-rw-r--r--connectivity/source/inc/RowFunctionParser.hxx2
-rw-r--r--desktop/source/deployment/inc/dp_ucb.h2
-rw-r--r--include/basegfx/color/bcolor.hxx2
-rw-r--r--include/basegfx/matrix/b2dhommatrixtools.hxx2
-rw-r--r--include/basegfx/numeric/ftools.hxx2
-rw-r--r--include/basegfx/pixel/bpixel.hxx2
-rw-r--r--include/comphelper/propertycontainerhelper.hxx2
-rw-r--r--include/connectivity/FValue.hxx4
-rw-r--r--include/filter/msfilter/dffrecordheader.hxx2
-rw-r--r--include/filter/msfilter/mscodec.hxx4
-rw-r--r--include/filter/msfilter/svdfppt.hxx2
-rw-r--r--include/filter/msfilter/util.hxx2
-rw-r--r--include/svx/transfrmhelper.hxx2
-rw-r--r--include/svx/xmlexchg.hxx2
-rw-r--r--include/tools/svborder.hxx2
-rw-r--r--include/vcl/bitmap.hxx2
-rw-r--r--include/vcl/commandevent.hxx8
-rw-r--r--include/vcl/pointr.hxx2
-rw-r--r--sc/inc/colorscale.hxx2
-rw-r--r--sw/inc/ndindex.hxx2
-rw-r--r--sw/source/filter/inc/fltshell.hxx2
-rw-r--r--vcl/inc/headless/svpgdi.hxx2
26 files changed, 143 insertions, 111 deletions
diff --git a/chart2/source/inc/CommonFunctors.hxx b/chart2/source/inc/CommonFunctors.hxx
index 8b11df32f3ea..e8cdb12d6ba1 100644
--- a/chart2/source/inc/CommonFunctors.hxx
+++ b/chart2/source/inc/CommonFunctors.hxx
@@ -50,7 +50,7 @@ template< typename T >
<p>In case no number can be generated from the Any, NaN (see
rtl::math::SetNAN()) is returned.</p>
*/
-struct OOO_DLLPUBLIC_CHARTTOOLS AnyToDouble
+struct AnyToDouble
{
double operator() ( const css::uno::Any & rAny )
{
@@ -64,7 +64,7 @@ struct OOO_DLLPUBLIC_CHARTTOOLS AnyToDouble
/** unary function to convert css::uno::Any into an
OUString.
*/
-struct OOO_DLLPUBLIC_CHARTTOOLS AnyToString
+struct AnyToString
{
OUString operator() ( const css::uno::Any & rAny )
{
@@ -93,7 +93,7 @@ struct OOO_DLLPUBLIC_CHARTTOOLS AnyToString
<p>For conversion rtl::math::StringToDouble is used.</p>
*/
-struct OOO_DLLPUBLIC_CHARTTOOLS OUStringToDouble
+struct OUStringToDouble
{
double operator() ( const OUString & rStr )
{
@@ -111,7 +111,7 @@ struct OOO_DLLPUBLIC_CHARTTOOLS OUStringToDouble
<p>For conversion rtl::math::DoubleToOUString is used.</p>
*/
-struct OOO_DLLPUBLIC_CHARTTOOLS DoubleToOUString
+struct DoubleToOUString
{
OUString operator() ( double fNumber )
{
diff --git a/chart2/source/inc/PropertyHelper.hxx b/chart2/source/inc/PropertyHelper.hxx
index 52a38edfed6c..4051d00f9e78 100644
--- a/chart2/source/inc/PropertyHelper.hxx
+++ b/chart2/source/inc/PropertyHelper.hxx
@@ -138,7 +138,7 @@ OOO_DLLPUBLIC_CHARTTOOLS void setEmptyPropertyValueDefault( tPropertyValueMap &
} // namespace PropertyHelper
-struct OOO_DLLPUBLIC_CHARTTOOLS PropertyNameLess
+struct PropertyNameLess
{
bool operator() ( const css::beans::Property & first,
const css::beans::Property & second )
diff --git a/compilerplugins/clang/dllmacro.cxx b/compilerplugins/clang/dllmacro.cxx
new file mode 100644
index 000000000000..538203f88942
--- /dev/null
+++ b/compilerplugins/clang/dllmacro.cxx
@@ -0,0 +1,111 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#include "plugin.hxx"
+#include <iostream>
+#include <fstream>
+
+/**
+ Check the usage of the various DLL visibility macros.
+ */
+class DllMacro final:
+ public RecursiveASTVisitor<DllMacro>, public loplugin::Plugin
+{
+public:
+ explicit DllMacro(InstantiationData const & data): Plugin(data) {}
+
+ bool VisitNamedDecl(NamedDecl const * decl);
+
+private:
+ void run() override {
+ // DISABLE_DYNLOADING makes SAL_DLLPUBLIC_{EXPORT,IMPORT,TEMPLATE} expand
+ // to visibility("hidden") attributes, which would cause bogus warnings
+ // here (e.g., in UBSan builds that explicitly define DISABLE_DYNLOADING
+ // in jurt/source/pipe/staticsalhack.cxx); alternatively, change
+ // include/sal/types.h to make those SAL_DLLPUBLIC_* expand to nothing
+ // for DISABLE_DYNLOADING:
+ if (!compiler.getPreprocessor().getIdentifierInfo("DISABLE_DYNLOADING")
+ ->hasMacroDefinition())
+ {
+ TraverseDecl(compiler.getASTContext().getTranslationUnitDecl());
+ }
+ }
+};
+
+bool DllMacro::VisitNamedDecl(NamedDecl const * decl) {
+ if (!decl->getLocation().isInvalid() && ignoreLocation(decl)) {
+ return true;
+ }
+ auto a = decl->getAttr<VisibilityAttr>();
+ if (a == nullptr) {
+ return true;
+ }
+ if (compiler.getSourceManager().isMacroBodyExpansion(
+ decl->getLocation())
+ && (Lexer::getImmediateMacroName(
+ decl->getLocation(), compiler.getSourceManager(),
+ compiler.getLangOpts())
+ == "Q_OBJECT")) // from /usr/include/QtCore/qobjectdefs.h
+ {
+ return true;
+ }
+ if (a->getVisibility() == VisibilityAttr::Hidden) {
+ auto p = dyn_cast<RecordDecl>(decl->getDeclContext());
+ if (p == nullptr) {
+ report(
+ DiagnosticsEngine::Warning,
+ "top-level declaration redundantly marked as DLLPRIVATE",
+ a->getLocation())
+ << decl->getSourceRange();
+ } else if (p->getVisibility() == HiddenVisibility) {
+ report(
+ DiagnosticsEngine::Warning,
+ ("declaration nested in DLLPRIVATE declaration redundantly"
+ " marked as DLLPRIVATE"),
+ a->getLocation())
+ << decl->getSourceRange();
+ report(
+ DiagnosticsEngine::Note, "parent declaration is here",
+ p->getLocation())
+ << p->getSourceRange();
+ }
+ }
+ else if (a->getVisibility() == VisibilityAttr::Default) {
+ auto p = dyn_cast<CXXRecordDecl>(decl);
+ if (p && p->isCompleteDefinition() && !p->getDescribedClassTemplate()) {
+ // don't know what these macros mean, leave them alone
+ auto macroLoc = a->getLocation();
+ while (compiler.getSourceManager().isMacroBodyExpansion(macroLoc)) {
+ auto macroName = Lexer::getImmediateMacroName(
+ macroLoc, compiler.getSourceManager(),
+ compiler.getLangOpts());
+ if (macroName == "SAL_EXCEPTION_DLLPUBLIC_EXPORT")
+ return true;
+ if (macroName == "VCL_PLUGIN_PUBLIC")
+ return true;
+ macroLoc = compiler.getSourceManager().getImmediateMacroCallerLoc(macroLoc);
+ }
+ for (auto it = p->method_begin(); it != p->method_end(); ++it) {
+ if (!it->hasInlineBody()) {
+ return true;
+ }
+ }
+ report(
+ DiagnosticsEngine::Warning,
+ "unnecessary *DLLPUBLIC declaration for class completely defined in header file",
+ a->getLocation())
+ << decl->getSourceRange();
+ }
+ }
+ return true;
+}
+
+static loplugin::Plugin::Registration<DllMacro> reg("dllmacro");
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */
diff --git a/compilerplugins/clang/dllprivate.cxx b/compilerplugins/clang/dllprivate.cxx
deleted file mode 100644
index 05cf26d7d5d2..000000000000
--- a/compilerplugins/clang/dllprivate.cxx
+++ /dev/null
@@ -1,79 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- */
-
-#include "plugin.hxx"
-
-namespace {
-
-class Visitor final:
- public RecursiveASTVisitor<Visitor>, public loplugin::Plugin
-{
-public:
- explicit Visitor(InstantiationData const & data): Plugin(data) {}
-
- bool VisitNamedDecl(NamedDecl const * decl) {
- if (!decl->getLocation().isInvalid()&&ignoreLocation(decl)) {
- return true;
- }
- auto a = decl->getAttr<VisibilityAttr>();
- if (a == nullptr || a->getVisibility() != VisibilityAttr::Hidden) {
- return true;
- }
- if (compiler.getSourceManager().isMacroBodyExpansion(
- decl->getLocation())
- && (Lexer::getImmediateMacroName(
- decl->getLocation(), compiler.getSourceManager(),
- compiler.getLangOpts())
- == "Q_OBJECT")) // from /usr/include/QtCore/qobjectdefs.h
- {
- return true;
- }
- auto p = dyn_cast<RecordDecl>(decl->getDeclContext());
- if (p == nullptr) {
- report(
- DiagnosticsEngine::Warning,
- "top-level declaration redundantly marked as DLLPRIVATE",
- a->getLocation())
- << decl->getSourceRange();
- } else if (p->getVisibility() == HiddenVisibility) {
- report(
- DiagnosticsEngine::Warning,
- ("declaration nested in DLLPRIVATE declaration redundantly"
- " marked as DLLPRIVATE"),
- a->getLocation())
- << decl->getSourceRange();
- report(
- DiagnosticsEngine::Note, "parent declaration is here",
- p->getLocation())
- << p->getSourceRange();
- }
- return true;
- }
-
-private:
- void run() override {
- // DISABLE_DYNLOADING makes SAL_DLLPUBLIC_{EXPORT,IMPORT,TEMPLATE} expand
- // to visibility("hidden") attributes, which would cause bogus warnings
- // here (e.g., in UBSan builds that explicitly define DISABLE_DYNLOADING
- // in jurt/source/pipe/staticsalhack.cxx); alternatively, change
- // include/sal/types.h to make those SAL_DLLPUBLIC_* expand to nothing
- // for DISABLE_DYNLOADING:
- if (!compiler.getPreprocessor().getIdentifierInfo("DISABLE_DYNLOADING")
- ->hasMacroDefinition())
- {
- TraverseDecl(compiler.getASTContext().getTranslationUnitDecl());
- }
- }
-};
-
-static loplugin::Plugin::Registration<Visitor> reg("dllprivate");
-
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */
diff --git a/connectivity/source/inc/RowFunctionParser.hxx b/connectivity/source/inc/RowFunctionParser.hxx
index df2c7ba2bf4e..5c494728a9f5 100644
--- a/connectivity/source/inc/RowFunctionParser.hxx
+++ b/connectivity/source/inc/RowFunctionParser.hxx
@@ -55,7 +55,7 @@ public:
/** This exception is thrown, when the arithmetic expression
parser failed to parse a string.
*/
-struct OOO_DLLPUBLIC_DBTOOLS ParseError
+struct ParseError
{
ParseError( const char* ) {}
};
diff --git a/desktop/source/deployment/inc/dp_ucb.h b/desktop/source/deployment/inc/dp_ucb.h
index 3c97fc6a1e89..19b6e1b9702b 100644
--- a/desktop/source/deployment/inc/dp_ucb.h
+++ b/desktop/source/deployment/inc/dp_ucb.h
@@ -36,7 +36,7 @@ class Content;
namespace dp_misc {
-struct DESKTOP_DEPLOYMENTMISC_DLLPUBLIC StrTitle
+struct StrTitle
{
static css::uno::Sequence< OUString > getTitleSequence()
{
diff --git a/include/basegfx/color/bcolor.hxx b/include/basegfx/color/bcolor.hxx
index 300f8db81e81..c612a5d6dfd8 100644
--- a/include/basegfx/color/bcolor.hxx
+++ b/include/basegfx/color/bcolor.hxx
@@ -42,7 +42,7 @@ namespace basegfx
@see B3DTuple
*/
- class SAL_WARN_UNUSED BASEGFX_DLLPUBLIC BColor : public B3DTuple
+ class SAL_WARN_UNUSED BColor : public B3DTuple
{
public:
/** Create a Color with red, green and blue components from [0.0 to 1.0]
diff --git a/include/basegfx/matrix/b2dhommatrixtools.hxx b/include/basegfx/matrix/b2dhommatrixtools.hxx
index c60a6ac96c21..f0559fdf8f11 100644
--- a/include/basegfx/matrix/b2dhommatrixtools.hxx
+++ b/include/basegfx/matrix/b2dhommatrixtools.hxx
@@ -148,7 +148,7 @@ namespace basegfx
{
namespace utils
{
- class BASEGFX_DLLPUBLIC B2DHomMatrixBufferedDecompose
+ class B2DHomMatrixBufferedDecompose
{
private:
B2DVector maScale;
diff --git a/include/basegfx/numeric/ftools.hxx b/include/basegfx/numeric/ftools.hxx
index 35a1a35111b2..cf7a05316bc7 100644
--- a/include/basegfx/numeric/ftools.hxx
+++ b/include/basegfx/numeric/ftools.hxx
@@ -148,7 +148,7 @@ namespace basegfx
*/
BASEGFX_DLLPUBLIC double snapToNearestMultiple(double v, const double fStep);
- class BASEGFX_DLLPUBLIC fTools
+ class fTools
{
public:
/// Get threshold value for equalZero and friends
diff --git a/include/basegfx/pixel/bpixel.hxx b/include/basegfx/pixel/bpixel.hxx
index ed1dadc06a09..7eee516c2cff 100644
--- a/include/basegfx/pixel/bpixel.hxx
+++ b/include/basegfx/pixel/bpixel.hxx
@@ -27,7 +27,7 @@
namespace basegfx
{
- class BASEGFX_DLLPUBLIC BPixel
+ class BPixel
{
protected:
union
diff --git a/include/comphelper/propertycontainerhelper.hxx b/include/comphelper/propertycontainerhelper.hxx
index 513aa88f4993..23f9757e0336 100644
--- a/include/comphelper/propertycontainerhelper.hxx
+++ b/include/comphelper/propertycontainerhelper.hxx
@@ -32,7 +32,7 @@ namespace comphelper
// infos about one single property
-struct COMPHELPER_DLLPUBLIC PropertyDescription
+struct PropertyDescription
{
// the possibilities where a property holding object may be located
enum class LocationType
diff --git a/include/connectivity/FValue.hxx b/include/connectivity/FValue.hxx
index d2fbfd47e9ba..9fa8d09199e6 100644
--- a/include/connectivity/FValue.hxx
+++ b/include/connectivity/FValue.hxx
@@ -472,7 +472,7 @@ namespace connectivity
/// TSetBound is a functor to set the bound value with e.q. for_each call
- struct OOO_DLLPUBLIC_DBTOOLS TSetBound
+ struct TSetBound
{
bool m_bBound;
TSetBound(bool _bBound) : m_bBound(_bBound){}
@@ -482,7 +482,7 @@ namespace connectivity
/// TSetBound is a functor to set the bound value with e.q. for_each call
- struct OOO_DLLPUBLIC_DBTOOLS TSetRefBound
+ struct TSetRefBound
{
bool m_bBound;
TSetRefBound(bool _bBound) : m_bBound(_bBound){}
diff --git a/include/filter/msfilter/dffrecordheader.hxx b/include/filter/msfilter/dffrecordheader.hxx
index acd0d2539889..cddc2e3d2447 100644
--- a/include/filter/msfilter/dffrecordheader.hxx
+++ b/include/filter/msfilter/dffrecordheader.hxx
@@ -26,7 +26,7 @@
#include <tools/solar.h>
#include <tools/stream.hxx>
-class MSFILTER_DLLPUBLIC DffRecordHeader
+class DffRecordHeader
{
public:
sal_uInt8 nRecVer; // may be DFF_PSFLAG_CONTAINER
diff --git a/include/filter/msfilter/mscodec.hxx b/include/filter/msfilter/mscodec.hxx
index b0ab818449ae..8a409800407a 100644
--- a/include/filter/msfilter/mscodec.hxx
+++ b/include/filter/msfilter/mscodec.hxx
@@ -476,13 +476,13 @@ struct MSFILTER_DLLPUBLIC EncryptionVerifierRC4
EncryptionVerifierRC4();
};
-struct MSFILTER_DLLPUBLIC StandardEncryptionInfo
+struct StandardEncryptionInfo
{
EncryptionStandardHeader header;
EncryptionVerifierAES verifier;
};
-struct MSFILTER_DLLPUBLIC RC4EncryptionInfo
+struct RC4EncryptionInfo
{
EncryptionStandardHeader header;
EncryptionVerifierRC4 verifier;
diff --git a/include/filter/msfilter/svdfppt.hxx b/include/filter/msfilter/svdfppt.hxx
index 2be1cd00dbb0..2895b98fbf0b 100644
--- a/include/filter/msfilter/svdfppt.hxx
+++ b/include/filter/msfilter/svdfppt.hxx
@@ -117,7 +117,7 @@ struct SdHyperlinkEntry
};
// Helper class for reading the PPT InteractiveInfoAtom
-struct MSFILTER_DLLPUBLIC PptInteractiveInfoAtom
+struct PptInteractiveInfoAtom
{
sal_uInt32 nSoundRef;
sal_uInt32 nExHyperlinkId;
diff --git a/include/filter/msfilter/util.hxx b/include/filter/msfilter/util.hxx
index 8aa01f5be952..1d3bae385677 100644
--- a/include/filter/msfilter/util.hxx
+++ b/include/filter/msfilter/util.hxx
@@ -70,7 +70,7 @@ MSFILTER_DLLPUBLIC OString ConvertColor( const Color &rColor, bool bAutoColor =
/** Paper size in 1/100 millimeters. */
-struct MSFILTER_DLLPUBLIC ApiPaperSize
+struct ApiPaperSize
{
sal_Int32 mnWidth;
sal_Int32 mnHeight;
diff --git a/include/svx/transfrmhelper.hxx b/include/svx/transfrmhelper.hxx
index d5f293dbc10a..481814b298c5 100644
--- a/include/svx/transfrmhelper.hxx
+++ b/include/svx/transfrmhelper.hxx
@@ -24,7 +24,7 @@
#include <tools/fldunit.hxx>
#include <tools/mapunit.hxx>
-class SVX_DLLPUBLIC TransfrmHelper
+class TransfrmHelper
{
public:
static void ConvertRect(basegfx::B2DRange& rRange, const sal_uInt16 nDigits, const MapUnit ePoolUnit, const FieldUnit eDlgUnit)
diff --git a/include/svx/xmlexchg.hxx b/include/svx/xmlexchg.hxx
index 6d2c0bfc1bae..044422e15406 100644
--- a/include/svx/xmlexchg.hxx
+++ b/include/svx/xmlexchg.hxx
@@ -42,7 +42,7 @@ namespace svx
//= OXFormsDescriptor
- struct SVX_DLLPUBLIC OXFormsDescriptor {
+ struct OXFormsDescriptor {
OUString szName;
OUString szServiceName;
diff --git a/include/tools/svborder.hxx b/include/tools/svborder.hxx
index 9eef88819847..e1fa1b5356b1 100644
--- a/include/tools/svborder.hxx
+++ b/include/tools/svborder.hxx
@@ -23,7 +23,7 @@
#include <tools/toolsdllapi.h>
#include <tools/gen.hxx>
-class SAL_WARN_UNUSED TOOLS_DLLPUBLIC SvBorder
+class SAL_WARN_UNUSED SvBorder
{
long nTop, nRight, nBottom, nLeft;
diff --git a/include/vcl/bitmap.hxx b/include/vcl/bitmap.hxx
index 0be13c12bf3e..904530b3e5f0 100644
--- a/include/vcl/bitmap.hxx
+++ b/include/vcl/bitmap.hxx
@@ -110,7 +110,7 @@ enum class BmpFilter
Unknown = 65535
};
-class VCL_DLLPUBLIC BmpFilterParam
+class BmpFilterParam
{
public:
diff --git a/include/vcl/commandevent.hxx b/include/vcl/commandevent.hxx
index 778348b3d1a3..464734fe4f94 100644
--- a/include/vcl/commandevent.hxx
+++ b/include/vcl/commandevent.hxx
@@ -206,7 +206,7 @@ enum class ShowDialogId
About = 2,
};
-class VCL_DLLPUBLIC CommandDialogData
+class CommandDialogData
{
ShowDialogId m_nDialogId;
public:
@@ -242,7 +242,7 @@ enum class MediaCommand
NextTrackHold = 21,// Button Right holding pressed.
};
-class VCL_DLLPUBLIC CommandMediaData
+class CommandMediaData
{
MediaCommand m_nMediaId;
bool m_bPassThroughToOS;
@@ -270,7 +270,7 @@ public:
sal_uLong GetEnd() const { return mnEnd; }
};
-class VCL_DLLPUBLIC CommandSwipeData
+class CommandSwipeData
{
double mnVelocityX;
public:
@@ -286,7 +286,7 @@ public:
};
-class VCL_DLLPUBLIC CommandLongPressData
+class CommandLongPressData
{
double mnX;
double mnY;
diff --git a/include/vcl/pointr.hxx b/include/vcl/pointr.hxx
index 8370b9f9d296..405a5a875e38 100644
--- a/include/vcl/pointr.hxx
+++ b/include/vcl/pointr.hxx
@@ -23,7 +23,7 @@
#include <vcl/dllapi.h>
#include <vcl/ptrstyle.hxx>
-class VCL_DLLPUBLIC Pointer
+class Pointer
{
PointerStyle meStyle;
diff --git a/sc/inc/colorscale.hxx b/sc/inc/colorscale.hxx
index 0d33f1bb7146..2a2004e5673b 100644
--- a/sc/inc/colorscale.hxx
+++ b/sc/inc/colorscale.hxx
@@ -91,7 +91,7 @@ enum ScAxisPosition
}
-struct SC_DLLPUBLIC ScDataBarFormatData
+struct ScDataBarFormatData
{
ScDataBarFormatData():
maAxisColor(COL_BLACK),
diff --git a/sw/inc/ndindex.hxx b/sw/inc/ndindex.hxx
index 51c716d85a5a..494ebb85e017 100644
--- a/sw/inc/ndindex.hxx
+++ b/sw/inc/ndindex.hxx
@@ -129,7 +129,7 @@ inline std::ostream &operator <<(std::ostream& s, const SwNodeIndex& index)
// SwRange
-class SW_DLLPUBLIC SwNodeRange
+class SwNodeRange
{
public:
SwNodeIndex aStart;
diff --git a/sw/source/filter/inc/fltshell.hxx b/sw/source/filter/inc/fltshell.hxx
index 34f1ab8862dc..c021f8514c9f 100644
--- a/sw/source/filter/inc/fltshell.hxx
+++ b/sw/source/filter/inc/fltshell.hxx
@@ -47,7 +47,7 @@ inline bool SwFltGetFlag(sal_uLong nFieldFlags, int no)
//Subvert the Node/Content system to get positions which don't update as
//content is appended to them
-struct SW_DLLPUBLIC SwFltPosition
+struct SwFltPosition
{
public:
SwNodeIndex m_nNode;
diff --git a/vcl/inc/headless/svpgdi.hxx b/vcl/inc/headless/svpgdi.hxx
index 5879c1bfdf44..7130d1153d6b 100644
--- a/vcl/inc/headless/svpgdi.hxx
+++ b/vcl/inc/headless/svpgdi.hxx
@@ -71,7 +71,7 @@ typedef void (*damageHandler)(void* handle,
sal_Int32 nExtentsX, sal_Int32 nExtentsY,
sal_Int32 nExtentsWidth, sal_Int32 nExtentsHeight);
-struct VCL_DLLPUBLIC DamageHandler
+struct DamageHandler
{
void *handle;
damageHandler damaged;