Hi Theo, ----- Mail original ----- > running ruff on a modern intel laptop results in this: > > PSIG SIGILL SIG_DFL code=ILL_BTCFI addr=0x1f232ae9cc0 trapno=21 > > Program terminated with signal SIGILL, Illegal instruction. > #0 rust_psm_stack_pointer () at src/arch/x86_64.s:42 > > Diff below fixes it. It's taken from volker's PR: > https://github.com/rust-lang/stacker/pull/81 > > I don't have a bti-capable arm64 machine, so it's only compile tested > there.
I have no amd64/arm64 machine with BTI at home to test your fix :( Only tested with patch + build on current/amd64 with Rust 1.98.1. Attached a diff to update ruff to the latest version 0.16.7, including your patches to fix BTI/IBT issue. thanks, Laurent
Index: Makefile =================================================================== RCS file: /cvs/ports/devel/ruff/Makefile,v diff -u -p -r1.19 Makefile --- Makefile 9 Sep 2026 09:23:23 -0000 1.19 +++ Makefile 14 Sep 2026 16:14:24 -0000 @@ -3,7 +3,7 @@ NOT_FOR_ARCHS = sparc64 COMMENT = Python linter and code formatter -MODPY_DISTV = 0.16.6 +MODPY_DISTV = 0.16.7 GH_ACCOUNT = astral-sh GH_PROJECT = ruff Index: crates.inc =================================================================== RCS file: /cvs/ports/devel/ruff/crates.inc,v diff -u -p -r1.18 crates.inc --- crates.inc 9 Sep 2026 09:23:23 -0000 1.18 +++ crates.inc 14 Sep 2026 16:14:24 -0000 @@ -46,13 +46,13 @@ MODCARGO_CRATES += cc 1.2.65 # MIT OR Ap MODCARGO_CRATES += cfg-if 1.0.4 # MIT OR Apache-2.0 MODCARGO_CRATES += cfg_aliases 0.2.1 # MIT MODCARGO_CRATES += chacha20 0.10.0 # MIT OR Apache-2.0 -MODCARGO_CRATES += char_str 0.0.2 # MIT +MODCARGO_CRATES += char_str 0.0.4 # MIT MODCARGO_CRATES += chrono 0.4.44 # MIT OR Apache-2.0 MODCARGO_CRATES += ciborium 0.2.2 # Apache-2.0 MODCARGO_CRATES += ciborium-io 0.2.2 # Apache-2.0 MODCARGO_CRATES += ciborium-ll 0.2.2 # Apache-2.0 -MODCARGO_CRATES += clap 4.6.5 # MIT OR Apache-2.0 -MODCARGO_CRATES += clap_builder 4.6.5 # MIT OR Apache-2.0 +MODCARGO_CRATES += clap 4.6.6 # MIT OR Apache-2.0 +MODCARGO_CRATES += clap_builder 4.6.6 # MIT OR Apache-2.0 MODCARGO_CRATES += clap_complete 4.5.58 # MIT OR Apache-2.0 MODCARGO_CRATES += clap_complete_command 0.6.1 # MIT MODCARGO_CRATES += clap_complete_nushell 4.5.8 # MIT OR Apache-2.0 @@ -134,8 +134,8 @@ MODCARGO_CRATES += futures-task 0.3.32 # MODCARGO_CRATES += futures-util 0.3.32 # MIT OR Apache-2.0 MODCARGO_CRATES += gen-lsp-types 0.11.0 # MIT MODCARGO_CRATES += generic-array 0.14.7 # MIT -MODCARGO_CRATES += get-size-derive2 0.10.3 # MIT OR Apache-2.0 -MODCARGO_CRATES += get-size2 0.10.3 # MIT OR Apache-2.0 +MODCARGO_CRATES += get-size-derive2 0.11.0 # MIT OR Apache-2.0 +MODCARGO_CRATES += get-size2 0.11.0 # MIT OR Apache-2.0 MODCARGO_CRATES += getopts 0.2.24 # MIT OR Apache-2.0 MODCARGO_CRATES += getrandom 0.2.16 # MIT OR Apache-2.0 MODCARGO_CRATES += getrandom 0.3.4 # MIT OR Apache-2.0 @@ -313,8 +313,8 @@ MODCARGO_CRATES += regex-automata 0.4.18 MODCARGO_CRATES += regex-lite 0.1.7 # MIT OR Apache-2.0 MODCARGO_CRATES += regex-syntax 0.8.11 # MIT OR Apache-2.0 MODCARGO_CRATES += rend 0.5.3 # MIT -MODCARGO_CRATES += rkyv 0.8.17 # MIT -MODCARGO_CRATES += rkyv_derive 0.8.17 # MIT +MODCARGO_CRATES += rkyv 0.8.18 # MIT +MODCARGO_CRATES += rkyv_derive 0.8.18 # MIT MODCARGO_CRATES += ron 0.12.0 # MIT OR Apache-2.0 MODCARGO_CRATES += rust-stemmers 1.2.0 # MIT/BSD-3-Clause MODCARGO_CRATES += rustc-hash 2.1.3 # Apache-2.0 OR MIT @@ -373,9 +373,9 @@ MODCARGO_CRATES += test-case-core 3.3.1 MODCARGO_CRATES += test-case-macros 3.3.1 # MIT MODCARGO_CRATES += thin-vec 0.2.19 # MIT OR Apache-2.0 MODCARGO_CRATES += thiserror 1.0.69 # MIT OR Apache-2.0 -MODCARGO_CRATES += thiserror 2.0.19 # MIT OR Apache-2.0 +MODCARGO_CRATES += thiserror 2.0.20 # MIT OR Apache-2.0 MODCARGO_CRATES += thiserror-impl 1.0.69 # MIT OR Apache-2.0 -MODCARGO_CRATES += thiserror-impl 2.0.19 # MIT OR Apache-2.0 +MODCARGO_CRATES += thiserror-impl 2.0.20 # MIT OR Apache-2.0 MODCARGO_CRATES += thread_local 1.1.9 # MIT OR Apache-2.0 MODCARGO_CRATES += tikv-jemalloc-sys 0.6.1+5.3.0-1-ge13ca993e8ccb9ba9847cc330696e02839f328f7 # MIT/Apache-2.0 MODCARGO_CRATES += tikv-jemallocator 0.6.1 # MIT/Apache-2.0 Index: distinfo =================================================================== RCS file: /cvs/ports/devel/ruff/distinfo,v diff -u -p -r1.18 distinfo --- distinfo 9 Sep 2026 09:23:23 -0000 1.18 +++ distinfo 14 Sep 2026 16:14:25 -0000 @@ -46,13 +46,13 @@ SHA256 (cargo/cc-1.2.65.tar.gz) = 4ijuyb SHA256 (cargo/cfg-if-1.0.4.tar.gz) = kzD4sv8T80VAtE6UbvNREYJXJ7ONMyhu+YYUJhUSGAE= SHA256 (cargo/cfg_aliases-0.2.1.tar.gz) = YTr+R/zV+sfM8duTurywgsWZTZlvILixWfKtFljrVyQ= SHA256 (cargo/chacha20-0.10.0.tar.gz) = b42YMoaEPklnWkt6LRdO/hNtyToY1pEw3RgZimwWdgE= -SHA256 (cargo/char_str-0.0.2.tar.gz) = V2ulb2yhjrsGnQ0HJgQHFxcSr/Tf4V7j+JgtwWpFW88= +SHA256 (cargo/char_str-0.0.4.tar.gz) = ycunilq7UVYQ4Qryl2FUNLAZdVtde+FOVZ/1NA3/UMQ= SHA256 (cargo/chrono-0.4.44.tar.gz) = xnMHWi4OX0od3ifOne4epFWMf/5kj1dkOKIModKsxLA= SHA256 (cargo/ciborium-0.2.2.tar.gz) = Quaf/W8JF/XAKSVqJNAWHbF86jmX0YXbDTWSYwh3Dw4= SHA256 (cargo/ciborium-io-0.2.2.tar.gz) = Ba/qHgoGyb4z1Tm4dvHONpL0r+ostB90DndDIl7Rx1c= SHA256 (cargo/ciborium-ll-0.2.2.tar.gz) = V2Y7ZT2UijOL+z7rqbsv1fz67Lnhmeh+HtpNnoskD9k= -SHA256 (cargo/clap-4.6.5.tar.gz) = MBtWZYWY5I82SGR6xvyIe+fnEI7d+k6bY/zz7FjAyt8= -SHA256 (cargo/clap_builder-4.6.5.tar.gz) = lKZUA9GhvSj33GjrhQboh0gI7l7stZKY3liOLhQHoHg= +SHA256 (cargo/clap-4.6.6.tar.gz) = Rzx+B/QJqNdyFhckqo22p2WiUypw+WZ+63tJ09Avvco= +SHA256 (cargo/clap_builder-4.6.6.tar.gz) = e0j+paiOmucooty+2/wOcw99YNpC4csEmoPJ+4t4mIk= SHA256 (cargo/clap_complete-4.5.58.tar.gz) = db8LMq0uFS3nibtjXqTTB49rg4rXl0FD6ZuZ9FoEr0o= SHA256 (cargo/clap_complete_command-0.6.1.tar.gz) = 2o4ZjAUjFWhtNjceijxXeLeFL8dcwxPk4R7remRKG2I= SHA256 (cargo/clap_complete_nushell-4.5.8.tar.gz) = CgyVFpRpHmW/nUIdWX1oQWwi3pYy6ITChBLLjNi3Pc4= @@ -134,8 +134,8 @@ SHA256 (cargo/futures-task-0.3.32.tar.gz SHA256 (cargo/futures-util-0.3.32.tar.gz) = OJykEpbmGQtIBT3gMh0Cp38y+KXSRh3Th2LAWTgFxtY= SHA256 (cargo/gen-lsp-types-0.11.0.tar.gz) = tkiHrDqAg0J66TWnKW24docVgs1X6sB3Vk+LwY+kkRY= SHA256 (cargo/generic-array-0.14.7.tar.gz) = hWScpR/XInLXghra8nStkcKIJ3cT2cGIINhJmn/2npo= -SHA256 (cargo/get-size-derive2-0.10.3.tar.gz) = xzbSJsMuSWuDd4E7UiaeEa06SNg3O2iGLQNk8E/RIp0= -SHA256 (cargo/get-size2-0.10.3.tar.gz) = tBHzRBgwWQirFagv94lYwqmu6aJysqLmY4NrIKTkudM= +SHA256 (cargo/get-size-derive2-0.11.0.tar.gz) = fv5G0q21KQFXSHQvGjhZQDnONX27IebReN40LPzkaNQ= +SHA256 (cargo/get-size2-0.11.0.tar.gz) = 1NM43jkhBEF/5v2+WIxSODuSNpVtiv5WVPAHcXbtxjI= SHA256 (cargo/getopts-0.2.24.tar.gz) = z+T7rFA7jR+I5mdgEYhfNLcXT0blmVa7pTS6g6ve1N8= SHA256 (cargo/getrandom-0.2.16.tar.gz) = M1/58TXkOEyBUNbyfG2u1DNXf4a0dQQYM4wBoaJShZI= SHA256 (cargo/getrandom-0.3.4.tar.gz) = iZ3vXDfE/XsmZGSMKBIOzsE45NOVtFnlyjT5zOLdd/0= @@ -313,8 +313,8 @@ SHA256 (cargo/regex-automata-0.4.18.tar. SHA256 (cargo/regex-lite-0.1.7.tar.gz) = lD9BMhxj7xyS/XY7/gVNJmj38iWlwp8BBZA9wvwEujA= SHA256 (cargo/regex-syntax-0.8.11.tar.gz) = 1vb/mjeEhbKYpShmVtpmW6dEE9NtsJeWMyddLnCBRdQ= SHA256 (cargo/rend-0.5.3.tar.gz) = ytre8xfC8gdVpk1/3Ej55xeO5rDh9/zjP6YPHWiiduY= -SHA256 (cargo/rkyv-0.8.17.tar.gz) = gVzIo3FZpGMGSCUkbK2weWHiXNmIWQhgb20IqY2PiHQ= -SHA256 (cargo/rkyv_derive-0.8.17.tar.gz) = wO0aeKGxnRhLDapindmgJFcxc+x9SFsofLNp+zYHzBw= +SHA256 (cargo/rkyv-0.8.18.tar.gz) = 2Xdgk7fKFwRUqxQGlU97fZelfFHcbAZClX+y7yXC05k= +SHA256 (cargo/rkyv_derive-0.8.18.tar.gz) = HCXvYErH3YOdRNZGSJUuojyXhm8ST/ZxsO0s862bsG4= SHA256 (cargo/ron-0.12.0.tar.gz) = /UkMWxgmGJPxREnL0oy5wLY3rr8WHNd5AL/e2v8h7DI= SHA256 (cargo/rust-stemmers-1.2.0.tar.gz) = 5GogNgGf24iBMdt6TIR6EGOnST+XHtlOqCxn6tpjylQ= SHA256 (cargo/rustc-hash-2.1.3.tar.gz) = ax5/mkKFcb4txbwFBcE/tr+TaCK4lOyHq/igik5RdC0= @@ -373,9 +373,9 @@ SHA256 (cargo/test-case-core-3.3.1.tar.g SHA256 (cargo/test-case-macros-3.3.1.tar.gz) = XInnKgHtTFeWaa3VkBS5pSTWCcDIjGpYXON0hYefb/s= SHA256 (cargo/thin-vec-0.2.19.tar.gz) = ed7zL/zUd9sf8m922rnjqR8L1CqFypZXcImyRiMFb50= SHA256 (cargo/thiserror-1.0.69.tar.gz) = tqr1M5tXjqhbUOCA/rJQo+iujPzf+aRhyewpBLySP1I= -SHA256 (cargo/thiserror-2.0.19.tar.gz) = CaQ1mIQOM9WwMx84xeMNE7sRwRIQpLWPDZsYpaXu/Nk= +SHA256 (cargo/thiserror-2.0.20.tar.gz) = 7IYjX1/MKnNlAxB1bSrFsTileAu7364+7M7JksQ1uk8= SHA256 (cargo/thiserror-impl-1.0.69.tar.gz) = T+5sTvyQBZ4Q+B5tQsYKGPdliMPXTLg6CyQqK2x1BME= -SHA256 (cargo/thiserror-impl-2.0.19.tar.gz) = Q8v+DPdhBNQqV0gChEGH6EowXlMe1URV8R+94PEFQc0= +SHA256 (cargo/thiserror-impl-2.0.20.tar.gz) = vATNPhI23UqYr8pFafLes/Eg5UIqQCO+LLaD+Ehikq8= SHA256 (cargo/thread_local-1.1.9.tar.gz) = 9gJGpJRPJPbgGKoXze/7eBi3Y1aWXQOwfWqYhuiWIYU= SHA256 (cargo/tikv-jemalloc-sys-0.6.1+5.3.0-1-ge13ca993e8ccb9ba9847cc330696e02839f328f7.tar.gz) = zYqlsquGos76QG2IkTnBYsuyMAkvfR18vBcWQF2FKjs= SHA256 (cargo/tikv-jemallocator-0.6.1.tar.gz) = A1m0Mn+VTgVn5p+xkc8UNmF3SIE4GclLjNSkMUItBTo= @@ -503,7 +503,7 @@ SHA256 (cargo/zmij-1.0.10.tar.gz) = MODY SHA256 (cargo/zstd-0.13.3.tar.gz) = 6R7jEaVpwycXFlFWbgeXIgDnb8/iJCpPpEYUmjiBwIo= SHA256 (cargo/zstd-safe-7.2.4.tar.gz) = j0nE1fCrtgKpP7hzavKk9N2VEuNvf1cNZuZf+GftO50= SHA256 (cargo/zstd-sys-2.0.16+zstd.1.5.7.tar.gz) = keGevCrcj4PkMDnnl3bj/ajKkZEy1oof7WpfrKJoN0g= -SHA256 (ruff-0.16.6.tar.gz) = jKRyFJIjEgfZmyd+xda9zFs+Ww5lCO4yJQuZeWt3obw= +SHA256 (ruff-0.16.7.tar.gz) = wxFNuCfdlHqpZgM4cxjqAJnGXG2Iq7JwT55j/BFAcJc= SIZE (cargo/adler2-2.0.1.tar.gz) = 13366 SIZE (cargo/aho-corasick-1.1.5.tar.gz) = 184315 SIZE (cargo/alloca-0.4.0.tar.gz) = 4257 @@ -552,13 +552,13 @@ SIZE (cargo/cc-1.2.65.tar.gz) = 95435 SIZE (cargo/cfg-if-1.0.4.tar.gz) = 9360 SIZE (cargo/cfg_aliases-0.2.1.tar.gz) = 6355 SIZE (cargo/chacha20-0.10.0.tar.gz) = 38763 -SIZE (cargo/char_str-0.0.2.tar.gz) = 69007 +SIZE (cargo/char_str-0.0.4.tar.gz) = 71301 SIZE (cargo/chrono-0.4.44.tar.gz) = 240549 SIZE (cargo/ciborium-0.2.2.tar.gz) = 35611 SIZE (cargo/ciborium-io-0.2.2.tar.gz) = 6697 SIZE (cargo/ciborium-ll-0.2.2.tar.gz) = 14695 -SIZE (cargo/clap-4.6.5.tar.gz) = 64483 -SIZE (cargo/clap_builder-4.6.5.tar.gz) = 171746 +SIZE (cargo/clap-4.6.6.tar.gz) = 64815 +SIZE (cargo/clap_builder-4.6.6.tar.gz) = 171756 SIZE (cargo/clap_complete-4.5.58.tar.gz) = 48645 SIZE (cargo/clap_complete_command-0.6.1.tar.gz) = 7959 SIZE (cargo/clap_complete_nushell-4.5.8.tar.gz) = 35171 @@ -640,8 +640,8 @@ SIZE (cargo/futures-task-0.3.32.tar.gz) SIZE (cargo/futures-util-0.3.32.tar.gz) = 168797 SIZE (cargo/gen-lsp-types-0.11.0.tar.gz) = 98362 SIZE (cargo/generic-array-0.14.7.tar.gz) = 15950 -SIZE (cargo/get-size-derive2-0.10.3.tar.gz) = 8774 -SIZE (cargo/get-size2-0.10.3.tar.gz) = 27893 +SIZE (cargo/get-size-derive2-0.11.0.tar.gz) = 9306 +SIZE (cargo/get-size2-0.11.0.tar.gz) = 28779 SIZE (cargo/getopts-0.2.24.tar.gz) = 21467 SIZE (cargo/getrandom-0.2.16.tar.gz) = 40163 SIZE (cargo/getrandom-0.3.4.tar.gz) = 50932 @@ -819,8 +819,8 @@ SIZE (cargo/regex-automata-0.4.18.tar.gz SIZE (cargo/regex-lite-0.1.7.tar.gz) = 96903 SIZE (cargo/regex-syntax-0.8.11.tar.gz) = 359055 SIZE (cargo/rend-0.5.3.tar.gz) = 15823 -SIZE (cargo/rkyv-0.8.17.tar.gz) = 171033 -SIZE (cargo/rkyv_derive-0.8.17.tar.gz) = 22642 +SIZE (cargo/rkyv-0.8.18.tar.gz) = 171176 +SIZE (cargo/rkyv_derive-0.8.18.tar.gz) = 22643 SIZE (cargo/ron-0.12.0.tar.gz) = 119892 SIZE (cargo/rust-stemmers-1.2.0.tar.gz) = 2351301 SIZE (cargo/rustc-hash-2.1.3.tar.gz) = 14811 @@ -879,9 +879,9 @@ SIZE (cargo/test-case-core-3.3.1.tar.gz) SIZE (cargo/test-case-macros-3.3.1.tar.gz) = 4961 SIZE (cargo/thin-vec-0.2.19.tar.gz) = 39711 SIZE (cargo/thiserror-1.0.69.tar.gz) = 22198 -SIZE (cargo/thiserror-2.0.19.tar.gz) = 29026 +SIZE (cargo/thiserror-2.0.20.tar.gz) = 28969 SIZE (cargo/thiserror-impl-1.0.69.tar.gz) = 18365 -SIZE (cargo/thiserror-impl-2.0.19.tar.gz) = 21408 +SIZE (cargo/thiserror-impl-2.0.20.tar.gz) = 21436 SIZE (cargo/thread_local-1.1.9.tar.gz) = 19315 SIZE (cargo/tikv-jemalloc-sys-0.6.1+5.3.0-1-ge13ca993e8ccb9ba9847cc330696e02839f328f7.tar.gz) = 900826 SIZE (cargo/tikv-jemallocator-0.6.1.tar.gz) = 14074 @@ -1009,4 +1009,4 @@ SIZE (cargo/zmij-1.0.10.tar.gz) = 22288 SIZE (cargo/zstd-0.13.3.tar.gz) = 30514 SIZE (cargo/zstd-safe-7.2.4.tar.gz) = 29350 SIZE (cargo/zstd-sys-2.0.16+zstd.1.5.7.tar.gz) = 775620 -SIZE (ruff-0.16.6.tar.gz) = 13482468 +SIZE (ruff-0.16.7.tar.gz) = 13601619 Index: patches/patch-modcargo-crates_psm-0_1_32_src_arch_aarch64_armasm_asm =================================================================== RCS file: patches/patch-modcargo-crates_psm-0_1_32_src_arch_aarch64_armasm_asm diff -N patches/patch-modcargo-crates_psm-0_1_32_src_arch_aarch64_armasm_asm --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-modcargo-crates_psm-0_1_32_src_arch_aarch64_armasm_asm 14 Sep 2026 16:14:25 -0000 @@ -0,0 +1,38 @@ +Missing BTI landing pads +https://github.com/rust-lang/stacker/pull/81 + +Index: modcargo-crates/psm-0.1.32/src/arch/aarch64_armasm.asm +--- modcargo-crates/psm-0.1.32/src/arch/aarch64_armasm.asm.orig ++++ modcargo-crates/psm-0.1.32/src/arch/aarch64_armasm.asm +@@ -3,6 +3,7 @@ + GLOBAL |rust_psm_stack_direction| + ALIGN 4 + |rust_psm_stack_direction| PROC ++ bti c + orr w0, wzr, #2 + ret + ENDP +@@ -11,6 +12,7 @@ + GLOBAL |rust_psm_stack_pointer| + ALIGN 4 + |rust_psm_stack_pointer| PROC ++ bti c + mov x0, sp + ret + ENDP +@@ -19,6 +21,7 @@ + GLOBAL |rust_psm_replace_stack| + ALIGN 4 + |rust_psm_replace_stack| PROC ++ bti c + mov sp, x2 + br x1 + ENDP +@@ -26,6 +29,7 @@ + GLOBAL |rust_psm_on_stack| + ALIGN 4 + |rust_psm_on_stack| PROC ++ bti c + stp x29, x30, [sp, #-16]! + mov x29, sp + mov sp, x3 Index: patches/patch-modcargo-crates_psm-0_1_32_src_arch_aarch_aapcs64_s =================================================================== RCS file: patches/patch-modcargo-crates_psm-0_1_32_src_arch_aarch_aapcs64_s diff -N patches/patch-modcargo-crates_psm-0_1_32_src_arch_aarch_aapcs64_s --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-modcargo-crates_psm-0_1_32_src_arch_aarch_aapcs64_s 14 Sep 2026 16:14:25 -0000 @@ -0,0 +1,38 @@ +Missing bti landing pads +https://github.com/rust-lang/stacker/pull/81 + +Index: modcargo-crates/psm-0.1.32/src/arch/aarch_aapcs64.s +--- modcargo-crates/psm-0.1.32/src/arch/aarch_aapcs64.s.orig ++++ modcargo-crates/psm-0.1.32/src/arch/aarch_aapcs64.s +@@ -33,6 +33,7 @@ TYPE(rust_psm_stack_direction) + FUNCTION(rust_psm_stack_direction): + /* extern "C" fn() -> u8 */ + .cfi_startproc ++ bti c + orr w0, wzr, #STACK_DIRECTION_DESCENDING + ret + END_FUNCTION(rust_psm_stack_direction) +@@ -45,6 +46,7 @@ TYPE(rust_psm_stack_pointer) + FUNCTION(rust_psm_stack_pointer): + /* extern "C" fn() -> *mut u8 */ + .cfi_startproc ++ bti c + mov x0, sp + ret + END_FUNCTION(rust_psm_stack_pointer) +@@ -58,6 +60,7 @@ FUNCTION(rust_psm_replace_stack): + /* extern "C" fn(r0: usize, r1: extern "C" fn(usize), r2: *mut u8) */ + .cfi_startproc + /* All we gotta do is set the stack pointer to %rdx & tail-call the callback in %rsi */ ++ bti c + mov sp, x2 + br x1 + END_FUNCTION(rust_psm_replace_stack) +@@ -70,6 +73,7 @@ TYPE(rust_psm_on_stack) + FUNCTION(rust_psm_on_stack): + /* extern "C" fn(r0: usize, r1: usize, r2: extern "C" fn(usize, usize), r3: *mut u8) */ + .cfi_startproc ++ bti c + stp x29, x30, [sp, #-16]! + .cfi_def_cfa sp, 16 + mov x29, sp Index: patches/patch-modcargo-crates_psm-0_1_32_src_arch_x86_64_s =================================================================== RCS file: patches/patch-modcargo-crates_psm-0_1_32_src_arch_x86_64_s diff -N patches/patch-modcargo-crates_psm-0_1_32_src_arch_x86_64_s --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-modcargo-crates_psm-0_1_32_src_arch_x86_64_s 14 Sep 2026 16:14:25 -0000 @@ -0,0 +1,51 @@ +Missing ibt landing pads +https://github.com/rust-lang/stacker/pull/81 + +Index: modcargo-crates/psm-0.1.32/src/arch/x86_64.s +--- modcargo-crates/psm-0.1.32/src/arch/x86_64.s.orig ++++ modcargo-crates/psm-0.1.32/src/arch/x86_64.s +@@ -2,6 +2,12 @@ + #include "gnu_stack_note.s" + /* NOTE: sysv64 calling convention is used on all x86_64 targets, including Windows! */ + ++#ifdef __CET__ ++#include <cet.h> ++#else ++#define _CET_ENDBR ++#endif ++ + .text + + #if defined(CFG_TARGET_OS_darwin) || defined(CFG_TARGET_OS_macos) || defined(CFG_TARGET_OS_ios) || defined(CFG_TARGET_OS_tvos) +@@ -27,6 +33,7 @@ TYPE(rust_psm_stack_direction) + FUNCTION(rust_psm_stack_direction): + /* extern "sysv64" fn() -> u8 (%al) */ + .cfi_startproc ++ _CET_ENDBR + movb $STACK_DIRECTION_DESCENDING, %al # always descending on x86_64 + retq + END_FUNCTION(rust_psm_stack_direction) +@@ -39,6 +46,7 @@ TYPE(rust_psm_stack_pointer) + FUNCTION(rust_psm_stack_pointer): + /* extern "sysv64" fn() -> *mut u8 (%rax) */ + .cfi_startproc ++ _CET_ENDBR + leaq 8(%rsp), %rax + retq + .rust_psm_stack_pointer_end: +@@ -58,6 +66,7 @@ FUNCTION(rust_psm_replace_stack): + 8-byte offset necessary to account for the "return" pointer that would otherwise be placed onto + stack with a regular call + */ ++ _CET_ENDBR + leaq -8(%rdx), %rsp + jmpq *%rsi + .rust_psm_replace_stack_end: +@@ -71,6 +80,7 @@ TYPE(rust_psm_on_stack) + FUNCTION(rust_psm_on_stack): + /* extern "sysv64" fn(%rdi: usize, %rsi: usize, %rdx: extern "sysv64" fn(usize, usize), %rcx: *mut u8) */ + .cfi_startproc ++ _CET_ENDBR + pushq %rbp + .cfi_def_cfa %rsp, 16 + .cfi_offset %rbp, -16
