Tuesday, November 05, 2024

Re: update games/taisei to 1.4.2

On Sun, Oct 20, 2024 at 10:28:25PM +0200, Omar Polo wrote:
> The changelog is available here:
>
> https://github.com/taisei-project/taisei/releases/tag/v1.4.2
>
> I played it a bit and seems to work :)

I managed to remove USE_NOBTCFI! The following diff is to be applied on
top of yours. I lifted the ifdefs for the C file from our own
/usr/lib/clang/16/include/cet.h .

Lucas


diff 958e86792bdef182359f04840bc7f4b5048f160a c500735242689105255cc0741f462ee7800d6e68
commit - 958e86792bdef182359f04840bc7f4b5048f160a
commit + c500735242689105255cc0741f462ee7800d6e68
blob - fda034398a4d0780b009df55ba203686bf76623a
blob + 6c120fc21967767274d6b51153e854ab53ceda1a
--- games/taisei/Makefile
+++ games/taisei/Makefile
@@ -2,14 +2,11 @@
# modern video cards
ONLY_FOR_ARCHS = amd64 aarch64 i386

-# the koishi coroutine library needs boost 1.81.0+ for BTI
-# https://github.com/taisei-project/koishi/issues/6
-USE_NOBTCFI
= Yes
-
COMMENT = clone of the touhou games

VERSION = 1.4.2
DISTNAME = taisei-${VERSION}
+REVISION = 0

CATEGORIES = games

blob - /dev/null
blob + 9cc5284a35a69df414c2bba14f52ef1fdd9c39c8 (mode 644)
--- /dev/null
+++ games/taisei/patches/patch-external_koishi_src_fcontext_asm_jump_x86_64_sysv_elf_gas_S
@@ -0,0 +1,25 @@
+Add support for BTI on amd64.
+
+Index: external/koishi/src/fcontext/asm/jump_x86_64_sysv_elf_gas.S
+--- external/koishi/src/fcontext/asm/jump_x86_64_sysv_elf_gas.S.orig
++++ external/koishi/src/fcontext/asm/jump_x86_64_sysv_elf_gas.S
+@@ -23,13 +23,18 @@
+ * ---------------------------------------------------------------------------------- *
+ * *
+ ****************************************************************************************/
+-
++# if defined __CET__
++# include <cet.h>
++# else
++# define _CET_ENDBR
++# endif
+ .file "jump_x86_64_sysv_elf_gas.S"
+ .text
+ .globl jump_fcontext
+ .type jump_fcontext,@function
+ .align 16
+ jump_fcontext:
++ _CET_ENDBR
+ leaq -0x38(%rsp), %rsp /* prepare stack */
+
+ #if !defined(BOOST_USE_TSX)
blob - /dev/null
blob + 090f2bc075028eed23f219aa166f398015337d4c (mode 644)
--- /dev/null
+++ games/taisei/patches/patch-external_koishi_src_fcontext_asm_make_x86_64_sysv_elf_gas_S
@@ -0,0 +1,41 @@
+Add support for BTI on amd64.
+
+Index: external/koishi/src/fcontext/asm/make_x86_64_sysv_elf_gas.S
+--- external/koishi/src/fcontext/asm/make_x86_64_sysv_elf_gas.S.orig
++++ external/koishi/src/fcontext/asm/make_x86_64_sysv_elf_gas.S
+@@ -23,13 +23,18 @@
+ * ---------------------------------------------------------------------------------- *
+ * *
+ ****************************************************************************************/
+-
++# if defined __CET__
++# include <cet.h>
++# else
++# define _CET_ENDBR
++# endif
+ .file "make_x86_64_sysv_elf_gas.S"
+ .text
+ .globl make_fcontext
+ .type make_fcontext,@function
+ .align 16
+ make_fcontext:
++ _CET_ENDBR
+ /* first arg of make_fcontext() == top of context-stack */
+ movq %rdi, %rax
+
+@@ -64,6 +69,7 @@ make_fcontext:
+ ret /* return pointer to context-data */
+
+ trampoline:
++ _CET_ENDBR
+ /* store return address on stack */
+ /* fix stack alignment */
+ push %rbp
+@@ -71,6 +77,7 @@ trampoline:
+ jmp *%rbx
+
+ finish:
++ _CET_ENDBR
+ /* exit code is zero */
+ xorq %rdi, %rdi
+ /* exit application */
blob - /dev/null
blob + fb9d1fba88af6daaad0825310196183a5d147ef3 (mode 644)
--- /dev/null
+++ games/taisei/patches/patch-external_koishi_src_fcontext_asm_ontop_x86_64_sysv_elf_gas_S
@@ -0,0 +1,25 @@
+Add support for BTI on amd64.
+
+Index: external/koishi/src/fcontext/asm/ontop_x86_64_sysv_elf_gas.S
+--- external/koishi/src/fcontext/asm/ontop_x86_64_sysv_elf_gas.S.orig
++++ external/koishi/src/fcontext/asm/ontop_x86_64_sysv_elf_gas.S
+@@ -23,13 +23,18 @@
+ * ---------------------------------------------------------------------------------- *
+ * *
+ ****************************************************************************************/
+-
++# if defined __CET__
++# include <cet.h>
++# else
++# define _CET_ENDBR
++# endif
+ .file "ontop_x86_64_sysv_elf_gas.S"
+ .text
+ .globl ontop_fcontext
+ .type ontop_fcontext,@function
+ .align 16
+ ontop_fcontext:
++ _CET_ENDBR
+ /* preserve ontop-function in R8 */
+ movq %rdx, %r8
+
blob - /dev/null
blob + 229cc30270e16ffbc3c8ada327f6e0685c8b8f22 (mode 644)
--- /dev/null
+++ games/taisei/patches/patch-external_koishi_src_fcontext_fcontext_c
@@ -0,0 +1,35 @@
+Add support for BTI on amd64. ifdefs lifted from
+/usr/lib/clang/16/include/cet.h .
+
+Index: external/koishi/src/fcontext/fcontext.c
+--- external/koishi/src/fcontext/fcontext.c.orig
++++ external/koishi/src/fcontext/fcontext.c
+@@ -4,6 +4,20 @@
+ #include <stdlib.h>
+ #include <assert.h>
+
++# ifdef __LP64__
++# if __CET__ & 0x1
++# define _CET_ENDBR __asm("endbr64")
++# else
++# define _CET_ENDBR
++# endif
++# else
++# if __CET__ & 0x1
++# define _CET_ENDBR __asm("endbr32")
++# else
++# define _CET_ENDBR
++# endif
++# endif
++
+ #ifdef __cplusplus
+ extern "C" {
+

No comments:

Post a Comment