From kde-core-devel Thu May 31 06:41:56 2001 From: Alex Zepeda Date: Thu, 31 May 2001 06:41:56 +0000 To: kde-core-devel Subject: all this talk about exporting symbols X-MARC-Message: https://marc.info/?l=kde-core-devel&m=99129150908114 MIME-Version: 1 Content-Type: multipart/mixed; boundary="--eJnRUKwClWJh1Khz" --eJnRUKwClWJh1Khz Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Led me to play around with what Mozilla's using. That is versioning scripts for the linker. The big dowside is that mangled symbols must be listed here. But on the plus side it's compatible with the GNU ld and the Solaris ld... and it lets you specify virtual tables and RTTI stuff with ease. The scripts support basic wildcards (* and ?), and there's probably some optimization left to be done there, but with all that this could be automated pretty easily (name mangling is pretty easy). I've "hidden" most of the symbols from the "Private" classes in kdecore, some in kdeui and some in kio. All three libs export stuff like this too: __as__7QStringc (which for those unenlightened is: QString::operator=(char)). Hmm. I hid those too. Using these versioning scripts makes my box feel slower to me, however my box is a REALLY bad speed test. Maybe exporting operators already defined allows the rtld to save another lookup? Hmm. Anyways, I'm interested if this makes a discernable difference in speed for anyone else (hint, use the gnu ld option --version-script ). Symbol versioning does bloat the library a bit, but with all the hidden symbols the libraries end up being a few kb smaller. - alex --eJnRUKwClWJh1Khz Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="kdecore.exp" EXPORTED { local: *__15QMapPrivateBase*; *_$_t11QMapPrivate*; *__t11QMapPrivate*; *__Ct11QMapPrivate*; *_$_t17QValueListPrivate*; *__t17QValueListPrivate*; *__Ct17QValueListPrivate*; *_14KRegExpPrivate*; *_19KDesktopFilePrivate*; *_14KConfigPrivate*; *_16KCharsetsPrivate*; *_14KSycocaPrivate*; *_16KInstancePrivate*; *_17KAboutDataPrivate*; *_17KIconThemePrivate*; *_17KLibLoaderPrivate*; *_17KWinModulePrivate*; *_t?17KWinModulePrivate*; *_17NETWinInfoPrivate*; *_18KIconLoaderPrivate*; *_18NETRootInfoPrivate*; *_19KApplicationPrivate*; *_19KStartupInfoPrivate*; *_20KServerSocketPrivate*; *_21KStartupInfoIdPrivate*; *_19KAudioPlayerPrivate*; *_19KGlobalAccelPrivate*; *_t?19KGlobalAccelPrivate*; *_vt$19KGlobalAccelPrivate*; *_23KStartupInfoDataPrivate*; *_25KUniqueApplicationPrivate*; *_Q218KInetSocketAddress7Private*; *_Q218KMimeSourceFactory25KMimeSourceFactoryPrivateP11KIconLoader*; *_Q218KUnixSocketAddress7Private*; *t17QValueListPrivate*; *_vt$17KWinModulePrivate*; *_Q215KExtendedSocket22KExtendedSocketPrivate*; *_Q218KDCOPPropertyProxy25KDCOPPropertyProxyPrivate*; *_15KLibWrapPrivate*; *_t13QListIterator1Z15KLibWrapPrivate*; *_Ct13QListIterator1Z15KLibWrapPrivate*; *_Ct18QAsciiDictIterator1Z15KLibWrapPrivate*; *_t18QAsciiDictIterator1Z15KLibWrapPrivate*; *_Ct10QAsciiDict1Z15KLibWrapPrivate*; *_vt$t10QAsciiDict1Z15KLibWrapPrivate*; *_t10QAsciiDict1Z15KLibWrapPrivate*; *__t?t10QAsciiDict1Z15KLibWrapPrivate*; *_t5QList1Z15KLibWrapPrivate*; *_Ct5QList1Z15KLibWrapPrivate*; *_vt$t5QList1Z15KLibWrapPrivate*; *__t?t5QList1Z15KLibWrapPrivate*; __11QStringList*; __7QShared*; __7QString*; __5QTime*; __8QCString*; __8QCharRef*; __op5QChar__C8QCharRef; __as__7QStringc; __as__8QCStringPCc; __as__8QCStringRC8QCString; __ne__FRC8QCStringPCc; __op5QChar__C8QCharRef; __pl__FPCcRC7QString; __opPCc__C8QCString; __5QCharc; __5QCharRC5QChar; _$_8QCString; _$_7QString; _$_11QStringList; __vc__7QStringi; __vc__C7QStringi; append__7QStringG5QChar; append__7QStringRC7QString; append__7QStringc; at__7QStringUi; at__C7QStringUi; contains__C7QStringcb; constref__C7QStringUi; copy__C8QCString; setNum__7QStringUii; setNum__7QStringUsi; setNum__7QStringii; arg__C7QStringUiii; arg__C7QStringiii; constref__C7QStringUi; contains__C7QStringcb; findRev__C7QStringcib; find__C7QStringPCci; find__C7QStringcib; isEmpty__C7QString; isNull__C7QString; length__C7QString; unicode__C7QString; isEmpty__C8QCString; append__8QCStringPCc; setNum__8QCStringi; __eq__FG5QCharc; __eq__FRC8QCStringPCc; __eq__FRC8QCStringT0; button__C11QMouseEvent; *__7QShared*; __as__11QStringListRC11QStringList; }; --eJnRUKwClWJh1Khz Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="kdeui.exp" EXPORTED { local: *__15QMapPrivateBase*; *_$_t11QMapPrivate*; *__t11QMapPrivate*; *__Ct11QMapPrivate*; *_$_t17QValueListPrivate*; *__t17QValueListPrivate*; *__Ct17QValueListPrivate*; *_18KDockWidgetPrivate*; *_vt$18KDockWidgetPrivate*; *__C18KDockWidgetPrivate; __t?18KDockWidgetPrivate*; *_19KDockButton_Private*; *_vt$19KDockButton_Private*; *__C19KDockButton_Private; __t?19KDockButton_Private*; *_14KCursorPrivate*; *_vt$14KCursorPrivate*; *__C14KCursorPrivate*; __t?14KCursorPrivate*; *_15KToolBarPrivate*; *_Q215KToolBarPrivate11ToolBarInfo*; *t5QList1Z25KDockTabCtl_PrivateStruct*; *25KDockTabBar_PrivateStruct*; *t5QList1Z25KDockTabBar_PrivateStruct*; *_vt$t5QList1Z25KDockTabCtl_PrivateStruct; *_16KHelpMenuPrivate*; *_17KBugReportPrivate*; *__17KFontComboPrivate*; *_18KKeyChooserPrivate*; *_18KMainWindowPrivate*; *_19KDialogQueuePrivate*; *__20KSharedPixmapPrivate*; *_20KXMLGUIClientPrivate*; *_21KToolBarButtonPrivate*; *_21KXMLGUIBuilderPrivate*; *_21KXMLGUIFactoryPrivate*; *_25KDockTabCtl_PrivateStruct*; *_25KEditToolbarWidgetPrivate*; __t?t5QList1Z25KDockTabCtl_PrivateStruct; *__Ct5QList1Z25KDockTabCtl_PrivateStruct*; *__t5QList1Z25KDockTabCtl_PrivateStruct*; *__t10QValueList1ZQ37KAction14KActionPrivate9Container*; *__Q24KLed11KLedPrivate*; *__Q27KAction14KActionPrivate*; *__Q27KEdFind14KEdFindPrivateP7QWidget*; *__Q28KMenuBar15KMenuBarPrivate*; *__Q29KComboBox16KComboBoxPrivate*; *__Q29KIconView16KIconViewPrivate*; *__Q29KLineEdit16KLineEditPrivate*; *__Q29KListView16KListViewPrivateP9KListView*; *__Q29KURLLabel7PrivateRC7QStringP9KURLLabel*; *__Q37KAction14KActionPrivate9Container*; *_Q213KToggleAction20KToggleActionPrivate*; *_Q214KCompletionBox21KCompletionBoxPrivate*; *_Q215KCommandHistory22KCommandHistoryPrivate*; *_Q215KFontSizeAction22KFontSizeActionPrivate*; *_Q216KDCOPActionProxy23KDCOPActionProxyPrivate*; *_Q216KDualColorButton17KDualColorPrivate*; *_Q217KActionCollection24KActionCollectionPrivate*; *_Q218KRecentFilesAction25KRecentFilesActionPrivate*; *_Q24KLed11KLedPrivate*; *_Q27KAction14KActionPrivate*; *_Q27KEdFind14KEdFindPrivate*; *_Q28KMenuBar15KMenuBarPrivate*; *_Q29KComboBox16KComboBoxPrivate*; *_Q29KIconView16KIconViewPrivate*; *_Q29KLineEdit16KLineEditPrivate*; *_Q210KButtonBox11PrivateData*; *_Q210KEdReplace17KEdReplacePrivate*; *_Q211KActionMenu18KActionMenuPrivate*; *_Q211KAnimWidget18KAnimWidgetPrivate*; *_Q211KDialogBase18KDialogBasePrivate*; *_Q211KFontAction18KFontActionPrivate*; *_Q213KSelectAction20KSelectActionPrivate*; *_Q29KListView16KListViewPrivate*; *_Q29KURLLabel7Private*; *Q211KListAction18KListActionPrivate*; *Q212KColorDialog19KColorDialogPrivate*; *__t14QValueListNode1ZQ37KAction14KActionPrivate9Container*; *t18QValueListIterator1ZQ37KAction14KActionPrivate9Container*; *__Q212KDockManager19KDockManagerPrivate*; *__Q212KFontChooser19KFontChooserPrivate*; *t23QValueListConstIterator1ZQ37KAction14KActionPrivate9Container*; *t10QValueList1ZQ37KAction14KActionPrivate9Container*; __11QStringList*; __7QShared*; __7QString*; __5QTime*; __8QCString*; __8QCharRef*; __op5QChar__C8QCharRef; __as__7QStringc; __as__8QCStringPCc; __as__8QCStringRC8QCString; __ne__FRC8QCStringPCc; __op5QChar__C8QCharRef; __pl__FPCcRC7QString; __opPCc__C8QCString; __5QCharc; __5QCharRC5QChar; _$_8QCString; _$_7QString; _$_11QStringList; __vc__7QStringi; __vc__C7QStringi; append__7QStringG5QChar; append__7QStringRC7QString; append__7QStringc; at__7QStringUi; at__C7QStringUi; contains__C7QStringcb; constref__C7QStringUi; copy__C8QCString; setNum__7QStringUii; setNum__7QStringUsi; setNum__7QStringii; arg__C7QStringUiii; arg__C7QStringiii; constref__C7QStringUi; contains__C7QStringcb; findRev__C7QStringcib; find__C7QStringPCci; find__C7QStringcib; isEmpty__C7QString; isNull__C7QString; length__C7QString; unicode__C7QString; isEmpty__C8QCString; append__8QCStringPCc; setNum__8QCStringi; __eq__FG5QCharc; __eq__FRC8QCStringPCc; __eq__FRC8QCStringT0; button__C11QMouseEvent; *__7QShared*; __as__11QStringListRC11QStringList; }; --eJnRUKwClWJh1Khz Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="kio.exp" EXPORTED { local: *_t17QValueListPrivate*; *_Ct17QValueListPrivate*; *_t11QMapPrivate*; *_Ct11QMapPrivate*; *_15QMapPrivateBase*; *_23KProtocolManagerPrivate*; *_Q23KIO16SlaveBasePrivate*; *_Q23KIO18SlaveConfigPrivate*; *_Q33KIO12TCPSlaveBase19TcpSlaveBasePrivate*; *_21KEMailSettingsPrivate*; *_t14KStaticDeleter1Z23KProtocolManagerPrivate*; *_t?t14KStaticDeleter1Z23KProtocolManagerPrivate*; *_vt$t14KStaticDeleter1Z23KProtocolManagerPrivate*; storeAuthInfo__Q23KIO9SlaveBaseRC8QCStringT1RCQ23KIO8AuthInfo; writeData__6KShredPUcUi; flush__6KShred; *_Q23KIO19SlaveConfigProtocol*; *_t?t5QDict1ZQ23KIO19SlaveConfigProtocol*; *_vt$t5QDict1ZQ23KIO19SlaveConfigProtocol*; *_t5QDict1ZQ23KIO19SlaveConfigProtocol*; *_Ct5QDict1ZQ23KIO19SlaveConfigProtocol*; *_t5QList1ZQ23KIO4Task*; *_Ct5QList1ZQ23KIO4Task*; *_t?t5QList1ZQ23KIO4Task*; *_vt$t5QList1ZQ23KIO4Task*; *_t5QList1ZQ23KIO7AuthKey*; *_Ct5QList1ZQ23KIO7AuthKey*; *_t?t5QList1ZQ23KIO7AuthKey*; *_vt$t5QList1ZQ23KIO7AuthKey*; *_t13QListIterator1ZQ23KIO7AuthKey*; *_Ct13QListIterator1ZQ23KIO7AuthKey*; delCachedAuthKeys__Q23KIO9SchedulerRCt5QList1ZQ23KIO7AuthKey; regCachedAuthKey__Q23KIO9SchedulerRC8QCStringT1; __Q23KIO7AuthKey*; __11QStringList*; __7QShared*; __7QString*; __5QTime*; __8QCString*; __8QCharRef*; __op5QChar__C8QCharRef; __as__7QStringc; __as__8QCStringPCc; __as__8QCStringRC8QCString; __ne__FRC8QCStringPCc; __op5QChar__C8QCharRef; __pl__FPCcRC7QString; __opPCc__C8QCString; __5QCharc; __5QCharRC5QChar; _$_8QCString; _$_7QString; _$_11QStringList; __vc__7QStringi; __vc__C7QStringi; append__7QStringG5QChar; append__7QStringRC7QString; append__7QStringc; at__7QStringUi; at__C7QStringUi; contains__C7QStringcb; constref__C7QStringUi; copy__C8QCString; setNum__7QStringUii; setNum__7QStringUsi; setNum__7QStringii; arg__C7QStringUiii; arg__C7QStringiii; constref__C7QStringUi; contains__C7QStringcb; findRev__C7QStringcib; find__C7QStringPCci; find__C7QStringcib; isEmpty__C7QString; isNull__C7QString; length__C7QString; unicode__C7QString; isEmpty__C8QCString; append__8QCStringPCc; setNum__8QCStringi; __eq__FG5QCharc; __eq__FRC8QCStringPCc; __eq__FRC8QCStringT0; button__C11QMouseEvent; *__7QShared*; __as__11QStringListRC11QStringList; }; --eJnRUKwClWJh1Khz Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="ksycoca.exp" EXPORTED { local: *_t11QMapPrivate*; *_15QMapPrivateBase*; determineNextFile__Q23KIO10PreviewJob; emitPreview__Q23KIO10PreviewJobRC7QPixmap; emitFailed__Q23KIO10PreviewJobPC9KFileItem; saveThumbnail__Q23KIO10PreviewJobRCt6QArray1Zc; *_21KURIFilterDataPrivate*; *_Q26KTarGz13KTarGzPrivate*; *_t?t5QDict1Z9KTarEntry*; *_t5QDict1Z9KTarEntry*; *_Ct5QDict1Z9KTarEntry*; *_t13QDictIterator1Z9KTarEntry*; *_Ct13QDictIterator1Z9KTarEntry*; *_vt$t5QDict1Z9KTarEntry*; *_Ct10QValueList1ZQ23KIO9ChmodInfo*; *_t10QValueList1ZQ23KIO9ChmodInfo*; *_t17QValueListPrivate1ZQ23KIO9ChmodInfo*; *_t18QValueListIterator1ZQ23KIO9ChmodInfo*; *_Ct18QValueListIterator1ZQ23KIO9ChmodInfo*; *_t14QValueListNode1ZQ23KIO9ChmodInfo*; *_16KDirWatchPrivate*; *_21KURLCompletionPrivate*; *_Q210KDirLister17KDirListerPrivate*; *_Q210KFilterDev17KFilterDevPrivate*; *_Q23KIO17PreviewJobPrivate*; *_Q29KFileItem16KFileItemPrivate*; *_t4QMap2Z7QStringZQ216KDirWatchPrivate5Entry*; *_Ct4QMap2Z7QStringZQ216KDirWatchPrivate5Entry*; *_t8QMapNode2Z7QStringZQ216KDirWatchPrivate5Entry*; *_Ct11QMapPrivate2Z7QStringZQ216KDirWatchPrivate5EntryRC7QString*; *_t12QMapIterator2Z7QStringZQ216KDirWatchPrivate5Entry*; *_Ct12QMapIterator2Z7QStringZQ216KDirWatchPrivate5Entry*; *_Ct11QMapPrivate2Z7QStringZQ216KDirWatchPrivate5Entry*; *_t17QMapConstIterator2Z7QStringZQ216KDirWatchPrivate5Entry*; *_Ct17QMapConstIterator2Z7QStringZQ216KDirWatchPrivate5Entry*; splitText__16KShellCompletionRC7QStringR7QStringT2; quoteText__16KShellCompletionP7QStringbT2; unquote__16KShellCompletionRC7QString; *_9DirLister*; }; --eJnRUKwClWJh1Khz--