summaryrefslogtreecommitdiffstats
path: root/graphics-libs
diff options
context:
space:
mode:
authorPavel Vinogradov2021-08-04 21:31:16 -0400
committerPavel Vinogradov2021-08-04 21:31:16 -0400
commit1944d4e0101dd95eac486db1565908402071e349 (patch)
tree23e8ad9443c71bdf58ba899f0318f7b582c3da01 /graphics-libs
parent7913469f997f3c111cc9ce87cca96ef9e59a58f3 (diff)
grraphics-libs/mesa: version 21.2.0
Diffstat (limited to 'graphics-libs')
-rwxr-xr-xgraphics-libs/mesa/DETAILS4
-rw-r--r--graphics-libs/mesa/HISTORY4
-rwxr-xr-xgraphics-libs/mesa/PRE_BUILD4
-rw-r--r--graphics-libs/mesa/patches/0001-mapi--use-global-dynamic-TLS--kill-asm-stubs.patch1008
4 files changed, 6 insertions, 1014 deletions
diff --git a/graphics-libs/mesa/DETAILS b/graphics-libs/mesa/DETAILS
index ced7564369..326fe81793 100755
--- a/graphics-libs/mesa/DETAILS
+++ b/graphics-libs/mesa/DETAILS
@@ -9,8 +9,8 @@ if [[ "${MESA_BRANCH}" == "scm" ]]; then
SOURCE_IGNORE="volatile"
SOURCE_DIRECTORY="${BUILD_DIRECTORY}/${SPELL}-git"
else
- VERSION=21.1.6
- SOURCE_HASH="sha256:b1cb0122f911dfa9fe1f209a7061378c61a1448a280e711511ca72dad9999e37:UPSTREAM_HASH"
+ VERSION=21.2.0
+ SOURCE_HASH="sha256:0cb3c802f4b8e7699b1602c08c29d06a4d532ab5b8f7a64676c4ca6bb8f4d426:UPSTREAM_HASH"
SOURCE=mesa-$VERSION.tar.xz
SOURCE_URL[0]="https://mesa.freedesktop.org/archive/${SOURCE}"
SOURCE_DIRECTORY=${BUILD_DIRECTORY}/mesa-${VERSION}
diff --git a/graphics-libs/mesa/HISTORY b/graphics-libs/mesa/HISTORY
index 07470e2ec2..8ec838665f 100644
--- a/graphics-libs/mesa/HISTORY
+++ b/graphics-libs/mesa/HISTORY
@@ -1,3 +1,7 @@
+2021-08-04 Pavel Vinogradov <public@sourcemage.org>
+ * DETAILS: version 21.2.0
+ * PRE_BUILD, patches/*: dropped the patches
+
2021-07-29 Pavel Vinogradov <public@sourcemage.org>
* DETAILS: version 21.1.6
diff --git a/graphics-libs/mesa/PRE_BUILD b/graphics-libs/mesa/PRE_BUILD
index 348da290d9..43e52fada1 100755
--- a/graphics-libs/mesa/PRE_BUILD
+++ b/graphics-libs/mesa/PRE_BUILD
@@ -1,10 +1,6 @@
default_pre_build &&
cd "$SOURCE_DIRECTORY" &&
-if [[ "${MESA_BRANCH}" == "stable" ]]; then
- apply_patch_dir patches
-fi &&
-
if is_depends_enabled "$SPELL" smgl-gl_select; then
patch -fp1 -i "$SPELL_DIRECTORY"/0001-install-GL-headers-in-.mesa.patch
fi
diff --git a/graphics-libs/mesa/patches/0001-mapi--use-global-dynamic-TLS--kill-asm-stubs.patch b/graphics-libs/mesa/patches/0001-mapi--use-global-dynamic-TLS--kill-asm-stubs.patch
deleted file mode 100644
index 8610d8fcf3..0000000000
--- a/graphics-libs/mesa/patches/0001-mapi--use-global-dynamic-TLS--kill-asm-stubs.patch
+++ /dev/null
@@ -1,1008 +0,0 @@
-From c333fdcd8406049b613df98d06a46763c8138f06 Mon Sep 17 00:00:00 2001
-From: Greg V <greg@unrelenting.technology>
-Date: Sun, 26 Jan 2020 16:03:21 +0300
-Subject: [PATCH] mapi: use global-dynamic TLS, kill asm stubs
-
----
- src/egl/main/eglcurrent.c | 3 +-
- src/glx/glxclient.h | 3 +-
- src/glx/glxcurrent.c | 3 +-
- src/mapi/Makefile.sources | 5 -
- src/mapi/entry.c | 18 ---
- src/mapi/entry_ppc64le_tls.h | 152 -------------------------
- src/mapi/entry_ppc64le_tsd.h | 210 -----------------------------------
- src/mapi/entry_x86-64_tls.h | 143 ------------------------
- src/mapi/entry_x86_tls.h | 156 --------------------------
- src/mapi/entry_x86_tsd.h | 155 --------------------------
- src/mapi/glapi/glapi.h | 6 +-
- src/mapi/glapi/meson.build | 5 -
- src/mapi/u_current.c | 4 +-
- src/mapi/u_current.h | 6 +-
- 14 files changed, 8 insertions(+), 861 deletions(-)
- delete mode 100644 src/mapi/entry_ppc64le_tls.h
- delete mode 100644 src/mapi/entry_ppc64le_tsd.h
- delete mode 100644 src/mapi/entry_x86-64_tls.h
- delete mode 100644 src/mapi/entry_x86_tls.h
- delete mode 100644 src/mapi/entry_x86_tsd.h
-
-diff --git a/src/glx/glxcurrent.c b/src/glx/glxcurrent.c
-index a388df7..4f45283 100644
---- a/src/glx/glxcurrent.c
-+++ b/src/glx/glxcurrent.c
-@@ -76,8 +76,7 @@ _X_HIDDEN pthread_mutex_t __glXmutex = PTHREAD_MUTEX_INITIALIZER;
- * \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")))
-- = &dummyContext;
-+__thread void *__glX_tls_Context = &dummyContext;
-
- _X_HIDDEN void
- __glXSetCurrentContext(struct glx_context * c)
-diff --git a/src/mapi/Makefile.sources b/src/mapi/Makefile.sources
-index 4b83caa..93318ed 100644
---- a/src/mapi/Makefile.sources
-+++ b/src/mapi/Makefile.sources
-@@ -20,11 +20,6 @@ MAPI_UTIL_FILES = \
- MAPI_BRIDGE_FILES = \
- entry.c \
- entry.h \
-- entry_x86-64_tls.h \
-- entry_x86_tls.h \
-- entry_x86_tsd.h \
-- entry_ppc64le_tls.h \
-- entry_ppc64le_tsd.h \
- mapi_tmp.h
-
- MAPI_GLAPI_FILES = \
-diff --git a/src/mapi/entry.c b/src/mapi/entry.c
-index 7ff3c8f..29e7bf9 100644
---- a/src/mapi/entry.c
-+++ b/src/mapi/entry.c
-@@ -45,22 +45,6 @@
- #define ENTRY_CURRENT_TABLE_GET U_STRINGIFY(u_current_get_table_internal)
- #endif
-
--#if defined(USE_X86_ASM) && defined(__GNUC__)
--# ifdef USE_ELF_TLS
--# include "entry_x86_tls.h"
--# else
--# include "entry_x86_tsd.h"
--# endif
--#elif defined(USE_X86_64_ASM) && defined(__GNUC__) && defined(USE_ELF_TLS)
--# include "entry_x86-64_tls.h"
--#elif defined(USE_PPC64LE_ASM) && defined(__GNUC__) && UTIL_ARCH_LITTLE_ENDIAN
--# ifdef USE_ELF_TLS
--# include "entry_ppc64le_tls.h"
--# else
--# include "entry_ppc64le_tsd.h"
--# endif
--#else
--
- static inline const struct _glapi_table *
- entry_current_get(void)
- {
-@@ -103,5 +87,3 @@ entry_patch(mapi_func entry, int slot)
- }
-
- #endif /* MAPI_MODE_BRIDGE */
--
--#endif /* asm */
-diff --git a/src/mapi/entry_ppc64le_tls.h b/src/mapi/entry_ppc64le_tls.h
-deleted file mode 100644
-index e09a117..0000000
---- a/src/mapi/entry_ppc64le_tls.h
-+++ /dev/null
-@@ -1,152 +0,0 @@
--/*
-- * Mesa 3-D graphics library
-- *
-- * Copyright (C) 2017 Red Hat
-- *
-- * Permission is hereby granted, free of charge, to any person obtaining a
-- * copy of this software and associated documentation files (the "Software"),
-- * to deal in the Software without restriction, including without limitation
-- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
-- * and/or sell copies of the Software, and to permit persons to whom the
-- * Software is furnished to do so, subject to the following conditions:
-- *
-- * The above copyright notice and this permission notice shall be included
-- * in all copies or substantial portions of the Software.
-- *
-- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-- * DEALINGS IN THE SOFTWARE.
-- *
-- * Authors:
-- * Ben Crocker <bcrocker@redhat.com>
-- */
--
--#ifdef HAVE_FUNC_ATTRIBUTE_VISIBILITY
--#define HIDDEN __attribute__((visibility("hidden")))
--#else
--#define HIDDEN
--#endif
--
--// NOTE: These must be powers of two:
--#define PPC64LE_ENTRY_SIZE 64
--#define PPC64LE_PAGE_ALIGN 65536
--#if ((PPC64LE_ENTRY_SIZE & (PPC64LE_ENTRY_SIZE - 1)) != 0)
--#error PPC64LE_ENTRY_SIZE must be a power of two!
--#endif
--#if ((PPC64LE_PAGE_ALIGN & (PPC64LE_PAGE_ALIGN - 1)) != 0)
--#error PPC64LE_PAGE_ALIGN must be a power of two!
--#endif
--
--__asm__(".text\n"
-- ".balign " U_STRINGIFY(PPC64LE_ENTRY_SIZE) "\n"
-- "ppc64le_entry_start:");
--
--#define STUB_ASM_ENTRY(func) \
-- ".globl " func "\n" \
-- ".type " func ", @function\n" \
-- ".balign " U_STRINGIFY(PPC64LE_ENTRY_SIZE) "\n" \
-- func ":\n\t" \
-- " addis 2, 12, .TOC.-" func "@ha\n\t" \
-- " addi 2, 2, .TOC.-" func "@l\n\t" \
-- " .localentry " func ", .-" func "\n\t"
--
--#define STUB_ASM_CODE(slot) \
-- " addis 11, 2, " ENTRY_CURRENT_TABLE "@got@tprel@ha\n\t" \
-- " ld 11, " ENTRY_CURRENT_TABLE "@got@tprel@l(11)\n\t" \
-- " add 11, 11," ENTRY_CURRENT_TABLE "@tls\n\t" \
-- " ld 11, 0(11)\n\t" \
-- " ld 12, " slot "*8(11)\n\t" \
-- " mtctr 12\n\t" \
-- " bctr\n" \
--
--#define MAPI_TMP_STUB_ASM_GCC
--#include "mapi_tmp.h"
--
--#ifndef MAPI_MODE_BRIDGE
--
--#include <string.h>
--#include "u_execmem.h"
--
--void
--entry_patch_public(void)
--{
--}
--
--extern char
--ppc64le_entry_start[] HIDDEN;
--
--mapi_func
--entry_get_public(int slot)
--{
-- return (mapi_func) (ppc64le_entry_start + slot * PPC64LE_ENTRY_SIZE);
--}
--
--__asm__(".text\n");
--
--__asm__("ppc64le_dispatch_tls:\n\t"
-- " addis 3, 2, " ENTRY_CURRENT_TABLE "@got@tprel@ha\n\t"
-- " ld 3, " ENTRY_CURRENT_TABLE "@got@tprel@l(3)\n\t"
-- " blr\n"
-- );
--
--extern uint64_t ppc64le_dispatch_tls();
--
--static const uint32_t code_templ[] = {
-- // This should be functionally the same code as would be generated from
-- // the STUB_ASM_CODE macro, but defined as a buffer.
-- // This is used to generate new dispatch stubs. Mesa will copy this
-- // data to the dispatch stub, and then it will patch the slot number and
-- // any addresses that it needs to.
-- // NOTE!!! NOTE!!! NOTE!!!
-- // This representation is correct for both little- and big-endian systems.
-- // However, more work needs to be done for big-endian Linux because it
-- // adheres to an older, AIX-compatible ABI that uses function descriptors.
-- // 1000:
-- 0x7C0802A6, // <ENTRY+00>: mflr 0
-- 0xF8010010, // <ENTRY+04>: std 0, 16(1)
-- 0xE96C0028, // <ENTRY+08>: ld 11, 9000f-1000b+0(12)
-- 0x7D6B6A14, // <ENTRY+12>: add 11, 11, 13
-- 0xE96B0000, // <ENTRY+16>: ld 11, 0(11)
-- 0xE80C0030, // <ENTRY+20>: ld 0, 9000f-1000b+8(12)
-- 0x7D8B002A, // <ENTRY+24>: ldx 12, 11, 0
-- 0x7D8903A6, // <ENTRY+28>: mtctr 12
-- 0x4E800420, // <ENTRY+32>: bctr
-- 0x60000000, // <ENTRY+36>: nop
-- // 9000:
-- 0, 0, // <ENTRY+40>: .quad _glapi_tls_Dispatch
-- 0, 0 // <ENTRY+48>: .quad <slot>*8
--};
--static const uint64_t TEMPLATE_OFFSET_TLS_ADDR = sizeof(code_templ) - 2*8;
--static const uint64_t TEMPLATE_OFFSET_SLOT = sizeof(code_templ) - 1*8;
--
--void
--entry_patch(mapi_func entry, int slot)
--{
-- char *code = (char *) entry;
-- *((uint64_t *) (code + TEMPLATE_OFFSET_TLS_ADDR)) = ppc64le_dispatch_tls();
-- *((uint64_t *) (code + TEMPLATE_OFFSET_SLOT)) = slot * sizeof(mapi_func);
--}
--
--mapi_func
--entry_generate(int slot)
--{
-- char *code;
-- mapi_func entry;
--
-- code = u_execmem_alloc(sizeof(code_templ));
-- if (!code)
-- return NULL;
--
-- memcpy(code, code_templ, sizeof(code_templ));
--
-- entry = (mapi_func) code;
-- entry_patch(entry, slot);
--
-- return entry;
--}
--
--#endif /* MAPI_MODE_BRIDGE */
-diff --git a/src/mapi/entry_ppc64le_tsd.h b/src/mapi/entry_ppc64le_tsd.h
-deleted file mode 100644
-index a583b93..0000000
---- a/src/mapi/entry_ppc64le_tsd.h
-+++ /dev/null
-@@ -1,210 +0,0 @@
--/*
-- * Mesa 3-D graphics library
-- *
-- * Copyright (C) 2017 Red Hat
-- *
-- * Permission is hereby granted, free of charge, to any person obtaining a
-- * copy of this software and associated documentation files (the "Software"),
-- * to deal in the Software without restriction, including without limitation
-- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
-- * and/or sell copies of the Software, and to permit persons to whom the
-- * Software is furnished to do so, subject to the following conditions:
-- *
-- * The above copyright notice and this permission notice shall be included
-- * in all copies or substantial portions of the Software.
-- *
-- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-- * DEALINGS IN THE SOFTWARE.
-- *
-- * Authors:
-- * Ben Crocker <bcrocker@redhat.com>
-- */
--
--#ifdef HAVE_FUNC_ATTRIBUTE_VISIBILITY
--#define HIDDEN __attribute__((visibility("hidden")))
--#else
--#define HIDDEN
--#endif
--
--// NOTE: These must be powers of two:
--#define PPC64LE_ENTRY_SIZE 256
--#define PPC64LE_PAGE_ALIGN 65536
--#if ((PPC64LE_ENTRY_SIZE & (PPC64LE_ENTRY_SIZE - 1)) != 0)
--#error PPC64LE_ENTRY_SIZE must be a power of two!
--#endif
--#if ((PPC64LE_PAGE_ALIGN & (PPC64LE_PAGE_ALIGN - 1)) != 0)
--#error PPC64LE_PAGE_ALIGN must be a power of two!
--#endif
--
--__asm__(".text\n"
-- ".balign " U_STRINGIFY(PPC64LE_ENTRY_SIZE) "\n"
-- "ppc64le_entry_start:");
--
--#define STUB_ASM_ENTRY(func) \
-- ".globl " func "\n" \
-- ".type " func ", @function\n" \
-- ".balign " U_STRINGIFY(PPC64LE_ENTRY_SIZE) "\n" \
-- func ":\n\t" \
-- " addis 2, 12, .TOC.-" func "@ha\n\t" \
-- " addi 2, 2, .TOC.-" func "@l\n\t" \
-- " .localentry " func ", .-" func "\n\t"
--
--#define STUB_ASM_CODE(slot) \
-- " addis 11, 2, " ENTRY_CURRENT_TABLE "@got@ha\n\t" \
-- " ld 11, " ENTRY_CURRENT_TABLE "@got@l(11)\n\t" \
-- " ld 11, 0(11)\n\t" \
-- " cmpldi 11, 0\n\t" \
-- " beq 2000f\n" \
-- "1050:\n\t" \
-- " ld 12, " slot "*8(11)\n\t" \
-- " mtctr 12\n\t" \
-- " bctr\n" \
-- "2000:\n\t" \
-- " mflr 0\n\t" \
-- " std 0, 16(1)\n\t" \
-- " std 2, 40(1)\n\t" \
-- " stdu 1, -144(1)\n\t" \
-- " std 3, 56(1)\n\t" \
-- " std 4, 64(1)\n\t" \
-- " std 5, 72(1)\n\t" \
-- " std 6, 80(1)\n\t" \
-- " std 7, 88(1)\n\t" \
-- " std 8, 96(1)\n\t" \
-- " std 9, 104(1)\n\t" \
-- " std 10, 112(1)\n\t" \
-- " std 12, 128(1)\n\t" \
-- " addis 12, 2, " ENTRY_CURRENT_TABLE_GET "@got@ha\n\t" \
-- " ld 12, " ENTRY_CURRENT_TABLE_GET "@got@l(12)\n\t" \
-- " mtctr 12\n\t" \
-- " bctrl\n\t" \
-- " ld 2, 144+40(1)\n\t" \
-- " mr 11, 3\n\t" \
-- " ld 3, 56(1)\n\t" \
-- " ld 4, 64(1)\n\t" \
-- " ld 5, 72(1)\n\t" \
-- " ld 6, 80(1)\n\t" \
-- " ld 7, 88(1)\n\t" \
-- " ld 8, 96(1)\n\t" \
-- " ld 9, 104(1)\n\t" \
-- " ld 10, 112(1)\n\t" \
-- " ld 12, 128(1)\n\t" \
-- " addi 1, 1, 144\n\t" \
-- " ld 0, 16(1)\n\t" \
-- " mtlr 0\n\t" \
-- " b 1050b\n"
--
--#define MAPI_TMP_STUB_ASM_GCC
--#include "mapi_tmp.h"
--
--#ifndef MAPI_MODE_BRIDGE
--
--#include <string.h>
--#include "u_execmem.h"
--
--void
--entry_patch_public(void)
--{
--}
--
--extern char
--ppc64le_entry_start[] HIDDEN;
--
--mapi_func
--entry_get_public(int slot)
--{
-- return (mapi_func) (ppc64le_entry_start + slot * PPC64LE_ENTRY_SIZE);
--}
--
--static const uint32_t code_templ[] = {
-- // This should be functionally the same code as would be generated from
-- // the STUB_ASM_CODE macro, but defined as a buffer.
-- // This is used to generate new dispatch stubs. Mesa will copy this
-- // data to the dispatch stub, and then it will patch the slot number and
-- // any addresses that it needs to.
-- // NOTE!!! NOTE!!! NOTE!!!
-- // This representation is correct for both little- and big-endian systems.
-- // However, more work needs to be done for big-endian Linux because it
-- // adheres to an older, AIX-compatible ABI that uses function descriptors.
-- // 1000:
-- 0x7C0802A6, // <ENTRY+000>: mflr 0
-- 0xF8010010, // <ENTRY+004>: std 0, 16(1)
-- 0xE96C0098, // <ENTRY+008>: ld 11, 9000f-1000b+0(12)
-- 0xE96B0000, // <ENTRY+012>: ld 11, 0(11)
-- 0x282B0000, // <ENTRY+016>: cmpldi 11, 0
-- 0x41820014, // <ENTRY+020>: beq 2000f
-- // 1050:
-- 0xE80C00A8, // <ENTRY+024>: ld 0, 9000f-1000b+16(12)
-- 0x7D8B002A, // <ENTRY+028>: ldx 12, 11, 0
-- 0x7D8903A6, // <ENTRY+032>: mtctr 12
-- 0x4E800420, // <ENTRY+036>: bctr
-- // 2000:
-- 0xF8410028, // <ENTRY+040>: std 2, 40(1)
-- 0xF821FF71, // <ENTRY+044>: stdu 1, -144(1)
-- 0xF8610038, // <ENTRY+048>: std 3, 56(1)
-- 0xF8810040, // <ENTRY+052>: std 4, 64(1)
-- 0xF8A10048, // <ENTRY+056>: std 5, 72(1)
-- 0xF8C10050, // <ENTRY+060>: std 6, 80(1)
-- 0xF8E10058, // <ENTRY+064>: std 7, 88(1)
-- 0xF9010060, // <ENTRY+068>: std 8, 96(1)
-- 0xF9210068, // <ENTRY+072>: std 9, 104(1)
-- 0xF9410070, // <ENTRY+076>: std 10, 112(1)
-- 0xF9810080, // <ENTRY+080>: std 12, 128(1)
-- 0xE98C00A0, // <ENTRY+084>: ld 12, 9000f-1000b+8(12)
-- 0x7D8903A6, // <ENTRY+088>: mtctr 12
-- 0x4E800421, // <ENTRY+092>: bctrl
-- 0x7C6B1B78, // <ENTRY+096>: mr 11, 3
-- 0xE8610038, // <ENTRY+100>: ld 3, 56(1)
-- 0xE8810040, // <ENTRY+104>: ld 4, 64(1)
-- 0xE8A10048, // <ENTRY+108>: ld 5, 72(1)
-- 0xE8C10050, // <ENTRY+112>: ld 6, 80(1)
-- 0xE8E10058, // <ENTRY+116>: ld 7, 88(1)
-- 0xE9010060, // <ENTRY+120>: ld 8, 96(1)
-- 0xE9210068, // <ENTRY+124>: ld 9, 104(1)
-- 0xE9410070, // <ENTRY+128>: ld 10, 112(1)
-- 0xE9810080, // <ENTRY+132>: ld 12, 128(1)
-- 0x38210090, // <ENTRY+136>: addi 1, 1, 144
-- 0xE8010010, // <ENTRY+140>: ld 0, 16(1)
-- 0x7C0803A6, // <ENTRY+144>: mtlr 0
-- 0x4BFFFF84, // <ENTRY+148>: b 1050b
-- // 9000:
-- 0, 0, // <ENTRY+152>: .quad ENTRY_CURRENT_TABLE
-- 0, 0, // <ENTRY+160>: .quad ENTRY_CURRENT_TABLE_GET
-- 0, 0 // <ENTRY+168>: .quad <slot>*8
--};
--static const uint64_t TEMPLATE_OFFSET_CURRENT_TABLE = sizeof(code_templ) - 3*8;
--static const uint64_t TEMPLATE_OFFSET_CURRENT_TABLE_GET = sizeof(code_templ) - 2*8;
--static const uint64_t TEMPLATE_OFFSET_SLOT = sizeof(code_templ) - 1*8;
--
--void
--entry_patch(mapi_func entry, int slot)
--{
-- char *code = (char *) entry;
-- *((uint64_t *) (code + TEMPLATE_OFFSET_CURRENT_TABLE)) = (uint64_t) ENTRY_CURRENT_TABLE;
-- *((uint64_t *) (code + TEMPLATE_OFFSET_CURRENT_TABLE_GET)) = (uint64_t) ENTRY_CURRENT_TABLE_GET;
-- *((uint64_t *) (code + TEMPLATE_OFFSET_SLOT)) = slot * sizeof(mapi_func);
--}
--
--mapi_func
--entry_generate(int slot)
--{
-- char *code;
-- mapi_func entry;
--
-- code = u_execmem_alloc(sizeof(code_templ));
-- if (!code)
-- return NULL;
--
-- memcpy(code, code_templ, sizeof(code_templ));
--
-- entry = (mapi_func) code;
-- entry_patch(entry, slot);
--
-- return entry;
--}
--
--#endif /* MAPI_MODE_BRIDGE */
-diff --git a/src/mapi/entry_x86-64_tls.h b/src/mapi/entry_x86-64_tls.h
-deleted file mode 100644
-index aebe4cf..0000000
---- a/src/mapi/entry_x86-64_tls.h
-+++ /dev/null
-@@ -1,143 +0,0 @@
--/*
-- * Mesa 3-D graphics library
-- *
-- * Copyright (C) 2010 LunarG Inc.
-- *
-- * Permission is hereby granted, free of charge, to any person obtaining a
-- * copy of this software and associated documentation files (the "Software"),
-- * to deal in the Software without restriction, including without limitation
-- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
-- * and/or sell copies of the Software, and to permit persons to whom the
-- * Software is furnished to do so, subject to the following conditions:
-- *
-- * The above copyright notice and this permission notice shall be included
-- * in all copies or substantial portions of the Software.
-- *
-- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-- * DEALINGS IN THE SOFTWARE.
-- *
-- * Authors:
-- * Chia-I Wu <olv@lunarg.com>
-- */
--
--#ifdef __CET__
--#define ENDBR "endbr64\n\t"
--#else
--#define ENDBR
--#endif
--
--#ifdef HAVE_FUNC_ATTRIBUTE_VISIBILITY
--#define HIDDEN __attribute__((visibility("hidden")))
--#else
--#define HIDDEN
--#endif
--
--__asm__(".text\n"
-- ".balign 32\n"
-- "x86_64_entry_start:");
--
--#define STUB_ASM_ENTRY(func) \
-- ".globl " func "\n" \
-- ".type " func ", @function\n" \
-- ".balign 32\n" \
-- func ":"
--
--#ifndef __ILP32__
--
--#define STUB_ASM_CODE(slot) \
-- ENDBR \
-- "movq " ENTRY_CURRENT_TABLE "@GOTTPOFF(%rip), %rax\n\t" \
-- "movq %fs:(%rax), %r11\n\t" \
-- "jmp *(8 * " slot ")(%r11)"
--
--#else
--
--#define STUB_ASM_CODE(slot) \
-- ENDBR \
-- "movq " ENTRY_CURRENT_TABLE "@GOTTPOFF(%rip), %rax\n\t" \
-- "movl %fs:(%rax), %r11d\n\t" \
-- "movl 4*" slot "(%r11d), %r11d\n\t" \
-- "jmp *%r11"
--
--#endif
--
--#define MAPI_TMP_STUB_ASM_GCC
--#include "mapi_tmp.h"
--
--#ifndef MAPI_MODE_BRIDGE
--
--#include <string.h>
--#include "u_execmem.h"
--
--void
--entry_patch_public(void)
--{
--}
--
--extern char
--x86_64_entry_start[] HIDDEN;
--
--mapi_func
--entry_get_public(int slot)
--{
-- return (mapi_func) (x86_64_entry_start + slot * 32);
--}
--
--void
--entry_patch(mapi_func entry, int slot)
--{
-- char *code = (char *) entry;
-- int offset = 12;
--#ifdef __ILP32__
-- offset = 13;
--#endif
-- *((unsigned int *) (code + offset)) = slot * sizeof(mapi_func);
--}
--
--mapi_func
--entry_generate(int slot)
--{
-- const char code_templ[] = {
--#ifndef __ILP32__
-- /* movq %fs:0, %r11 */
-- 0x64, 0x4c, 0x8b, 0x1c, 0x25, 0x00, 0x00, 0x00, 0x00,
-- /* jmp *0x1234(%r11) */
-- 0x41, 0xff, 0xa3, 0x34, 0x12, 0x00, 0x00,
--#else
-- /* movl %fs:0, %r11d */
-- 0x64, 0x44, 0x8b, 0x1c, 0x25, 0x00, 0x00, 0x00, 0x00,
-- /* movl 0x1234(%r11d), %r11d */
-- 0x67, 0x45, 0x8b, 0x9b, 0x34, 0x12, 0x00, 0x00,
-- /* jmp *%r11 */
-- 0x41, 0xff, 0xe3,
--#endif
-- };
-- unsigned long long addr;
-- char *code;
-- mapi_func entry;
--
-- __asm__("movq " ENTRY_CURRENT_TABLE "@GOTTPOFF(%%rip), %0"
-- : "=r" (addr));
-- if ((addr >> 32) != 0xffffffff)
-- return NULL;
-- addr &= 0xffffffff;
--
-- code = u_execmem_alloc(sizeof(code_templ));
-- if (!code)
-- return NULL;
--
-- memcpy(code, code_templ, sizeof(code_templ));
--
-- *((unsigned int *) (code + 5)) = addr;
-- entry = (mapi_func) code;
-- entry_patch(entry, slot);
--
-- return entry;
--}
--
--#endif /* MAPI_MODE_BRIDGE */
-diff --git a/src/mapi/entry_x86_tls.h b/src/mapi/entry_x86_tls.h
-deleted file mode 100644
-index bdaa973..0000000
---- a/src/mapi/entry_x86_tls.h
-+++ /dev/null
-@@ -1,156 +0,0 @@
--/*
-- * Mesa 3-D graphics library
-- *
-- * Copyright (C) 2010 LunarG Inc.
-- *
-- * Permission is hereby granted, free of charge, to any person obtaining a
-- * copy of this software and associated documentation files (the "Software"),
-- * to deal in the Software without restriction, including without limitation
-- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
-- * and/or sell copies of the Software, and to permit persons to whom the
-- * Software is furnished to do so, subject to the following conditions:
-- *
-- * The above copyright notice and this permission notice shall be included
-- * in all copies or substantial portions of the Software.
-- *
-- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-- * DEALINGS IN THE SOFTWARE.
-- *
-- * Authors:
-- * Chia-I Wu <olv@lunarg.com>
-- */
--
--#include <string.h>
--
--#ifdef __CET__
--#define ENDBR "endbr32\n\t"
--#else
--#define ENDBR
--#endif
--
--#ifdef HAVE_FUNC_ATTRIBUTE_VISIBILITY
--#define HIDDEN __attribute__((visibility("hidden")))
--#else
--#define HIDDEN
--#endif
--
--#define X86_ENTRY_SIZE 32
--
--__asm__(".text");
--
--__asm__("x86_current_tls:\n\t"
-- "call 1f\n"
-- "1:\n\t"
-- "popl %eax\n\t"
-- "addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %eax\n\t"
-- "movl " ENTRY_CURRENT_TABLE "@GOTNTPOFF(%eax), %eax\n\t"
-- "ret");
--
--#ifndef GLX_X86_READONLY_TEXT
--__asm__(".section wtext, \"awx\", @progbits");
--#endif /* GLX_X86_READONLY_TEXT */
--
--__asm__(".balign 16\n"
-- "x86_entry_start:");
--
--#define STUB_ASM_ENTRY(func) \
-- ".globl " func "\n" \
-- ".type " func ", @function\n" \
-- ".balign 16\n" \
-- func ":"
--
--#define STUB_ASM_CODE(slot) \
-- ENDBR \
-- "call 1f\n" \
-- "1:\n\t" \
-- "popl %eax\n\t" \
-- "addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %eax\n\t" \
-- "movl " ENTRY_CURRENT_TABLE "@GOTNTPOFF(%eax), %eax\n\t" \
-- "movl %gs:(%eax), %eax\n\t" \
-- "jmp *(4 * " slot ")(%eax)"
--
--#define MAPI_TMP_STUB_ASM_GCC
--#include "mapi_tmp.h"
--
--#ifndef GLX_X86_READONLY_TEXT
--__asm__(".balign 16\n"
-- "x86_entry_end:");
--__asm__(".text");
--#endif /* GLX_X86_READONLY_TEXT */
--
--#ifndef MAPI_MODE_BRIDGE
--
--#include "u_execmem.h"
--
--extern unsigned long
--x86_current_tls();
--
--extern char x86_entry_start[] HIDDEN;
--extern char x86_entry_end[] HIDDEN;
--
--static inline mapi_func
--entry_generate_or_patch(int, char *, size_t);
--
--void
--entry_patch_public(void)
--{
--#ifndef GLX_X86_READONLY_TEXT
-- char *entry;
-- int slot = 0;
-- for (entry = x86_entry_start; entry < x86_entry_end;
-- entry += X86_ENTRY_SIZE, ++slot)
-- entry_generate_or_patch(slot, entry, X86_ENTRY_SIZE);
--#endif
--}
--
--mapi_func
--entry_get_public(int slot)
--{
-- return (mapi_func) (x86_entry_start + slot * X86_ENTRY_SIZE);
--}
--
--void
--entry_patch(mapi_func entry, int slot)
--{
-- char *code = (char *) entry;
-- *((unsigned long *) (code + 8)) = slot * sizeof(mapi_func);
--}
--
--static inline mapi_func
--entry_generate_or_patch(int slot, char *code, size_t size)
--{
-- const char code_templ[16] = {
-- 0x65, 0xa1, 0x00, 0x00, 0x00, 0x00, /* movl %gs:0x0, %eax */
-- 0xff, 0xa0, 0x34, 0x12, 0x00, 0x00, /* jmp *0x1234(%eax) */
-- 0x90, 0x90, 0x90, 0x90 /* nop's */
-- };
-- mapi_func entry;
--
-- if (code == NULL) {
-- size = sizeof(code_templ);
-- code = u_execmem_alloc(size);
-- }
-- if (!code || size < sizeof(code_templ))
-- return NULL;
--
-- memcpy(code, code_templ, sizeof(code_templ));
--
-- *((unsigned long *) (code + 2)) = x86_current_tls();
-- entry = (mapi_func) code;
-- entry_patch(entry, slot);
--
-- return entry;
--}
--
--mapi_func
--entry_generate(int slot)
--{
-- return entry_generate_or_patch(slot, NULL, 0);
--}
--
--#endif /* MAPI_MODE_BRIDGE */
-diff --git a/src/mapi/entry_x86_tsd.h b/src/mapi/entry_x86_tsd.h
-deleted file mode 100644
-index f5d9c41..0000000
---- a/src/mapi/entry_x86_tsd.h
-+++ /dev/null
-@@ -1,155 +0,0 @@
--/*
-- * Mesa 3-D graphics library
-- *
-- * Copyright (C) 2010 LunarG Inc.
-- *
-- * Permission is hereby granted, free of charge, to any person obtaining a
-- * copy of this software and associated documentation files (the "Software"),
-- * to deal in the Software without restriction, including without limitation
-- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
-- * and/or sell copies of the Software, and to permit persons to whom the
-- * Software is furnished to do so, subject to the following conditions:
-- *
-- * The above copyright notice and this permission notice shall be included
-- * in all copies or substantial portions of the Software.
-- *
-- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-- * DEALINGS IN THE SOFTWARE.
-- *
-- * Authors:
-- * Chia-I Wu <olv@lunarg.com>
-- */
--
--#ifdef __CET__
--#define ENDBR "endbr32\n\t"
--#else
--#define ENDBR
--#endif
--
--#ifdef HAVE_FUNC_ATTRIBUTE_VISIBILITY
--#define HIDDEN __attribute__((visibility("hidden")))
--#else
--#define HIDDEN
--#endif
--
--#define X86_ENTRY_SIZE 64
--
--__asm__(".text\n");
--
--__asm__("x86_got:\n\t"
-- "call 1f\n"
-- "1:\n\t"
-- "popl %eax\n\t"
-- "addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %eax\n\t"
-- "ret");
--
--__asm__(".balign 32\n"
-- "x86_entry_start:");
--
--#define STUB_ASM_ENTRY(func) \
-- ".globl " func "\n" \
-- ".type " func ", @function\n" \
-- ".balign 32\n" \
-- func ":"
--
--#define LOC_BEGIN_SET_ECX
--#define LOC_END_SET_ECX
--#define LOC_END_JMP
--
--#define STUB_ASM_CODE(slot) \
-- ENDBR \
-- LOC_BEGIN_SET_ECX \
-- "call 1f\n\t" \
-- "1:\n\t" \
-- "popl %ecx\n\t" \
-- "addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx\n\t" \
-- LOC_END_SET_ECX \
-- "movl " ENTRY_CURRENT_TABLE "@GOT(%ecx), %eax\n\t" \
-- "mov (%eax), %eax\n\t" \
-- "testl %eax, %eax\n\t" \
-- "jne 1f\n\t" \
-- "push %ebx\n\t" \
-- "movl %ecx, %ebx\n\t" \
-- "call " ENTRY_CURRENT_TABLE_GET "@PLT\n\t" \
-- "popl %ebx\n\t" \
-- "1:\n\t" \
-- "jmp *(4 * " slot ")(%eax)\n\t" \
-- LOC_END_JMP
--
--#define MAPI_TMP_STUB_ASM_GCC
--#include "mapi_tmp.h"
--
--#ifndef MAPI_MODE_BRIDGE
--
--__asm__(".balign 32\n"
-- "x86_entry_end:");
--
--#undef LOC_BEGIN_SET_ECX
--#undef LOC_END_SET_ECX
--#undef LOC_END_JMP
--#define LOC_BEGIN_SET_ECX "jmp set_ecx\n\t"
--#define LOC_END_SET_ECX "set_ecx:movl $0x12345678, %ecx\n\tloc_end_set_ecx:\n\t"
--#define LOC_END_JMP "loc_end_jmp:"
--
--/* Any number big enough works. This is to make sure the final
-- * jmp is a long jmp */
--__asm__(STUB_ASM_CODE("10000"));
--
--extern const char loc_end_set_ecx[] HIDDEN;
--extern const char loc_end_jmp[] HIDDEN;
--
--#include <string.h>
--#include "u_execmem.h"
--
--extern unsigned long
--x86_got();
--
--extern const char x86_entry_start[] HIDDEN;
--extern const char x86_entry_end[] HIDDEN;
--
--void
--entry_patch_public(void)
--{
--}
--
--mapi_func
--entry_get_public(int slot)
--{
-- return (mapi_func) (x86_entry_start + slot * X86_ENTRY_SIZE);
--}
--
--void
--entry_patch(mapi_func entry, int slot)
--{
-- char *code = (char *) entry;
-- int offset = loc_end_jmp - x86_entry_end - sizeof(unsigned long);
-- *((unsigned long *) (code + offset)) = slot * sizeof(mapi_func);
--}
--
--mapi_func
--entry_generate(int slot)
--{
-- const char *code_templ = x86_entry_end;
-- char *code;
-- mapi_func entry;
--
-- code = u_execmem_alloc(X86_ENTRY_SIZE);
-- if (!code)
-- return NULL;
--
-- memcpy(code, code_templ, X86_ENTRY_SIZE);
-- entry = (mapi_func) code;
-- int ecx_value_off = loc_end_set_ecx - x86_entry_end - sizeof(unsigned long);
-- *((unsigned long *) (code + ecx_value_off)) = x86_got();
--
-- entry_patch(entry, slot);
--
-- return entry;
--}
--
--#endif /* MAPI_MODE_BRIDGE */
-diff --git a/src/mapi/glapi/glapi.h b/src/mapi/glapi/glapi.h
-index d6a0ebf..c4739d6 100644
---- a/src/mapi/glapi/glapi.h
-+++ b/src/mapi/glapi/glapi.h
-@@ -82,11 +82,9 @@ struct _glapi_table;
- extern __declspec(thread) struct _glapi_table * _glapi_tls_Dispatch;
- extern __declspec(thread) void * _glapi_tls_Context;
- #else
--_GLAPI_EXPORT extern __thread struct _glapi_table * _glapi_tls_Dispatch
-- __attribute__((tls_model("initial-exec")));
-+_GLAPI_EXPORT extern __thread struct _glapi_table * _glapi_tls_Dispatch;
-
--_GLAPI_EXPORT extern __thread void * _glapi_tls_Context
-- __attribute__((tls_model("initial-exec")));
-+_GLAPI_EXPORT extern __thread void * _glapi_tls_Context;
- #endif
-
- _GLAPI_EXPORT extern const struct _glapi_table *_glapi_Dispatch;
-diff --git a/src/mapi/glapi/meson.build b/src/mapi/glapi/meson.build
-index 1b8b685..c6bd24b 100644
---- a/src/mapi/glapi/meson.build
-+++ b/src/mapi/glapi/meson.build
-@@ -33,11 +33,6 @@ if with_shared_glapi
- static_glapi_files += files(
- '../entry.c',
- '../entry.h',
-- '../entry_x86-64_tls.h',
-- '../entry_x86_tls.h',
-- '../entry_x86_tsd.h',
-- '../entry_ppc64le_tls.h',
-- '../entry_ppc64le_tsd.h',
- '../mapi_tmp.h',
- )
- static_glapi_files += glapi_mapi_tmp_h
-diff --git a/src/mapi/u_current.c b/src/mapi/u_current.c
-index 7a95e96..05fb5a0 100644
---- a/src/mapi/u_current.c
-+++ b/src/mapi/u_current.c
-@@ -106,11 +106,9 @@ __declspec(thread) struct _glapi_table *u_current_table
- __declspec(thread) void *u_current_context;
- #else
- __thread struct _glapi_table *u_current_table
-- __attribute__((tls_model("initial-exec")))
- = (struct _glapi_table *) table_noop_array;
-
--__thread void *u_current_context
-- __attribute__((tls_model("initial-exec")));
-+__thread void *u_current_context;
- #endif
-
- #else
-diff --git a/src/mapi/u_current.h b/src/mapi/u_current.h
-index e7faa87..092e7fe 100644
---- a/src/mapi/u_current.h
-+++ b/src/mapi/u_current.h
-@@ -29,11 +29,9 @@ struct _glapi_table;
-
- #ifdef USE_ELF_TLS
-
--extern __thread struct _glapi_table *u_current_table
-- __attribute__((tls_model("initial-exec")));
-+extern __thread struct _glapi_table *u_current_table;
-
--extern __thread void *u_current_context
-- __attribute__((tls_model("initial-exec")));
-+extern __thread void *u_current_context;
-
- #else /* USE_ELF_TLS */
-
---
-2.31.1
-