diff --git a/libglvnd-add-bti.patch b/libglvnd-add-bti.patch index 93e2dae..afe1c3c 100644 --- a/libglvnd-add-bti.patch +++ b/libglvnd-add-bti.patch @@ -1,34 +1,37 @@ -From 5dc67a6310e32e0d36527c4eaa1b92c39beb8c8c Mon Sep 17 00:00:00 2001 +From 7107f739398cd96600b039fd748cb1c4822bb400 Mon Sep 17 00:00:00 2001 From: Guillaume Gardet Date: Fri, 21 Jan 2022 09:26:07 +0100 Subject: [PATCH] Add BTI landing pads for aarch64 When Branch Target Identifier (BTI) is enabled on aarch64, -any software which run libglbnd will fail with SIGILL, Illegal instruction. +any software which run libglvnd will fail with SIGILL, Illegal instruction. This is because some assembler code misses the BTI landing pads. See: https://developer.arm.com/documentation/102433/0100/Jump-oriented-programming "hint #34" is the same thing as "BTI C" landing pad, but keep compatibility with systems without BTI enabled. --- - src/GLdispatch/vnd-glapi/entry_aarch64_tsd.c | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) + src/GLX/glvnd_genentry.c | 1 + + src/GLdispatch/vnd-glapi/entry_aarch64_tsd.c | 1 + + 2 files changed, 2 insertions(+) +diff --git a/src/GLX/glvnd_genentry.c b/src/GLX/glvnd_genentry.c +index 7bbe811..b82aa14 100644 +--- a/src/GLX/glvnd_genentry.c ++++ b/src/GLX/glvnd_genentry.c +@@ -90,6 +90,7 @@ extern char glx_entrypoint_end[]; + + #define STUB_SIZE 16 + #define STUB_ASM_ARCH(slot) \ ++ "hint #34\n" \ + "adrp x16, entrypointFunctions + " slot "*8\n" \ + "ldr x16, [x16, #:lo12:(entrypointFunctions + " slot "*8)]\n" \ + "br x16\n" diff --git a/src/GLdispatch/vnd-glapi/entry_aarch64_tsd.c b/src/GLdispatch/vnd-glapi/entry_aarch64_tsd.c -index ae80131..00c4132 100644 +index ae80131..a4652e0 100644 --- a/src/GLdispatch/vnd-glapi/entry_aarch64_tsd.c +++ b/src/GLdispatch/vnd-glapi/entry_aarch64_tsd.c -@@ -55,7 +55,8 @@ - ".balign " U_STRINGIFY(ENTRY_STUB_ALIGN) "\n\t" \ - ".global " func "\n\t" \ - ".type " func ", %function\n\t" \ -- func ":\n\t" -+ func ":\n\t" \ -+ "hint #34\n\t" - - /* - * Looks up the current dispatch table, finds the stub address at the given slot -@@ -69,6 +70,7 @@ +@@ -69,6 +69,7 @@ * table then does a branch without link to the function address. */ #define STUB_ASM_CODE(slot) \ @@ -36,3 +39,6 @@ index ae80131..00c4132 100644 "stp x1, x0, [sp, #-16]!\n\t" \ "adrp x0, :got:_glapi_Current\n\t" \ "ldr x0, [x0, #:got_lo12:_glapi_Current]\n\t" \ +-- +2.35.1 + diff --git a/libglvnd.changes b/libglvnd.changes index bf64d1e..a84687d 100644 --- a/libglvnd.changes +++ b/libglvnd.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Thu Feb 24 15:23:24 UTC 2022 - Guillaume GARDET + +- Update libglvnd-add-bti.patch from latest upstream submission + ------------------------------------------------------------------- Fri Jan 21 09:05:39 UTC 2022 - Guillaume GARDET diff --git a/libglvnd.spec b/libglvnd.spec index afc1e3f..4c05ec6 100644 --- a/libglvnd.spec +++ b/libglvnd.spec @@ -29,7 +29,7 @@ Source: https://github.com/NVIDIA/libglvnd/archive/v%{version}.tar.gz#/% Source1: baselibs.conf Source2: libglvnd.rpmlintrc Patch1: disable-glx-tests.patch -# PATCH-FIX-UPSTREAM - https://github.com/NVIDIA/libglvnd/pull/214 +# PATCH-FIX-UPSTREAM - https://gitlab.freedesktop.org/glvnd/libglvnd/-/merge_requests/262 Patch2: libglvnd-add-bti.patch BuildRequires: autoconf BuildRequires: automake