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.rog...@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 <r...@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.rog...@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) -- To UNSUBSCRIBE, email to debian-x-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/e1pzr0v-00041z...@alioth.debian.org