Skip to content

Commit 1308826

Browse files
committed
Static plugins - mangle entry point
Namespaced qt should be protected against duplicate symbols in the same process/dso. The static plugin factory had a flat name, so we should name-mangle it. [ChangeLog] In namespaced builds the entry function for static plugins now appends the namespace via QT_MANGLE_NAMESPACE. Task-number: QTBUG-138543 Pick-to: 6.10 Change-Id: Ic656a4fd27d5a3d2b2209ef553c34e75024acc3b Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
1 parent 6f22bcd commit 1308826

File tree

2 files changed

+9
-9
lines changed

2 files changed

+9
-9
lines changed

src/corelib/plugin/qplugin.h

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -192,11 +192,11 @@ template <auto (&PluginMetaData)> class QPluginMetaDataV2
192192
};
193193

194194
#define Q_IMPORT_PLUGIN(PLUGIN) \
195-
extern const QT_PREPEND_NAMESPACE(QStaticPlugin) qt_static_plugin_##PLUGIN(); \
195+
extern const QT_PREPEND_NAMESPACE(QStaticPlugin) QT_MANGLE_NAMESPACE(qt_static_plugin_##PLUGIN)(); \
196196
class Static##PLUGIN##PluginInstance{ \
197197
public: \
198198
Static##PLUGIN##PluginInstance() { \
199-
qRegisterStaticPluginFunction(qt_static_plugin_##PLUGIN()); \
199+
qRegisterStaticPluginFunction(QT_MANGLE_NAMESPACE(qt_static_plugin_##PLUGIN)()); \
200200
} \
201201
}; \
202202
static Static##PLUGIN##PluginInstance static##PLUGIN##Instance;
@@ -220,11 +220,11 @@ template <auto (&PluginMetaData)> class QPluginMetaDataV2
220220
}
221221

222222
#if defined(QT_STATICPLUGIN)
223-
# define QT_MOC_EXPORT_PLUGIN_COMMON(PLUGINCLASS, MANGLEDNAME) \
224-
static QT_PREPEND_NAMESPACE(QObject) *qt_plugin_instance_##MANGLEDNAME() \
225-
Q_PLUGIN_INSTANCE(PLUGINCLASS) \
226-
const QT_PREPEND_NAMESPACE(QStaticPlugin) qt_static_plugin_##MANGLEDNAME() \
227-
{ return { qt_plugin_instance_##MANGLEDNAME, qt_plugin_query_metadata_##MANGLEDNAME}; } \
223+
# define QT_MOC_EXPORT_PLUGIN_COMMON(PLUGINCLASS, MANGLEDNAME) \
224+
static QT_PREPEND_NAMESPACE(QObject) *qt_plugin_instance_##MANGLEDNAME() \
225+
Q_PLUGIN_INSTANCE(PLUGINCLASS) \
226+
const QT_PREPEND_NAMESPACE(QStaticPlugin) QT_MANGLE_NAMESPACE(qt_static_plugin_##MANGLEDNAME)() \
227+
{ return { qt_plugin_instance_##MANGLEDNAME, qt_plugin_query_metadata_##MANGLEDNAME}; } \
228228
/**/
229229

230230
# define QT_MOC_EXPORT_PLUGIN(PLUGINCLASS, PLUGINCLASSNAME) \

tests/auto/corelib/plugin/qpluginloader/tst_qpluginloader.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1160,12 +1160,12 @@ void tst_QPluginLoader::staticPlugins()
11601160
void tst_QPluginLoader::reregisteredStaticPlugins()
11611161
{
11621162
// the Q_IMPORT_PLUGIN macro will have already done this
1163-
qRegisterStaticPluginFunction(qt_static_plugin_StaticPlugin());
1163+
qRegisterStaticPluginFunction(QT_MANGLE_NAMESPACE(qt_static_plugin_StaticPlugin)());
11641164
staticPlugins();
11651165
if (QTest::currentTestFailed())
11661166
return;
11671167

1168-
qRegisterStaticPluginFunction(qt_static_plugin_StaticPlugin());
1168+
qRegisterStaticPluginFunction(QT_MANGLE_NAMESPACE(qt_static_plugin_StaticPlugin)());
11691169
staticPlugins();
11701170
}
11711171

0 commit comments

Comments
 (0)