Bug 57098 - Many extension functions exported by libGL.so.1
Summary: Many extension functions exported by libGL.so.1
Status: NEW
Alias: None
Product: Mesa
Classification: Unclassified
Component: Other (show other bugs)
Version: git
Hardware: Other All
: medium normal
Assignee: mesa-dev
QA Contact:
Depends on:
Reported: 2012-11-13 21:58 UTC by Alexander Monakov
Modified: 2013-01-29 22:39 UTC (History)
3 users (show)

See Also:
i915 platform:
i915 features:

GL exports checking script (7.45 KB, text/plain)
2012-11-13 21:58 UTC, Alexander Monakov

Note You need to log in before you can comment on or make changes to this bug.
Description Alexander Monakov 2012-11-13 21:58:27 UTC
Created attachment 70035 [details]
GL exports checking script

Current OpenGL ABI specifies that libraries need not export functions beyond GLX 1.4, OpenGL 1.2 and GL_ARB_multitexture.  Anything else must be obtained via glXGetProcAddress.  Current Mesa exports a lot more than that, and I was told today on #dri-devel IRC that it's a bug that ought to be reported.

I'm attaching a simple script that has a whitelist of OpenGL functions corresponding to the above ABI subset, and prints exported functions that are not from that subset.  The whitelist counts 494 functions, and running the script on my git build of Mesa produces a list of 848 functions.

Known (to me) applications that ignore the OpenGL ABI and explicitely link against extension functions:

1. Braid. My bugreport here: https://bugzilla.icculus.org/show_bug.cgi?id=5759#c0
2. Trine 2. No public bugzilla, reported to developers in private e-mail.
3. Enemy Territory: tries to use dlopen instead of glXGetProcAddress.
4. Waking Mars. Not reported yet.
5. Steam for Linux. List of imported extensions here: https://github.com/amonakov/primus/issues/21#issuecomment-10185661
6. Some Webkit-related library used in Linux Steam attempts to load extensions with dlopen. Not analyzed, not reported yet.
Comment 1 Matt Turner 2013-01-29 22:39:45 UTC
We talked about this on IRC and it seems we've missed our opportunity to remove wrongly-exported functions.

At this point what we want to do is make sure that no new symbols are exported.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.