mesa: Changes to 'ubuntu'
debian/changelog | 13
debian/patches/113_partially_fix_tls.diff |12961 ++++++++++++++++++++++++++++++
debian/patches/series | 1
debian/rules | 5
4 files changed, 12980 insertions(+)
New commits:
commit 3503c21a4ab764b776af79538c364a86aec82142
Author: Christopher James Halse Rogers <christopher.halse.rogers@canonical.com>
Date: Tue Mar 15 10:37:29 2011 +1100
Partially fix TLS madness, breaking IA32 asm in the process
diff --git a/debian/changelog b/debian/changelog
index 91e5407..2616748 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,16 @@
+mesa (7.10.1-0ubuntu2) natty; urgency=low
+
+ * The “stop SIGSEGVing unrelated code” upload.
+ * debian/patches/113_partially_fix_tls.diff:
+ - Fix TLS usage: initial-exec is not appropriate for a library that
+ can be dynamically loaded with dlopen. (LP: #259219)
+ - Partial patch: missing IA32 assembler dispatch code.
+ * debian/rules:
+ - Build without optimised assembler on i386, as we haven't fixed that
+ yet. Opens LP #735188.
+
+ -- Christopher James Halse Rogers <raof@ubuntu.com> Tue, 15 Mar 2011 10:24:52 +1100
+
mesa (7.10.1-0ubuntu1) natty; urgency=low
* New upstream bugfix release.
diff --git a/debian/patches/113_partially_fix_tls.diff b/debian/patches/113_partially_fix_tls.diff
new file mode 100644
index 0000000..14ca915
--- /dev/null
+++ b/debian/patches/113_partially_fix_tls.diff
@@ -0,0 +1,12961 @@
+commit 7354b4a95976915f4496f24944cbe9df93d1f8af
+Author: Christopher James Halse Rogers <christopher.halse.rogers@canonical.com>
+Date: Tue Mar 15 09:56:23 2011 +1100
+
+ Stage changes to extract interesting ones
+
+Index: mesa/src/egl/main/eglcurrent.c
+===================================================================
+--- mesa.orig/src/egl/main/eglcurrent.c 2011-03-15 09:56:31.000000000 +1100
++++ mesa/src/egl/main/eglcurrent.c 2011-03-15 10:29:33.819054325 +1100
+@@ -24,7 +24,7 @@
+
+ #ifdef GLX_USE_TLS
+ static __thread const _EGLThreadInfo *_egl_TLS
+- __attribute__ ((tls_model("initial-exec")));
++ __attribute__ ((tls_model("global-dynamic")));
+ #endif
+
+ static INLINE void _eglSetTSD(const _EGLThreadInfo *t)
+Index: mesa/src/glx/glxclient.h
+===================================================================
+--- mesa.orig/src/glx/glxclient.h 2011-03-15 10:29:26.000000000 +1100
++++ mesa/src/glx/glxclient.h 2011-03-15 10:29:33.819054325 +1100
+@@ -619,7 +619,7 @@
+ # if defined( GLX_USE_TLS )
+
+ extern __thread void *__glX_tls_Context
+- __attribute__ ((tls_model("initial-exec")));
++ __attribute__ ((tls_model("global-dynamic")));
+
+ # define __glXGetCurrentContext() __glX_tls_Context
+
+Index: mesa/src/glx/glxcurrent.c
+===================================================================
+--- mesa.orig/src/glx/glxcurrent.c 2011-03-15 09:56:31.000000000 +1100
++++ mesa/src/glx/glxcurrent.c 2011-03-15 10:29:33.819054325 +1100
+@@ -86,7 +86,7 @@
+ * \b never be \c NULL. This is important! Because of this
+ * \c __glXGetCurrentContext can be implemented as trivial macro.
+ */
+-__thread void *__glX_tls_Context __attribute__ ((tls_model("initial-exec")))
++__thread void *__glX_tls_Context __attribute__ ((tls_model("global-dynamic")))
+ = &dummyContext;
+
+ _X_HIDDEN void
+Index: mesa/src/mapi/glapi/gen/gl_x86-64_asm.py
+===================================================================
+--- mesa.orig/src/mapi/glapi/gen/gl_x86-64_asm.py 2011-03-15 09:56:31.000000000 +1100
++++ mesa/src/mapi/glapi/gen/gl_x86-64_asm.py 2011-03-15 10:29:33.819054325 +1100
+@@ -153,8 +153,16 @@
+ print ''
+ print '\t.p2align\t4,,15'
+ print '_x86_64_get_dispatch:'
+- print '\tmovq\t_glapi_tls_Dispatch@GOTTPOFF(%rip), %rax'
+- print '\tmovq\t%fs:(%rax), %rax'
++# print '\tpush\t%rdi'
++ # print '\tmovq\t_glapi_tls_Dispatch@GOTTPOFF(%rip), %rax'
++ # print '\tmovq\t%fs:(%rax), %rax'
++ print '\t.byte\t0x66'
++ print '\tleaq\t_glapi_tls_Dispatch@tlsgd(%rip), %rdi'
++ print '\t.word\t0x6666'
++ print '\trex64'
++ print '\tcall\t__tls_get_addr@plt'
++ print '\tmovq\t(%rax), %rax'
++# print '\tpop\t%rdi'
+ print '\tret'
+ print '\t.size\t_x86_64_get_dispatch, .-_x86_64_get_dispatch'
+ print ''
+@@ -248,7 +256,9 @@
+ print '\tHIDDEN(GL_PREFIX(%s))' % (name)
+ print 'GL_PREFIX(%s):' % (name)
+ print '#if defined(GLX_USE_TLS)'
++ save_all_regs(registers)
+ print '\tcall\t_x86_64_get_dispatch@PLT'
++ restore_all_regs(registers)
+ print '\tmovq\t%u(%%rax), %%r11' % (f.offset * 8)
+ print '\tjmp\t*%r11'
+ print '#elif defined(PTHREADS)'
+Index: mesa/src/mapi/glapi/glapi.h
+===================================================================
+--- mesa.orig/src/mapi/glapi/glapi.h 2011-03-15 09:56:31.000000000 +1100
++++ mesa/src/mapi/glapi/glapi.h 2011-03-15 10:29:33.819054325 +1100
+@@ -86,10 +86,10 @@
+ #if defined (GLX_USE_TLS)
+
+ _GLAPI_EXPORT extern __thread struct _glapi_table * _glapi_tls_Dispatch
+- __attribute__((tls_model("initial-exec")));
++ __attribute__((tls_model("global-dynamic")));
+
+ _GLAPI_EXPORT extern __thread void * _glapi_tls_Context
+- __attribute__((tls_model("initial-exec")));
++ __attribute__((tls_model("global-dynamic")));
+
+ _GLAPI_EXPORT extern const struct _glapi_table *_glapi_Dispatch;
+ _GLAPI_EXPORT extern const void *_glapi_Context;
+Index: mesa/src/mapi/mapi/u_current.c
+===================================================================
+--- mesa.orig/src/mapi/mapi/u_current.c 2011-03-15 09:56:31.000000000 +1100
++++ mesa/src/mapi/mapi/u_current.c 2011-03-15 10:30:39.391465724 +1100
+@@ -100,11 +100,11 @@
+ #if defined(GLX_USE_TLS)
+
+ __thread struct mapi_table *u_current_table_tls
+- __attribute__((tls_model("initial-exec")))
++ __attribute__((tls_model("global-dynamic")))
+ = (struct mapi_table *) table_noop_array;
+
+ __thread void *u_current_user_tls
+- __attribute__((tls_model("initial-exec")));
++ __attribute__((tls_model("global-dynamic")));
+
+ const struct mapi_table *u_current_table;
+ const void *u_current_user;
+Index: mesa/src/mapi/mapi/u_current.h
+===================================================================
+--- mesa.orig/src/mapi/mapi/u_current.h 2011-03-15 09:56:31.000000000 +1100
++++ mesa/src/mapi/mapi/u_current.h 2011-03-15 10:31:25.813168981 +1100
+@@ -31,10 +31,10 @@
+ #ifdef GLX_USE_TLS
+
+ extern __thread struct mapi_table *u_current_table_tls
+- __attribute__((tls_model("initial-exec")));
++ __attribute__((tls_model("global-dynamic")));
+
+ extern __thread void *u_current_user_tls
+- __attribute__((tls_model("initial-exec")));
++ __attribute__((tls_model("global-dynamic")));
+
+ extern const struct mapi_table *u_current_table;
+ extern const void *u_current_user;
+Index: mesa/src/mesa/drivers/x11/glxapi.c
+===================================================================
+--- mesa.orig/src/mesa/drivers/x11/glxapi.c 2011-03-15 09:56:32.000000000 +1100
++++ mesa/src/mesa/drivers/x11/glxapi.c 2011-03-15 10:29:33.819054325 +1100
+@@ -160,7 +160,7 @@
+ */
+ #if defined(GLX_USE_TLS)
+ PUBLIC __thread void * CurrentContext
+- __attribute__((tls_model("initial-exec")));
++ __attribute__((tls_model("global-dynamic")));
+ #elif defined(THREADS)
+ static _glthread_TSD ContextTSD; /**< Per-thread context pointer */
+ #else
+Index: mesa/src/mapi/glapi/glapi_x86-64.S
+===================================================================
+--- mesa.orig/src/mapi/glapi/glapi_x86-64.S 2011-03-15 10:29:48.579597730 +1100
++++ mesa/src/mapi/glapi/glapi_x86-64.S 2011-03-15 10:31:47.573966382 +1100
+@@ -60,8 +60,12 @@
+
+ .p2align 4,,15
+ _x86_64_get_dispatch:
+- movq _glapi_tls_Dispatch@GOTTPOFF(%rip), %rax
+- movq %fs:(%rax), %rax
++ .byte 0x66
++ leaq _glapi_tls_Dispatch@tlsgd(%rip), %rdi
++ .word 0x6666
++ rex64
++ call __tls_get_addr@plt
++ movq (%rax), %rax
+ ret
+ .size _x86_64_get_dispatch, .-_x86_64_get_dispatch
+
+@@ -88,7 +92,13 @@
+ .type GL_PREFIX(NewList), @function
+ GL_PREFIX(NewList):
+ #if defined(GLX_USE_TLS)
++ pushq %rdi
++ pushq %rsi
++ pushq %rbp
+ call _x86_64_get_dispatch@PLT
++ popq %rbp
++ popq %rsi
++ popq %rdi
+ movq 0(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -125,7 +135,9 @@
+ .type GL_PREFIX(EndList), @function
+ GL_PREFIX(EndList):
+ #if defined(GLX_USE_TLS)
++ pushq %rbp
+ call _x86_64_get_dispatch@PLT
++ popq %rbp
+ movq 8(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -154,7 +166,9 @@
+ .type GL_PREFIX(CallList), @function
+ GL_PREFIX(CallList):
+ #if defined(GLX_USE_TLS)
++ pushq %rdi
+ call _x86_64_get_dispatch@PLT
++ popq %rdi
+ movq 16(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -183,7 +197,13 @@
+ .type GL_PREFIX(CallLists), @function
+ GL_PREFIX(CallLists):
+ #if defined(GLX_USE_TLS)
++ pushq %rdi
++ pushq %rsi
++ pushq %rdx
+ call _x86_64_get_dispatch@PLT
++ popq %rdx
++ popq %rsi
++ popq %rdi
+ movq 24(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -220,7 +240,13 @@
+ .type GL_PREFIX(DeleteLists), @function
+ GL_PREFIX(DeleteLists):
+ #if defined(GLX_USE_TLS)
++ pushq %rdi
++ pushq %rsi
++ pushq %rbp
+ call _x86_64_get_dispatch@PLT
++ popq %rbp
++ popq %rsi
++ popq %rdi
+ movq 32(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -257,7 +283,9 @@
+ .type GL_PREFIX(GenLists), @function
+ GL_PREFIX(GenLists):
+ #if defined(GLX_USE_TLS)
++ pushq %rdi
+ call _x86_64_get_dispatch@PLT
++ popq %rdi
+ movq 40(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -286,7 +314,9 @@
+ .type GL_PREFIX(ListBase), @function
+ GL_PREFIX(ListBase):
+ #if defined(GLX_USE_TLS)
++ pushq %rdi
+ call _x86_64_get_dispatch@PLT
++ popq %rdi
+ movq 48(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -315,7 +345,9 @@
+ .type GL_PREFIX(Begin), @function
+ GL_PREFIX(Begin):
+ #if defined(GLX_USE_TLS)
++ pushq %rdi
+ call _x86_64_get_dispatch@PLT
++ popq %rdi
+ movq 56(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -344,7 +376,23 @@
+ .type GL_PREFIX(Bitmap), @function
+ GL_PREFIX(Bitmap):
+ #if defined(GLX_USE_TLS)
++ subq $56, %rsp
++ movq %rdi, (%rsp)
++ movq %rsi, 8(%rsp)
++ movq %xmm0, 16(%rsp)
++ movq %xmm1, 24(%rsp)
++ movq %xmm2, 32(%rsp)
++ movq %xmm3, 40(%rsp)
++ movq %rdx, 48(%rsp)
+ call _x86_64_get_dispatch@PLT
++ movq 48(%rsp), %rdx
++ movq 40(%rsp), %xmm3
++ movq 32(%rsp), %xmm2
++ movq 24(%rsp), %xmm1
++ movq 16(%rsp), %xmm0
++ movq 8(%rsp), %rsi
++ movq (%rsp), %rdi
++ addq $56, %rsp
+ movq 64(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -401,7 +449,13 @@
+ .type GL_PREFIX(Color3b), @function
+ GL_PREFIX(Color3b):
+ #if defined(GLX_USE_TLS)
++ pushq %rdi
++ pushq %rsi
++ pushq %rdx
+ call _x86_64_get_dispatch@PLT
++ popq %rdx
++ popq %rsi
++ popq %rdi
+ movq 72(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -438,7 +492,9 @@
+ .type GL_PREFIX(Color3bv), @function
+ GL_PREFIX(Color3bv):
+ #if defined(GLX_USE_TLS)
++ pushq %rdi
+ call _x86_64_get_dispatch@PLT
++ popq %rdi
+ movq 80(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -467,7 +523,15 @@
+ .type GL_PREFIX(Color3d), @function
+ GL_PREFIX(Color3d):
+ #if defined(GLX_USE_TLS)
++ subq $24, %rsp
++ movq %xmm0, (%rsp)
++ movq %xmm1, 8(%rsp)
++ movq %xmm2, 16(%rsp)
+ call _x86_64_get_dispatch@PLT
++ movq 16(%rsp), %xmm2
++ movq 8(%rsp), %xmm1
++ movq (%rsp), %xmm0
++ addq $24, %rsp
+ movq 88(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -508,7 +572,9 @@
+ .type GL_PREFIX(Color3dv), @function
+ GL_PREFIX(Color3dv):
+ #if defined(GLX_USE_TLS)
++ pushq %rdi
+ call _x86_64_get_dispatch@PLT
++ popq %rdi
+ movq 96(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -537,7 +603,15 @@
+ .type GL_PREFIX(Color3f), @function
+ GL_PREFIX(Color3f):
+ #if defined(GLX_USE_TLS)
++ subq $24, %rsp
++ movq %xmm0, (%rsp)
++ movq %xmm1, 8(%rsp)
++ movq %xmm2, 16(%rsp)
+ call _x86_64_get_dispatch@PLT
++ movq 16(%rsp), %xmm2
++ movq 8(%rsp), %xmm1
++ movq (%rsp), %xmm0
++ addq $24, %rsp
+ movq 104(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -578,7 +652,9 @@
+ .type GL_PREFIX(Color3fv), @function
+ GL_PREFIX(Color3fv):
+ #if defined(GLX_USE_TLS)
++ pushq %rdi
+ call _x86_64_get_dispatch@PLT
++ popq %rdi
+ movq 112(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -607,7 +683,13 @@
+ .type GL_PREFIX(Color3i), @function
+ GL_PREFIX(Color3i):
+ #if defined(GLX_USE_TLS)
++ pushq %rdi
++ pushq %rsi
++ pushq %rdx
+ call _x86_64_get_dispatch@PLT
++ popq %rdx
++ popq %rsi
++ popq %rdi
+ movq 120(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -644,7 +726,9 @@
+ .type GL_PREFIX(Color3iv), @function
+ GL_PREFIX(Color3iv):
+ #if defined(GLX_USE_TLS)
++ pushq %rdi
+ call _x86_64_get_dispatch@PLT
++ popq %rdi
+ movq 128(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -673,7 +757,13 @@
+ .type GL_PREFIX(Color3s), @function
+ GL_PREFIX(Color3s):
+ #if defined(GLX_USE_TLS)
++ pushq %rdi
++ pushq %rsi
++ pushq %rdx
+ call _x86_64_get_dispatch@PLT
++ popq %rdx
++ popq %rsi
++ popq %rdi
+ movq 136(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -710,7 +800,9 @@
+ .type GL_PREFIX(Color3sv), @function
+ GL_PREFIX(Color3sv):
+ #if defined(GLX_USE_TLS)
++ pushq %rdi
+ call _x86_64_get_dispatch@PLT
++ popq %rdi
+ movq 144(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -739,7 +831,13 @@
+ .type GL_PREFIX(Color3ub), @function
+ GL_PREFIX(Color3ub):
+ #if defined(GLX_USE_TLS)
++ pushq %rdi
++ pushq %rsi
++ pushq %rdx
+ call _x86_64_get_dispatch@PLT
++ popq %rdx
++ popq %rsi
++ popq %rdi
+ movq 152(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -776,7 +874,9 @@
+ .type GL_PREFIX(Color3ubv), @function
+ GL_PREFIX(Color3ubv):
+ #if defined(GLX_USE_TLS)
++ pushq %rdi
+ call _x86_64_get_dispatch@PLT
++ popq %rdi
+ movq 160(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -805,7 +905,13 @@
+ .type GL_PREFIX(Color3ui), @function
+ GL_PREFIX(Color3ui):
+ #if defined(GLX_USE_TLS)
++ pushq %rdi
++ pushq %rsi
++ pushq %rdx
+ call _x86_64_get_dispatch@PLT
++ popq %rdx
++ popq %rsi
++ popq %rdi
+ movq 168(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -842,7 +948,9 @@
+ .type GL_PREFIX(Color3uiv), @function
+ GL_PREFIX(Color3uiv):
+ #if defined(GLX_USE_TLS)
++ pushq %rdi
+ call _x86_64_get_dispatch@PLT
++ popq %rdi
+ movq 176(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -871,7 +979,13 @@
+ .type GL_PREFIX(Color3us), @function
+ GL_PREFIX(Color3us):
+ #if defined(GLX_USE_TLS)
++ pushq %rdi
++ pushq %rsi
++ pushq %rdx
+ call _x86_64_get_dispatch@PLT
++ popq %rdx
++ popq %rsi
++ popq %rdi
+ movq 184(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -908,7 +1022,9 @@
+ .type GL_PREFIX(Color3usv), @function
+ GL_PREFIX(Color3usv):
+ #if defined(GLX_USE_TLS)
++ pushq %rdi
+ call _x86_64_get_dispatch@PLT
++ popq %rdi
+ movq 192(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -937,7 +1053,17 @@
+ .type GL_PREFIX(Color4b), @function
+ GL_PREFIX(Color4b):
+ #if defined(GLX_USE_TLS)
++ pushq %rdi
++ pushq %rsi
++ pushq %rdx
++ pushq %rcx
++ pushq %rbp
+ call _x86_64_get_dispatch@PLT
++ popq %rbp
++ popq %rcx
++ popq %rdx
++ popq %rsi
++ popq %rdi
+ movq 200(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -982,7 +1108,9 @@
+ .type GL_PREFIX(Color4bv), @function
+ GL_PREFIX(Color4bv):
+ #if defined(GLX_USE_TLS)
++ pushq %rdi
+ call _x86_64_get_dispatch@PLT
++ popq %rdi
+ movq 208(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -1011,7 +1139,17 @@
+ .type GL_PREFIX(Color4d), @function
+ GL_PREFIX(Color4d):
+ #if defined(GLX_USE_TLS)
++ subq $40, %rsp
++ movq %xmm0, (%rsp)
++ movq %xmm1, 8(%rsp)
++ movq %xmm2, 16(%rsp)
++ movq %xmm3, 24(%rsp)
+ call _x86_64_get_dispatch@PLT
++ movq 24(%rsp), %xmm3
++ movq 16(%rsp), %xmm2
++ movq 8(%rsp), %xmm1
++ movq (%rsp), %xmm0
++ addq $40, %rsp
+ movq 216(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -1056,7 +1194,9 @@
+ .type GL_PREFIX(Color4dv), @function
+ GL_PREFIX(Color4dv):
+ #if defined(GLX_USE_TLS)
++ pushq %rdi
+ call _x86_64_get_dispatch@PLT
++ popq %rdi
+ movq 224(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -1085,7 +1225,17 @@
+ .type GL_PREFIX(Color4f), @function
+ GL_PREFIX(Color4f):
+ #if defined(GLX_USE_TLS)
++ subq $40, %rsp
++ movq %xmm0, (%rsp)
++ movq %xmm1, 8(%rsp)
++ movq %xmm2, 16(%rsp)
++ movq %xmm3, 24(%rsp)
+ call _x86_64_get_dispatch@PLT
++ movq 24(%rsp), %xmm3
++ movq 16(%rsp), %xmm2
++ movq 8(%rsp), %xmm1
++ movq (%rsp), %xmm0
++ addq $40, %rsp
+ movq 232(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -1130,7 +1280,9 @@
+ .type GL_PREFIX(Color4fv), @function
+ GL_PREFIX(Color4fv):
+ #if defined(GLX_USE_TLS)
++ pushq %rdi
+ call _x86_64_get_dispatch@PLT
++ popq %rdi
+ movq 240(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -1159,7 +1311,17 @@
+ .type GL_PREFIX(Color4i), @function
+ GL_PREFIX(Color4i):
+ #if defined(GLX_USE_TLS)
++ pushq %rdi
++ pushq %rsi
++ pushq %rdx
++ pushq %rcx
++ pushq %rbp
+ call _x86_64_get_dispatch@PLT
++ popq %rbp
++ popq %rcx
++ popq %rdx
++ popq %rsi
++ popq %rdi
+ movq 248(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -1204,7 +1366,9 @@
+ .type GL_PREFIX(Color4iv), @function
+ GL_PREFIX(Color4iv):
+ #if defined(GLX_USE_TLS)
++ pushq %rdi
+ call _x86_64_get_dispatch@PLT
++ popq %rdi
+ movq 256(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -1233,7 +1397,17 @@
+ .type GL_PREFIX(Color4s), @function
+ GL_PREFIX(Color4s):
+ #if defined(GLX_USE_TLS)
++ pushq %rdi
++ pushq %rsi
++ pushq %rdx
++ pushq %rcx
++ pushq %rbp
+ call _x86_64_get_dispatch@PLT
++ popq %rbp
++ popq %rcx
++ popq %rdx
++ popq %rsi
++ popq %rdi
+ movq 264(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -1278,7 +1452,9 @@
+ .type GL_PREFIX(Color4sv), @function
+ GL_PREFIX(Color4sv):
+ #if defined(GLX_USE_TLS)
++ pushq %rdi
+ call _x86_64_get_dispatch@PLT
++ popq %rdi
+ movq 272(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -1307,7 +1483,17 @@
+ .type GL_PREFIX(Color4ub), @function
+ GL_PREFIX(Color4ub):
+ #if defined(GLX_USE_TLS)
++ pushq %rdi
++ pushq %rsi
++ pushq %rdx
++ pushq %rcx
++ pushq %rbp
+ call _x86_64_get_dispatch@PLT
++ popq %rbp
++ popq %rcx
++ popq %rdx
++ popq %rsi
++ popq %rdi
+ movq 280(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -1352,7 +1538,9 @@
+ .type GL_PREFIX(Color4ubv), @function
+ GL_PREFIX(Color4ubv):
+ #if defined(GLX_USE_TLS)
++ pushq %rdi
+ call _x86_64_get_dispatch@PLT
++ popq %rdi
+ movq 288(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -1381,7 +1569,17 @@
+ .type GL_PREFIX(Color4ui), @function
+ GL_PREFIX(Color4ui):
+ #if defined(GLX_USE_TLS)
++ pushq %rdi
++ pushq %rsi
++ pushq %rdx
++ pushq %rcx
++ pushq %rbp
+ call _x86_64_get_dispatch@PLT
++ popq %rbp
++ popq %rcx
++ popq %rdx
++ popq %rsi
++ popq %rdi
+ movq 296(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -1426,7 +1624,9 @@
+ .type GL_PREFIX(Color4uiv), @function
+ GL_PREFIX(Color4uiv):
+ #if defined(GLX_USE_TLS)
++ pushq %rdi
+ call _x86_64_get_dispatch@PLT
++ popq %rdi
+ movq 304(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -1455,7 +1655,17 @@
+ .type GL_PREFIX(Color4us), @function
+ GL_PREFIX(Color4us):
+ #if defined(GLX_USE_TLS)
++ pushq %rdi
++ pushq %rsi
++ pushq %rdx
++ pushq %rcx
++ pushq %rbp
+ call _x86_64_get_dispatch@PLT
++ popq %rbp
++ popq %rcx
++ popq %rdx
++ popq %rsi
++ popq %rdi
+ movq 312(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -1500,7 +1710,9 @@
+ .type GL_PREFIX(Color4usv), @function
+ GL_PREFIX(Color4usv):
+ #if defined(GLX_USE_TLS)
++ pushq %rdi
+ call _x86_64_get_dispatch@PLT
++ popq %rdi
+ movq 320(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -1529,7 +1741,9 @@
+ .type GL_PREFIX(EdgeFlag), @function
+ GL_PREFIX(EdgeFlag):
+ #if defined(GLX_USE_TLS)
++ pushq %rdi
+ call _x86_64_get_dispatch@PLT
++ popq %rdi
+ movq 328(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -1558,7 +1772,9 @@
+ .type GL_PREFIX(EdgeFlagv), @function
+ GL_PREFIX(EdgeFlagv):
+ #if defined(GLX_USE_TLS)
++ pushq %rdi
+ call _x86_64_get_dispatch@PLT
++ popq %rdi
+ movq 336(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -1587,7 +1803,9 @@
+ .type GL_PREFIX(End), @function
+ GL_PREFIX(End):
+ #if defined(GLX_USE_TLS)
++ pushq %rbp
+ call _x86_64_get_dispatch@PLT
++ popq %rbp
+ movq 344(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -1616,7 +1834,11 @@
+ .type GL_PREFIX(Indexd), @function
+ GL_PREFIX(Indexd):
+ #if defined(GLX_USE_TLS)
++ subq $8, %rsp
++ movq %xmm0, (%rsp)
+ call _x86_64_get_dispatch@PLT
++ movq (%rsp), %xmm0
++ addq $8, %rsp
+ movq 352(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -1649,7 +1871,9 @@
+ .type GL_PREFIX(Indexdv), @function
+ GL_PREFIX(Indexdv):
+ #if defined(GLX_USE_TLS)
++ pushq %rdi
+ call _x86_64_get_dispatch@PLT
++ popq %rdi
+ movq 360(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -1678,7 +1902,11 @@
+ .type GL_PREFIX(Indexf), @function
+ GL_PREFIX(Indexf):
+ #if defined(GLX_USE_TLS)
++ subq $8, %rsp
++ movq %xmm0, (%rsp)
+ call _x86_64_get_dispatch@PLT
++ movq (%rsp), %xmm0
++ addq $8, %rsp
+ movq 368(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -1711,7 +1939,9 @@
+ .type GL_PREFIX(Indexfv), @function
+ GL_PREFIX(Indexfv):
+ #if defined(GLX_USE_TLS)
++ pushq %rdi
+ call _x86_64_get_dispatch@PLT
++ popq %rdi
+ movq 376(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -1740,7 +1970,9 @@
+ .type GL_PREFIX(Indexi), @function
+ GL_PREFIX(Indexi):
+ #if defined(GLX_USE_TLS)
++ pushq %rdi
+ call _x86_64_get_dispatch@PLT
++ popq %rdi
+ movq 384(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -1769,7 +2001,9 @@
+ .type GL_PREFIX(Indexiv), @function
+ GL_PREFIX(Indexiv):
+ #if defined(GLX_USE_TLS)
++ pushq %rdi
+ call _x86_64_get_dispatch@PLT
++ popq %rdi
+ movq 392(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -1798,7 +2032,9 @@
+ .type GL_PREFIX(Indexs), @function
+ GL_PREFIX(Indexs):
+ #if defined(GLX_USE_TLS)
++ pushq %rdi
+ call _x86_64_get_dispatch@PLT
++ popq %rdi
+ movq 400(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -1827,7 +2063,9 @@
+ .type GL_PREFIX(Indexsv), @function
+ GL_PREFIX(Indexsv):
+ #if defined(GLX_USE_TLS)
++ pushq %rdi
+ call _x86_64_get_dispatch@PLT
++ popq %rdi
+ movq 408(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -1856,7 +2094,13 @@
+ .type GL_PREFIX(Normal3b), @function
+ GL_PREFIX(Normal3b):
+ #if defined(GLX_USE_TLS)
++ pushq %rdi
++ pushq %rsi
++ pushq %rdx
+ call _x86_64_get_dispatch@PLT
++ popq %rdx
++ popq %rsi
++ popq %rdi
+ movq 416(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -1893,7 +2137,9 @@
+ .type GL_PREFIX(Normal3bv), @function
+ GL_PREFIX(Normal3bv):
+ #if defined(GLX_USE_TLS)
++ pushq %rdi
+ call _x86_64_get_dispatch@PLT
++ popq %rdi
+ movq 424(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -1922,7 +2168,15 @@
+ .type GL_PREFIX(Normal3d), @function
+ GL_PREFIX(Normal3d):
+ #if defined(GLX_USE_TLS)
++ subq $24, %rsp
++ movq %xmm0, (%rsp)
++ movq %xmm1, 8(%rsp)
++ movq %xmm2, 16(%rsp)
+ call _x86_64_get_dispatch@PLT
++ movq 16(%rsp), %xmm2
++ movq 8(%rsp), %xmm1
++ movq (%rsp), %xmm0
++ addq $24, %rsp
+ movq 432(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -1963,7 +2217,9 @@
+ .type GL_PREFIX(Normal3dv), @function
+ GL_PREFIX(Normal3dv):
+ #if defined(GLX_USE_TLS)
++ pushq %rdi
+ call _x86_64_get_dispatch@PLT
++ popq %rdi
+ movq 440(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -1992,7 +2248,15 @@
+ .type GL_PREFIX(Normal3f), @function
+ GL_PREFIX(Normal3f):
+ #if defined(GLX_USE_TLS)
++ subq $24, %rsp
++ movq %xmm0, (%rsp)
++ movq %xmm1, 8(%rsp)
++ movq %xmm2, 16(%rsp)
+ call _x86_64_get_dispatch@PLT
++ movq 16(%rsp), %xmm2
++ movq 8(%rsp), %xmm1
++ movq (%rsp), %xmm0
++ addq $24, %rsp
+ movq 448(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -2033,7 +2297,9 @@
+ .type GL_PREFIX(Normal3fv), @function
+ GL_PREFIX(Normal3fv):
+ #if defined(GLX_USE_TLS)
++ pushq %rdi
+ call _x86_64_get_dispatch@PLT
++ popq %rdi
+ movq 456(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -2062,7 +2328,13 @@
+ .type GL_PREFIX(Normal3i), @function
+ GL_PREFIX(Normal3i):
+ #if defined(GLX_USE_TLS)
++ pushq %rdi
++ pushq %rsi
++ pushq %rdx
+ call _x86_64_get_dispatch@PLT
++ popq %rdx
++ popq %rsi
++ popq %rdi
+ movq 464(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -2099,7 +2371,9 @@
+ .type GL_PREFIX(Normal3iv), @function
+ GL_PREFIX(Normal3iv):
+ #if defined(GLX_USE_TLS)
++ pushq %rdi
+ call _x86_64_get_dispatch@PLT
++ popq %rdi
+ movq 472(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -2128,7 +2402,13 @@
+ .type GL_PREFIX(Normal3s), @function
+ GL_PREFIX(Normal3s):
+ #if defined(GLX_USE_TLS)
++ pushq %rdi
++ pushq %rsi
++ pushq %rdx
+ call _x86_64_get_dispatch@PLT
++ popq %rdx
++ popq %rsi
++ popq %rdi
+ movq 480(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -2165,7 +2445,9 @@
+ .type GL_PREFIX(Normal3sv), @function
+ GL_PREFIX(Normal3sv):
+ #if defined(GLX_USE_TLS)
++ pushq %rdi
+ call _x86_64_get_dispatch@PLT
++ popq %rdi
+ movq 488(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -2194,7 +2476,13 @@
+ .type GL_PREFIX(RasterPos2d), @function
+ GL_PREFIX(RasterPos2d):
+ #if defined(GLX_USE_TLS)
++ subq $24, %rsp
++ movq %xmm0, (%rsp)
++ movq %xmm1, 8(%rsp)
+ call _x86_64_get_dispatch@PLT
++ movq 8(%rsp), %xmm1
++ movq (%rsp), %xmm0
++ addq $24, %rsp
+ movq 496(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
+@@ -2231,7 +2519,9 @@
+ .type GL_PREFIX(RasterPos2dv), @function
+ GL_PREFIX(RasterPos2dv):
+ #if defined(GLX_USE_TLS)
++ pushq %rdi
+ call _x86_64_get_dispatch@PLT
++ popq %rdi
+ movq 504(%rax), %r11
+ jmp *%r11
+ #elif defined(PTHREADS)
Reply to: