Hello,
Linux Braid executable assumes that the following symbols are exported by libGL.so.1:
glBindFramebufferEXT
glBindRenderbufferEXT
glCheckFramebufferStatusEXT
glCompressedTexImage2DARB
glDeleteFramebuffersEXT
glDrawBuffersARB
glFramebufferRenderbufferEXT
glFramebufferTexture2DEXT
glGenFramebuffersEXT
glGenRenderbuffersEXT
glRenderbufferStorageEXT
glSecondaryColorPointerEXT
However, their presence is not guaranteed even if all corresponding extensions are supported. On the contrary, OpenGL ABI document at http://www.opengl.org/registry/ABI/ specifies the following:
----8<----
3.4. The libraries must export all OpenGL 1.2, GLU 1.3, GLX 1.3, and ARB_multitexture entry points statically.
It's possible (but unlikely) that additional ARB or vendor extensions will be mandated before the ABI is finalized. Applications should not expect to link statically against any entry points not specified here.
----8<----
Note the last sentence. Please obtain the pointers to those functions via glXGetProcAddress instead.
Why do I care: I'm developing an OpenGL offloading hack useful for Linux laptops with Nvidia Optimus hybrid graphics (https://github.com/amonakov/primus) that works by providing an "intermediate" libGL.so.1 and handles rerouting rendering to a rendering slave, reading back the framebuffer, and displaying it via the primary card. Therefore, I need to provide GLX and GL APIs from primus' libGL, and I prefer not adding more functions than required by the OpenGL ABI.
Please also note that Mesa developers expressed a desire to stop providing extension symbols from Mesa's libGL.so as well (sorry, can find the URL to that discussion now).
Thanks.