diff options
author | tnn <tnn@pkgsrc.org> | 2020-02-22 07:52:01 +0000 |
---|---|---|
committer | tnn <tnn@pkgsrc.org> | 2020-02-22 07:52:01 +0000 |
commit | 9653ee36eab218864ede4e348d3d67e8ac8201fc (patch) | |
tree | de4c2fc0cb5eb227d8043983e317f90778560942 /graphics | |
parent | 2ca6a762d0eadc6aa32bdd8067c513a0220dbcf1 (diff) | |
download | pkgsrc-9653ee36eab218864ede4e348d3d67e8ac8201fc.tar.gz |
MesaLib: port x86_64 tls dispatch changes to i386 also
Diffstat (limited to 'graphics')
-rw-r--r-- | graphics/MesaLib/Makefile | 4 | ||||
-rw-r--r-- | graphics/MesaLib/distinfo | 4 | ||||
-rw-r--r-- | graphics/MesaLib/patches/patch-src_mapi_entry__x86__tls.h | 55 |
3 files changed, 35 insertions, 28 deletions
diff --git a/graphics/MesaLib/Makefile b/graphics/MesaLib/Makefile index 11a1d6ef9a6..afcc4bffe18 100644 --- a/graphics/MesaLib/Makefile +++ b/graphics/MesaLib/Makefile @@ -1,8 +1,8 @@ -# $NetBSD: Makefile,v 1.185 2020/02/21 21:52:24 tnn Exp $ +# $NetBSD: Makefile,v 1.186 2020/02/22 07:52:01 tnn Exp $ DISTNAME= mesa-19.2.7 PKGNAME= ${DISTNAME:S/mesa/MesaLib/} -PKGREVISION= 5 +PKGREVISION= 6 CATEGORIES= graphics MASTER_SITES= https://mesa.freedesktop.org/archive/ EXTRACT_SUFX= .tar.xz diff --git a/graphics/MesaLib/distinfo b/graphics/MesaLib/distinfo index 9992c6ae387..32f8445b32f 100644 --- a/graphics/MesaLib/distinfo +++ b/graphics/MesaLib/distinfo @@ -1,4 +1,4 @@ -$NetBSD: distinfo,v 1.149 2020/02/21 21:52:24 tnn Exp $ +$NetBSD: distinfo,v 1.150 2020/02/22 07:52:01 tnn Exp $ SHA1 (mesa-19.2.7.tar.xz) = 9b8ebf66770353a48bd710e12e2727fb33645f44 RMD160 (mesa-19.2.7.tar.xz) = 5323b623ac22c168b86548cf6d842ce004e346a9 @@ -31,7 +31,7 @@ SHA1 (patch-src_intel_perf_gen__perf.c) = 526f36d96bd9d72893764da2b9e78cb9b70de9 SHA1 (patch-src_intel_tools_aubinator__error__decode.c) = d8f636e3c3e76763a505a1dce23de0b198ad62fa SHA1 (patch-src_loader_loader.c) = 303e941f9b8afa6ee8053107af01e2c26e6ff118 SHA1 (patch-src_mapi_entry__x86-64__tls.h) = cbbb95b96414609a9cd05af75c9544f8e6938280 -SHA1 (patch-src_mapi_entry__x86__tls.h) = 11c0f5302d305a77f3a1780d44a2c61f48a66273 +SHA1 (patch-src_mapi_entry__x86__tls.h) = c8ad1cb3854efeba8d709a66bdddb818854820ea SHA1 (patch-src_mapi_u__current.c) = 4e3ec6e253af3737f77ecd43e56044ba2b81e699 SHA1 (patch-src_mapi_u__current.h) = 9f4744681381a0959fda2926a436f296c89577f3 SHA1 (patch-src_mesa_main_extensions.c) = 2f48bdb1176c2878bb33bcfab7556172b50a987e diff --git a/graphics/MesaLib/patches/patch-src_mapi_entry__x86__tls.h b/graphics/MesaLib/patches/patch-src_mapi_entry__x86__tls.h index 50176077620..780cff5a8f5 100644 --- a/graphics/MesaLib/patches/patch-src_mapi_entry__x86__tls.h +++ b/graphics/MesaLib/patches/patch-src_mapi_entry__x86__tls.h @@ -1,39 +1,46 @@ -$NetBSD: patch-src_mapi_entry__x86__tls.h,v 1.3 2019/08/21 13:35:28 nia Exp $ +$NetBSD: patch-src_mapi_entry__x86__tls.h,v 1.4 2020/02/22 07:52:01 tnn Exp $ NetBSD only supports zero-initialized initial-exec tls variables in conjuction with dlopen(3) at the moment. -Fix --enable-glx-tls with clang. From FreeBSD. - -table_noop_array is only defined for shared-glapi. -es1api and es2api are not going to be patched for NetBSD. - ---- src/mapi/entry_x86_tls.h.orig 2018-01-18 21:30:29.000000000 +0000 +--- src/mapi/entry_x86_tls.h.orig 2019-12-04 22:10:14.000000000 +0000 +++ src/mapi/entry_x86_tls.h -@@ -56,10 +56,27 @@ __asm__(".balign 16\n" +@@ -43,6 +43,21 @@ __asm__("x86_current_tls:\n\t" + "movl " ENTRY_CURRENT_TABLE "@GOTNTPOFF(%eax), %eax\n\t" + "ret"); + ++#if defined(__NetBSD__) ++__asm__("x86_current_table_helper:\n\t" ++ "movl %gs:(%eax), %eax\n\t" \ ++ "testl %eax, %eax\n\t" \ ++ "je 1f\n\t" \ ++ "ret\n\t" \ ++ "1:\n\t" \ ++ "call 2f\n\t" \ ++ "2:\n\t" \ ++ "popl %eax\n\t" \ ++ "addl $_GLOBAL_OFFSET_TABLE_+[.-2b], %eax\n\t" \ ++ "call *" ENTRY_CURRENT_TABLE_GET "@GOT(%eax)\n\t" \ ++ "ret"); ++#endif ++ + #ifndef GLX_X86_READONLY_TEXT + __asm__(".section wtext, \"awx\", @progbits"); + #endif /* GLX_X86_READONLY_TEXT */ +@@ -56,10 +71,17 @@ __asm__(".balign 16\n" ".balign 16\n" \ func ":" -+#if defined(__NetBSD__) && defined(MAPI_MODE_GLAPI) -+extern const mapi_func table_noop_array[]; ++#if defined(__NetBSD__) ++#define STUB_ASM_CODE(slot) \ ++ "call x86_current_tls\n\t" \ ++ "call x86_current_table_helper\n\t" \ ++ "jmp *(4 * " slot ")(%eax)" ++#else #define STUB_ASM_CODE(slot) \ "call x86_current_tls\n\t" \ "movl %gs:(%eax), %eax\n\t" \ -+ "testl %eax, %eax\n\t" \ -+ "je 1f\n\t" \ -+ "jmp *(4 * " slot ")(%eax)\n\t" \ -+ "1:\n\t" \ -+ "call 2f\n" \ -+ "2:\n\t" \ -+ "popl %eax\n\t" \ -+ "addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %eax\n\t" \ -+ "movl table_noop_array@GOT(%eax), %eax\n\t" \ "jmp *(4 * " slot ")(%eax)" -+#else -+#define STUB_ASM_CODE(slot) \ -+ "call x86_current_tls\n\t" \ -+ "movl %gs:(%eax), %eax\n\t" \ -+ "jmp *(4 * " slot ")(%eax)" +#endif #define MAPI_TMP_STUB_ASM_GCC |