> I'd say it would be better to reuse *-def.cpp files (didn't know something > like that existed).
I've preprocessed all *-def.cpp files included in XFree86/xc/lib, gathered all symbols currently exported from XFree86 shared libraries, all undefined symbols in > 5800 shared libraries and binaries I found on my box which are satisfied by one of XFree86 shared libraries and attached are results. The first is a MUST list, symbols which are exported from XFree86 shared libraries now when there is no anonymous version script, are not exported when an anonymous versions script created from stock *-def.cpp file is applied and are used by some binary or shared library (including other shared libraries in the XFree86 collection). There is IMHO no way other than adding these to *-def.cpp files (any issues with this)? For libGL.so, as anonymous version scripts accept wildcards, I think we should use gl* wildcard, as it is too error-prone to list all the gl* functions. For libGLU.so, I think we should export everything, no version script on Linux. Second is a MAY list. These are symbols ATM exported from the shared libraries, which would be hidden by linker script but which looked to me like they are in the standard namespace of the libraries and thus might be good candidates for exports. Can anyone please review these and tell me if there are some which definitely shouldn't be exported? I can supply a tarball with all the symbols ATM exported, exported via *-def.cpp, used etc. to interested parties if you want to do more investigations. I'll follow up with a patch which exports MUST + current *-def.cpp ones and will wait for responses about the MAY list (or candidates not even on MAY list). Jakub
libGL.so XF86DRIAuthConnection XF86DRICloseConnection XF86DRICloseFullScreen XF86DRICreateContext XF86DRICreateDrawable XF86DRIDestroyContext XF86DRIDestroyDrawable XF86DRIGetClientDriverName XF86DRIGetDeviceInfo XF86DRIGetDrawableInfo XF86DRIOpenConnection XF86DRIOpenFullScreen XF86DRIQueryDirectRenderingCapable XF86DRIQueryVersion __glXFindDRIScreen __glXInitialize _gl_tls_Context _glapi_Context _glapi_add_entrypoint _glapi_check_multithread _glapi_get_context _glapi_get_dispatch_table_size _glapi_noop_enable_warnings _glapi_set_context _glapi_set_dispatch _glthread_GetID glColorSubTable glColorTable glColorTableEXT glConvolutionFilter1D glConvolutionFilter2D glFogCoorddvEXT glFogCoordfEXT glFogCoordfvEXT glMultiTexCoord1dvARB glMultiTexCoord1fARB glMultiTexCoord1fvARB glMultiTexCoord1ivARB glMultiTexCoord1svARB glMultiTexCoord2dvARB glMultiTexCoord2fARB glMultiTexCoord2fvARB glMultiTexCoord2ivARB glMultiTexCoord2svARB glMultiTexCoord3dvARB glMultiTexCoord3fARB glMultiTexCoord3fvARB glMultiTexCoord3ivARB glMultiTexCoord3svARB glMultiTexCoord4dvARB glMultiTexCoord4fARB glMultiTexCoord4fvARB glMultiTexCoord4ivARB glMultiTexCoord4svARB glSecondaryColor3bvEXT glSecondaryColor3dvEXT glSecondaryColor3fEXT glSecondaryColor3fvEXT glSecondaryColor3ivEXT glSecondaryColor3svEXT glSecondaryColor3ubEXT glSecondaryColor3ubvEXT glSecondaryColor3uivEXT glSecondaryColor3usvEXT libGLU.so export all? libICE.so _IceTransNoListen libXaw.so.7 _XawTextGetSTRING libXaw.so.6 _XawTextGetSTRING libXcursor.so XcursorImageHash libXext.so XShmAttach XShmCreateImage XShmCreatePixmap XShmDetach XShmGetEventBase XShmGetImage XShmPixmapFormat XShmPutImage XShmQueryExtension XShmQueryVersion libXrandr.so XRRConfigCurrentConfiguration XRRConfigCurrentRate XRRConfigRates XRRConfigRotations XRRConfigSizes XRRFreeScreenConfigInfo XRRRates XRRSelectInput XRRSetScreenConfigAndRate XRRUpdateConfiguration libXrender.so XRenderCreateAnimCursor libXt.so _XtCountVaList _XtDefaultWarningMsg _XtVaToArgList colorConvertArgs
libGL.so DRI_glXUseXFont XF86DRIQueryExtension __glFreeAttributeState __glXClientInfo __glXCloseDisplay __glXDebug __glXExtensionInfo __glXFlushRenderBuffer __glXFreeContext __glXGetCurrentContext __glXInitVertexArrayState __glXNewIndirectAPI __glXRegisterExtensions __glXRegisterGLXExtensionString __glXRegisterGLXFunction __glXSendLargeCommand __glXSetCurrentContext __glXSetupForCommand __glXmutex __glXstrdup _gl_tls_Dispatch _gl_tls_GLXContext _gl_tls_RealDispatch _glapi_begin_dispatch_override _glapi_check_table _glapi_end_dispatch_override _glapi_get_dispatch _glapi_get_override_dispatch _glapi_get_proc_address _glapi_get_proc_name _glapi_get_proc_offset _glapi_get_version _glthread_GetTSD _glthread_InitTSD _glthread_SetTSD driCreateDisplay glActiveTexture glActiveTextureARB glAreTexturesResidentEXT glArrayElementEXT glBindTextureEXT glBlendColor glBlendEquation glBlendFuncSeparateEXT glClientActiveTexture glClientActiveTextureARB glColorPointerEXT glColorSubTableEXT glColorTableParameterfv glColorTableParameterfvSGI glColorTableParameteriv glColorTableParameterivSGI glColorTableSGI glCombinerInputNV glCombinerOutputNV glCombinerParameterfNV glCombinerParameterfvNV glCombinerParameteriNV glCombinerParameterivNV glCompressedTexImage1D glCompressedTexImage1DARB glCompressedTexImage2D glCompressedTexImage2DARB glCompressedTexImage3D glCompressedTexImage3DARB glCompressedTexSubImage1D glCompressedTexSubImage1DARB glCompressedTexSubImage2D glCompressedTexSubImage2DARB glCompressedTexSubImage3D glCompressedTexSubImage3DARB glConvolutionFilter1DEXT glConvolutionFilter2DEXT glConvolutionParameterf glConvolutionParameterfEXT glConvolutionParameterfv glConvolutionParameterfvEXT glConvolutionParameteri glConvolutionParameteriEXT glConvolutionParameteriv glConvolutionParameterivEXT glCopyColorSubTable glCopyColorSubTableEXT glCopyColorTable glCopyColorTableSGI glCopyConvolutionFilter1D glCopyConvolutionFilter1DEXT glCopyConvolutionFilter2D glCopyConvolutionFilter2DEXT glCopyTexImage1DEXT glCopyTexImage2DEXT glCopyTexSubImage1DEXT glCopyTexSubImage2DEXT glCopyTexSubImage3DEXT glCullParameterdvEXT glCullParameterfvEXT glDeleteTexturesEXT glDetailTexFuncSGIS glDrawArraysEXT glDrawRangeElementsEXT glEdgeFlagPointerEXT glFinalCombinerInputNV glFlushRasterSGIX glFlushVertexArrayRangeNV glFogCoordPointerEXT glFogCoorddEXT glFragmentColorMaterialSGIX glFragmentLightModelfSGIX glFragmentLightModelfvSGIX glFragmentLightModeliSGIX glFragmentLightModelivSGIX glFragmentLightfSGIX glFragmentLightfvSGIX glFragmentLightiSGIX glFragmentLightivSGIX glFragmentMaterialfSGIX glFragmentMaterialfvSGIX glFragmentMaterialiSGIX glFragmentMaterialivSGIX glFrameZoomSGIX glGenTexturesEXT glGetColorTable glGetColorTableEXT glGetColorTableParameterfv glGetColorTableParameterfvEXT glGetColorTableParameterfvSGI glGetColorTableParameteriv glGetColorTableParameterivEXT glGetColorTableParameterivSGI glGetColorTableSGI glGetCombinerInputParameterfvNV glGetCombinerInputParameterivNV glGetCombinerOutputParameterfvNV glGetCombinerOutputParameterivNV glGetCompressedTexImage glGetCompressedTexImageARB glGetConvolutionFilter glGetConvolutionFilterEXT glGetConvolutionParameterfv glGetConvolutionParameterfvEXT glGetConvolutionParameteriv glGetConvolutionParameterivEXT glGetDetailTexFuncSGIS glGetFinalCombinerInputParameterfvNV glGetFinalCombinerInputParameterivNV glGetFragmentLightfvSGIX glGetFragmentLightivSGIX glGetFragmentMaterialfvSGIX glGetFragmentMaterialivSGIX glGetHistogram glGetHistogramEXT glGetHistogramParameterfv glGetHistogramParameterfvEXT glGetHistogramParameteriv glGetHistogramParameterivEXT glGetInstrumentsSGIX glGetListParameterfvSGIX glGetListParameterivSGIX glGetMinmax glGetMinmaxEXT glGetMinmaxParameterfv glGetMinmaxParameterfvEXT glGetMinmaxParameteriv glGetMinmaxParameterivEXT glGetPixelTexGenParameterfvSGIS glGetPixelTexGenParameterivSGIS glGetPointervEXT glGetSeparableFilter glGetSeparableFilterEXT glGetSharpenTexFuncSGIS glGetTexFilterFuncSGIS glHintPGI glHistogram glHistogramEXT glIndexFuncEXT glIndexMaterialEXT glIndexPointerEXT glInstrumentsBufferSGIX glIsTextureEXT glLightEnviSGIX glListParameterfSGIX glListParameterfvSGIX glListParameteriSGIX glListParameterivSGIX glLoadTransposeMatrixd glLoadTransposeMatrixdARB glLoadTransposeMatrixf glLoadTransposeMatrixfARB glLockArraysEXT glMinmax glMinmaxEXT glMultTransposeMatrixd glMultTransposeMatrixdARB glMultTransposeMatrixf glMultTransposeMatrixfARB glMultiTexCoord1d glMultiTexCoord1dARB glMultiTexCoord1dv glMultiTexCoord1f glMultiTexCoord1fv glMultiTexCoord1i glMultiTexCoord1iARB glMultiTexCoord1iv glMultiTexCoord1s glMultiTexCoord1sARB glMultiTexCoord1sv glMultiTexCoord2d glMultiTexCoord2dARB glMultiTexCoord2dv glMultiTexCoord2f glMultiTexCoord2fv glMultiTexCoord2i glMultiTexCoord2iARB glMultiTexCoord2iv glMultiTexCoord2s glMultiTexCoord2sARB glMultiTexCoord2sv glMultiTexCoord3d glMultiTexCoord3dARB glMultiTexCoord3dv glMultiTexCoord3f glMultiTexCoord3fv glMultiTexCoord3i glMultiTexCoord3iARB glMultiTexCoord3iv glMultiTexCoord3s glMultiTexCoord3sARB glMultiTexCoord3sv glMultiTexCoord4d glMultiTexCoord4dARB glMultiTexCoord4dv glMultiTexCoord4f glMultiTexCoord4fv glMultiTexCoord4i glMultiTexCoord4iARB glMultiTexCoord4iv glMultiTexCoord4s glMultiTexCoord4sARB glMultiTexCoord4sv glNormalPointerEXT glPixelTexGenParameterfSGIS glPixelTexGenParameterfvSGIS glPixelTexGenParameteriSGIS glPixelTexGenParameterivSGIS glPixelTexGenSGIX glPointParameterfEXT glPointParameterfSGIS glPointParameterfvEXT glPointParameterfvSGIS glPollInstrumentsSGIX glPolygonOffsetEXT glPrioritizeTexturesEXT glReadInstrumentsSGIX glReferencePlaneSGIX glResetHistogram glResetHistogramEXT glResetMinmax glResetMinmaxEXT glResizeBuffersMESA glSampleCoverage glSampleCoverageARB glSampleMaskEXT glSampleMaskSGIS glSamplePassARB glSamplePatternEXT glSamplePatternSGIS glSecondaryColor3bEXT glSecondaryColor3dEXT glSecondaryColor3iEXT glSecondaryColor3sEXT glSecondaryColor3uiEXT glSecondaryColor3usEXT glSecondaryColorPointerEXT glSeparableFilter2D glSeparableFilter2DEXT glSharpenTexFuncSGIS glSpriteParameterfSGIX glSpriteParameterfvSGIX glSpriteParameteriSGIX glSpriteParameterivSGIX glStartInstrumentsSGIX glStopInstrumentsSGIX glTagSampleBufferSGIX glTbufferMask3DFX glTexCoordPointerEXT glTexFilterFuncSGIS glTexImage3DEXT glTexImage4DSGIS glTexSubImage1DEXT glTexSubImage2DEXT glTexSubImage3DEXT glTexSubImage4DSGIS glUnlockArraysEXT glVertexArrayRangeNV glVertexPointerEXT glVertexWeightPointerEXT glVertexWeightfEXT glVertexWeightfvEXT glWindowPos2dMESA glWindowPos2dvMESA glWindowPos2fMESA glWindowPos2fvMESA glWindowPos2iMESA glWindowPos2ivMESA glWindowPos2sMESA glWindowPos2svMESA glWindowPos3dMESA glWindowPos3dvMESA glWindowPos3fMESA glWindowPos3fvMESA glWindowPos3iMESA glWindowPos3ivMESA glWindowPos3sMESA glWindowPos3svMESA glWindowPos4dMESA glWindowPos4dvMESA glWindowPos4fMESA glWindowPos4fvMESA glWindowPos4iMESA glWindowPos4ivMESA glWindowPos4sMESA glWindowPos4svMESA glXAllocateMemoryNV glXBindChannelToWindowSGIX glXBindSwapBarrierSGIX glXChannelRectSGIX glXChannelRectSyncSGIX glXChooseFBConfig glXChooseFBConfigSGIX glXCopySubBufferMESA glXCreateContextWithConfigSGIX glXCreateGLXPbufferSGIX glXCreateGLXPixmapMESA glXCreateGLXPixmapWithConfigSGIX glXCreateNewContext glXCreatePbuffer glXCreatePixmap glXCreateWindow glXCushionSGI glXDestroyGLXPbufferSGIX glXDestroyPbuffer glXDestroyPixmap glXDestroyWindow glXFreeMemoryNV glXGetAGPOffsetMESA glXGetCurrentDisplayEXT glXGetCurrentReadDrawable glXGetCurrentReadDrawableSGI glXGetFBConfigAttrib glXGetFBConfigAttribSGIX glXGetFBConfigFromVisualSGIX glXGetFBConfigs glXGetProcAddress glXGetProcAddressARB glXGetSelectedEvent glXGetSelectedEventSGIX glXGetTransparentIndexSUN glXGetVideoSyncSGI glXGetVisualFromFBConfig glXGetVisualFromFBConfigSGIX glXJoinSwapGroupSGIX glXMakeContextCurrent glXMakeCurrentReadSGI glXQueryChannelDeltasSGIX glXQueryChannelRectSGIX glXQueryContext glXQueryDrawable glXQueryGLXPbufferSGIX glXQueryMaxSwapBarriersSGIX glXReleaseBuffersMESA glXSelectEvent glXSelectEventSGIX glXSet3DfxModeMESA glXSwapIntervalSGI glXWaitVideoSyncSGI libOSMesa.so MESA_DEBUG_FLAGS MESA_VERBOSE OSMesaCreateContextExt __glCoreCreateContext __glCoreNopDispatch libX11.so KeySymToUcs4 XkbChangeKeycodeRange Xutf8DrawImageString Xutf8DrawString Xutf8DrawText Xutf8LookupString Xutf8ResetIC Xutf8SetWMProperties Xutf8TextEscapement Xutf8TextExtents Xutf8TextPerCharExtents libXaw.so.7 CvtEdgeTypeToString XawAddPixmapLoader XawBooleanExpression XawCallProcAction XawCreateDisplayList XawCreateDisplayListClass XawDeclareAction XawDeclareDisplayListProc XawDestroyDisplayList XawDisplayListInitialize XawDisplayListString XawFindArgVal XawFreeParamsStruct XawGetActionResList XawGetActionVarList XawGetDisplayListClass XawGetValuesAction XawInitializeDefaultConverters XawLoadPixmap XawParseBoolean XawParseParamsString XawPixmapFromXPixmap XawPixmapsInitialize XawPrintActionErrorMsg XawReshapeWidget XawRunDisplayList XawSetValuesAction XawTextGetSink XawTextLastPosition XawTextScroll XawTextSinkAddProperty XawTextSinkBeginPaint XawTextSinkCombineProperty XawTextSinkConvertPropertyList XawTextSinkCopyProperty XawTextSinkDoPaint XawTextSinkEndPaint XawTextSinkGetProperty XawTextSinkPreparePaint XawTextSourceAddAnchor XawTextSourceAddEntity XawTextSourceAnchorAndEntity XawTextSourceClearEntities XawTextSourceFindAnchor XawTextSourceNextAnchor XawTextSourcePrevAnchor XawTextSourceRemoveAnchor XawTipDisable XawTipEnable XawTypeToStringWarning XawVendorStructureNotifyHandler libXaw.so.6 CvtEdgeTypeToString XawTextGetSink XawTextLastPosition XawTextScroll XawTypeToStringWarning XawVendorStructureNotifyHandler libXcursor.so XcursorGetThemeCore XcursorImagesLoadCursor XcursorLibraryShape XcursorNoticeCreateBitmap XcursorNoticePutBitmap XcursorSetThemeCore XcursorSupportsAnim XcursorTryShapeBitmapCursor libXext.so XTestFakeAckType XTestInputActionType libXft1.so XftFreeTypeClose XftFreeTypeGet XftFreeTypeGlyphExists XftFreeTypeOpen XftFreeTypeQuery XftFreeTypeSetFace XftGlyphCheck XftGlyphLoad XftMatrixEqual XftMatrixMultiply XftMatrixRotate XftMatrixScale XftMatrixShear XftPatternAddMatrix XftPatternGetMatrix XftRenderExtents16 XftRenderExtents32 XftRenderExtents8 XftRenderExtentsUtf8 XftRenderString16 XftRenderString32 XftRenderString8 XftRenderStringUtf8 libXi.so XInput_find_display libXmu.so XmuAppendSegment XmuAreaAnd XmuAreaCopy XmuAreaDup XmuAreaNot XmuCvtLongToString XmuNewSegment XmuOptimizeArea XmuScanlineAnd XmuScanlineAndSegment XmuScanlineCopy XmuScanlineEqu XmuScanlineNot XmuScanlineOr XmuScanlineXorSegment XmuValidArea XmuValidScanline libXp.so XpCheckExtInit XpGetImageResolution libXrandr.so XRRConfigTimes XRRExtensionInfo XRRExtensionName libXrender.so XRenderExtensionInfo XRenderExtensionName XRenderQueryPictIndexValues libXt.so XtAppPeekEvent_SkipTimer libXtst.so XRecordIdBaseMask libdps.so DPSGlobalContext DPSLastUserObjectIndex DPSSysNames DPSSysNamesAux DPSglobals XDPSContextTimedOut XDPSCreateStandardColormaps XDPSQuitBlocking XDPSconvProcs XDPSrawProcs gAutoFlush gCSDPS gForceCSDPS gForceFlush gForceLaunchHack gNXSndBufSize gNXSyncGCMode gSecretAgentPID gTotalPaused gXDPSNXErrorCode libpsres.so CheckPSResourceTime FreePSResourceStorage PSResEncoding PSResFileWarningHandler PSResFontAFM PSResFontBDF PSResFontBDFSizes PSResFontFamily PSResFontOutline PSResFontPrebuilt PSResForm PSResFree PSResMalloc PSResPattern PSResProcSet PSResRealloc