glapi: fix bug with tls and relocs
authorGeorge Sapountzis <gsapountzis@gmail.com>
Tue, 9 Mar 2010 22:43:01 +0000 (00:43 +0200)
committerGeorge Sapountzis <gsapountzis@gmail.com>
Wed, 10 Mar 2010 16:44:47 +0000 (18:44 +0200)
add_dispatch (driver) and maybe get_proc_address (client) may be called before
set_dispatch is called, which results in generate_entrypoint using an unreloced
function template.

src/mesa/glapi/glapi_getproc.c

index 5a8c6953ac212147d0e613c1e6229b69d4b02e0c..295657875dcda712de94c0ffac36b14ce5b8800d 100644 (file)
@@ -405,6 +405,7 @@ _glapi_add_dispatch( const char * const * function_names,
    unsigned i;
    int offset = ~0;
 
+   init_glapi_relocs_once();
 
    (void) memset( is_static, 0, sizeof( is_static ) );
    (void) memset( entry, 0, sizeof( entry ) );
@@ -533,6 +534,8 @@ _glapi_get_proc_address(const char *funcName)
    _glapi_proc func;
    struct _glapi_function * entry;
 
+   init_glapi_relocs_once();
+
 #ifdef MANGLE
    /* skip the prefix on the name */
    if (funcName[1] != 'g' || funcName[2] != 'l')