Bugzilla – Bug 812
Drivers don't have _glapi_DispatchTSD weak symbol
Last modified: 2005-08-04 22:14:10 UTC
As the TLS work progress, the convention used by drivers to get the pointer to
the current dispatch table from libGL changes. In single-threaded mode, the
variable _glapi_DispatchTSD holds a pointer to the dispatch table. In
multi-threaded mode, that variable is NULL, and the function _glapi_get_dispatch
must be called. In order to support older versions of libGL (i.e., ones that
don't have _glapi_DispatchTSD) an ELF "weak" symbol was added to dri_util.c.
For drivers built in the Mesa tree, this symbol shows up, as weak, in the
*_dri.so files. However, the *_dri.so files built in the DRI don't have it.
The net result is these drivers won't work with, for example, the libGL from the
current Xorg tree. I suspect that the problem is just the options passed to gcc
when the *_dri.so is linked.
The weak version of _glapi_DispatchTSD was removed from dri_util.c. As stated
in the bug report, this was only needed to support versions of libGL that did
not have this symbol. Versions of libGL without this symbol are no longer
supported at all, so it is totally irrelevant.