diff options
author | Pavel Vinogradov | 2021-08-04 21:31:16 -0400 |
---|---|---|
committer | Pavel Vinogradov | 2021-08-04 21:31:16 -0400 |
commit | 1944d4e0101dd95eac486db1565908402071e349 (patch) | |
tree | 23e8ad9443c71bdf58ba899f0318f7b582c3da01 /graphics-libs | |
parent | 7913469f997f3c111cc9ce87cca96ef9e59a58f3 (diff) |
grraphics-libs/mesa: version 21.2.0
Diffstat (limited to 'graphics-libs')
-rwxr-xr-x | graphics-libs/mesa/DETAILS | 4 | ||||
-rw-r--r-- | graphics-libs/mesa/HISTORY | 4 | ||||
-rwxr-xr-x | graphics-libs/mesa/PRE_BUILD | 4 | ||||
-rw-r--r-- | graphics-libs/mesa/patches/0001-mapi--use-global-dynamic-TLS--kill-asm-stubs.patch | 1008 |
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 - |