[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-core-devel
Subject: all this talk about exporting symbols
From: Alex Zepeda <jazepeda () pacbell ! net>
Date: 2001-05-31 6:41:56
[Download RAW message or body]
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 <file>).
Symbol versioning does bloat the library a bit, but with all the hidden
symbols the libraries end up being a few kb smaller.
- alex
["kdecore.exp" (text/plain)]
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;
};
["kdeui.exp" (text/plain)]
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;
};
["kio.exp" (text/plain)]
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;
};
["ksycoca.exp" (text/plain)]
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*;
};
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic