Bug 812 - Drivers don't have _glapi_DispatchTSD weak symbol
Drivers don't have _glapi_DispatchTSD weak symbol
Status: RESOLVED FIXED
Product: DRI
Classification: Unclassified
Component: General
DRI git
x86 (IA32) Linux (All)
: high normal
Assigned To: Default DRI bug account
:
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2004-06-29 12:14 UTC by Ian Romanick
Modified: 2005-08-04 22:14 UTC (History)
0 users

See Also:
i915 platform:
i915 features:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Ian Romanick 2004-06-29 12:14:45 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.
Comment 1 Ian Romanick 2005-08-06 08:14:10 UTC
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.