mapi: Fix tls with shared/es-glapi on x86-64
authorBenjamin Franzke <benjaminfranzke@googlemail.com>
Wed, 8 Jun 2011 13:50:25 +0000 (15:50 +0200)
committerChia-I Wu <olv@lunarg.com>
Mon, 13 Jun 2011 04:19:47 +0000 (12:19 +0800)
x86_64_entry_start needs to be declared static in the C code,
in order to have the correct address in entry_get_public
(seems not to be needed on x86).

The compiler needs to lookup a local not a global object.

Otherwise addresses needed for _glapi_proc_address will be computed
from some random offset (0x6400229a61058b48 in my case).

src/mapi/mapi/entry_x86-64_tls.h

index d3b606c8ac5b82a62a21a4a82c0713a0ffd12521..72d4125a6948c523c4648501ed580f7ea39c0344 100644 (file)
@@ -76,10 +76,12 @@ entry_patch_public(void)
 {
 }
 
+static char
+x86_64_entry_start[];
+
 mapi_func
 entry_get_public(int slot)
 {
-   extern char x86_64_entry_start[];
    return (mapi_func) (x86_64_entry_start + slot * 32);
 }