diff --git a/src/corelib/plugin/qplugin.h b/src/corelib/plugin/qplugin.h index 93be7248c34949788dab0d8ac168e03f4b88f169..e31ab5f565d891fd35071f99f7142d43d974c24c 100644 --- a/src/corelib/plugin/qplugin.h +++ b/src/corelib/plugin/qplugin.h @@ -69,11 +69,25 @@ struct QStaticPlugin void Q_CORE_EXPORT qRegisterStaticPluginFunction(QStaticPlugin staticPlugin); -#if defined (Q_OF_ELF) && defined (Q_CC_GNU) +#if defined (Q_OF_ELF) && (defined (Q_CC_GNU) || defined(Q_CC_CLANG)) # define QT_PLUGIN_VERIFICATION_SECTION \ __attribute__ ((section (".qtplugin"))) __attribute__((used)) # define QT_PLUGIN_METADATA_SECTION \ __attribute__ ((section (".qtmetadata"))) __attribute__((used)) +#elif defined(Q_OS_MAC) +// TODO: Implement section parsing on Mac +# define QT_PLUGIN_VERIFICATION_SECTION \ + __attribute__((section("__TEXT,qtplugin"))) __attribute__((used)) +# define QT_PLUGIN_METADATA_SECTION \ + __attribute__ ((section ("__TEXT,qtmetadata"))) __attribute__((used)) +#elif defined(Q_CC_MSVC) +// TODO: Implement section parsing for MSVC +#pragma section(".qtplugin",read,shared) +#pragma section(".qtmetadata",read,shared) +# define QT_PLUGIN_VERIFICATION_SECTION \ + __declspec(allocate(".qtplugin")) +# define QT_PLUGIN_METADATA_SECTION \ + __declspec(allocate(".qtmetadata")) #else # define QT_PLUGIN_VERIFICATION_SECTION # define QT_PLUGIN_METADATA_SECTION @@ -140,8 +154,6 @@ void Q_CORE_EXPORT qRegisterStaticPluginFunction(QStaticPlugin staticPlugin); // NOTE: if you change pattern, you MUST change the pattern in // qlibrary.cpp as well. changing the pattern will break all // backwards compatibility as well (no old plugins will be loaded). -// QT5: should probably remove the entire pattern thing and do the section -// trick for all platforms. for now, keep it and fallback to scan for it. # ifdef QPLUGIN_DEBUG_STR # undef QPLUGIN_DEBUG_STR # endif