Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package libffi for openSUSE:Factory checked in at 2023-12-09 22:48:57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libffi (Old) and /work/SRC/openSUSE:Factory/.libffi.new.25432 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libffi" Sat Dec 9 22:48:57 2023 rev:15 rq:1131297 version:3.4.4 Changes: -------- --- /work/SRC/openSUSE:Factory/libffi/libffi.changes 2022-10-26 12:31:15.288243563 +0200 +++ /work/SRC/openSUSE:Factory/.libffi.new.25432/libffi.changes 2023-12-09 22:48:58.822257834 +0100 @@ -1,0 +2,7 @@ +Wed Dec 6 09:11:47 UTC 2023 - Guillaume GARDET <guillaume.gar...@opensuse.org> + +- Add upstream patches to fix BTI on aarch64: + * 808.patch + * 810.patch + +------------------------------------------------------------------- New: ---- 808.patch 810.patch BETA DEBUG BEGIN: New:- Add upstream patches to fix BTI on aarch64: * 808.patch * 810.patch New: * 808.patch * 810.patch BETA DEBUG END: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libffi.spec ++++++ --- /var/tmp/diff_new_pack.mFSVKl/_old 2023-12-09 22:48:59.474281374 +0100 +++ /var/tmp/diff_new_pack.mFSVKl/_new 2023-12-09 22:48:59.474281374 +0100 @@ -1,7 +1,7 @@ # # spec file for package libffi # -# Copyright (c) 2022 SUSE LLC +# Copyright (c) 2023 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -26,6 +26,9 @@ URL: https://sourceware.org/libffi/ Source: https://github.com/libffi/libffi/releases/download/v%{version}/libffi-%{version}.tar.gz Source99: baselibs.conf +# Fix BTI for aarch64 with PR 808 and 810 +Patch1: https://github.com/libffi/libffi/pull/808.patch +Patch2: https://github.com/libffi/libffi/pull/810.patch # for make check BuildRequires: dejagnu BuildRequires: expect ++++++ 808.patch ++++++ >From cdb7b8c44f23d850d0fc5d783cb42f1bc516252f Mon Sep 17 00:00:00 2001 From: Tobias Heider <m...@tobhe.de> Date: Wed, 22 Nov 2023 15:21:56 +0100 Subject: [PATCH] Add bti intructions to aarch64 assembly to work with strict BTI enforcement on OpenBSD. --- src/aarch64/ffi.c | 38 +++++--- src/aarch64/sysv.S | 223 +++++++++++++++++++++++++++++++++++---------- 2 files changed, 202 insertions(+), 59 deletions(-) diff --git a/src/aarch64/ffi.c b/src/aarch64/ffi.c index 6544ac0fe..67b18fbfb 100644 --- a/src/aarch64/ffi.c +++ b/src/aarch64/ffi.c @@ -390,47 +390,59 @@ extend_hfa_type (void *dest, void *src, int h) "adr %0, 0f\n" " add %0, %0, %1\n" " br %0\n" -"0: ldp s16, s17, [%3]\n" /* S4 */ +"0: bti j\n" /* S4 */ +" ldp s16, s17, [%3]\n" " ldp s18, s19, [%3, #8]\n" " b 4f\n" -" ldp s16, s17, [%3]\n" /* S3 */ +" bti j\n" /* S3 */ +" ldp s16, s17, [%3]\n" " ldr s18, [%3, #8]\n" " b 3f\n" -" ldp s16, s17, [%3]\n" /* S2 */ +" bti j\n" /* S2 */ +" ldp s16, s17, [%3]\n" " b 2f\n" " nop\n" -" ldr s16, [%3]\n" /* S1 */ +" bti j\n" /* S1 */ +" ldr s16, [%3]\n" " b 1f\n" " nop\n" -" ldp d16, d17, [%3]\n" /* D4 */ +" bti j\n" /* D4 */ +" ldp d16, d17, [%3]\n" " ldp d18, d19, [%3, #16]\n" " b 4f\n" -" ldp d16, d17, [%3]\n" /* D3 */ +" bti j\n" /* D3 */ +" ldp d16, d17, [%3]\n" " ldr d18, [%3, #16]\n" " b 3f\n" -" ldp d16, d17, [%3]\n" /* D2 */ +" bti j\n" /* D2 */ +" ldp d16, d17, [%3]\n" " b 2f\n" " nop\n" -" ldr d16, [%3]\n" /* D1 */ +" bti j\n" /* D1 */ +" ldr d16, [%3]\n" " b 1f\n" " nop\n" -" ldp q16, q17, [%3]\n" /* Q4 */ +" bti j\n" /* Q4 */ +" ldp q16, q17, [%3]\n" " ldp q18, q19, [%3, #32]\n" " b 4f\n" -" ldp q16, q17, [%3]\n" /* Q3 */ +" bti j\n" /* Q3 */ +" ldp q16, q17, [%3]\n" " ldr q18, [%3, #32]\n" " b 3f\n" -" ldp q16, q17, [%3]\n" /* Q2 */ +" bti j\n" /* Q2 */ +" ldp q16, q17, [%3]\n" " b 2f\n" " nop\n" -" ldr q16, [%3]\n" /* Q1 */ +" bti j\n" /* Q1 */ +" ldr q16, [%3]\n" " b 1f\n" "4: str q19, [%2, #48]\n" "3: str q18, [%2, #32]\n" "2: str q17, [%2, #16]\n" "1: str q16, [%2]" : "=&r"(x0) - : "r"(f * 12), "r"(dest), "r"(src) + : "r"(f * 16), "r"(dest), "r"(src) : "memory", "v16", "v17", "v18", "v19"); } #endif diff --git a/src/aarch64/sysv.S b/src/aarch64/sysv.S index 286f1f137..9f4188e00 100644 --- a/src/aarch64/sysv.S +++ b/src/aarch64/sysv.S @@ -84,6 +84,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ cfi_startproc CNAME(ffi_call_SYSV): + bti c /* Sign the lr with x1 since that is where it will be stored */ SIGN_LR_WITH_REG(x1) @@ -144,78 +145,142 @@ CNAME(ffi_call_SYSV): /* Save the return value as directed. */ adr x5, 0f and w4, w4, #AARCH64_RET_MASK - add x5, x5, x4, lsl #3 + add x5, x5, x4, lsl #4 br x5 - /* Note that each table entry is 2 insns, and thus 8 bytes. + /* Note that each table entry is 4 insns, and thus 16 bytes. For integer data, note that we're storing into ffi_arg and therefore we want to extend to 64 bits; these types have two consecutive entries allocated for them. */ .align 4 -0: b 99f /* VOID */ +0: bti j /* VOID */ + b 99f + nop nop -1: str x0, [x3] /* INT64 */ +1: bti j /* INT64 */ + str x0, [x3] b 99f -2: stp x0, x1, [x3] /* INT128 */ + nop +2: bti j /* INT128 */ + stp x0, x1, [x3] b 99f + nop 3: brk #1000 /* UNUSED */ b 99f + nop + nop 4: brk #1000 /* UNUSED */ b 99f + nop + nop 5: brk #1000 /* UNUSED */ b 99f + nop + nop 6: brk #1000 /* UNUSED */ b 99f + nop + nop 7: brk #1000 /* UNUSED */ b 99f -8: st4 { v0.s, v1.s, v2.s, v3.s }[0], [x3] /* S4 */ + nop + nop +8: bti j /* S4 */ + st4 { v0.s, v1.s, v2.s, v3.s }[0], [x3] b 99f -9: st3 { v0.s, v1.s, v2.s }[0], [x3] /* S3 */ + nop +9: bti j /* S3 */ + st3 { v0.s, v1.s, v2.s }[0], [x3] b 99f -10: stp s0, s1, [x3] /* S2 */ + nop +10: bti j /* S2 */ + stp s0, s1, [x3] b 99f -11: str s0, [x3] /* S1 */ + nop +11: bti j + str s0, [x3] /* S1 */ b 99f -12: st4 { v0.d, v1.d, v2.d, v3.d }[0], [x3] /* D4 */ + nop +12: bti j /* D4 */ + st4 { v0.d, v1.d, v2.d, v3.d }[0], [x3] b 99f -13: st3 { v0.d, v1.d, v2.d }[0], [x3] /* D3 */ + nop +13: bti j /* D3 */ + st3 { v0.d, v1.d, v2.d }[0], [x3] b 99f -14: stp d0, d1, [x3] /* D2 */ + nop +14: bti j /* D2 */ + stp d0, d1, [x3] b 99f -15: str d0, [x3] /* D1 */ + nop +15: bti j /* D1 */ + str d0, [x3] b 99f -16: str q3, [x3, #48] /* Q4 */ nop -17: str q2, [x3, #32] /* Q3 */ +16: bti j /* Q4 */ + str q3, [x3, #48] + nop nop -18: stp q0, q1, [x3] /* Q2 */ +17: bti j /* Q3 */ + str q2, [x3, #32] + nop + nop +18: bti j /* Q2 */ + stp q0, q1, [x3] b 99f -19: str q0, [x3] /* Q1 */ + nop +19: bti j /* Q1 */ + str q0, [x3] b 99f -20: uxtb w0, w0 /* UINT8 */ + nop +20: bti j /* UINT8 */ + uxtb w0, w0 str x0, [x3] + nop 21: b 99f /* reserved */ nop -22: uxth w0, w0 /* UINT16 */ + nop + nop +22: bti j /* UINT16 */ + uxth w0, w0 str x0, [x3] + nop 23: b 99f /* reserved */ nop -24: mov w0, w0 /* UINT32 */ + nop + nop +24: bti j /* UINT32 */ + mov w0, w0 str x0, [x3] + nop 25: b 99f /* reserved */ nop -26: sxtb x0, w0 /* SINT8 */ + nop + nop +26: bti j /* SINT8 */ + sxtb x0, w0 str x0, [x3] + nop 27: b 99f /* reserved */ nop -28: sxth x0, w0 /* SINT16 */ + nop + nop +28: bti j /* SINT16 */ + sxth x0, w0 str x0, [x3] + nop 29: b 99f /* reserved */ nop -30: sxtw x0, w0 /* SINT32 */ + nop + nop +30: bti j /* SINT32 */ + sxtw x0, w0 str x0, [x3] + nop 31: b 99f /* reserved */ nop + nop + nop /* Return now that result has been populated. */ 99: @@ -252,6 +317,7 @@ CNAME(ffi_call_SYSV): .align 4 CNAME(ffi_closure_SYSV_V): cfi_startproc + bti c SIGN_LR stp x29, x30, [sp, #-ffi_closure_SYSV_FS]! cfi_adjust_cfa_offset (ffi_closure_SYSV_FS) @@ -276,6 +342,7 @@ CNAME(ffi_closure_SYSV_V): .align 4 cfi_startproc CNAME(ffi_closure_SYSV): + bti c SIGN_LR stp x29, x30, [sp, #-ffi_closure_SYSV_FS]! cfi_adjust_cfa_offset (ffi_closure_SYSV_FS) @@ -305,73 +372,135 @@ L(do_closure): /* Load the return value as directed. */ adr x1, 0f and w0, w0, #AARCH64_RET_MASK - add x1, x1, x0, lsl #3 + add x1, x1, x0, lsl #4 add x3, sp, #16+CALL_CONTEXT_SIZE br x1 - /* Note that each table entry is 2 insns, and thus 8 bytes. */ + /* Note that each table entry is 4 insns, and thus 16 bytes. */ .align 4 -0: b 99f /* VOID */ +0: bti j /* VOID */ + b 99f + nop nop -1: ldr x0, [x3] /* INT64 */ +1: bti j /* INT64 */ + ldr x0, [x3] b 99f -2: ldp x0, x1, [x3] /* INT128 */ + nop +2: bti j /* INT128 */ + ldp x0, x1, [x3] b 99f + nop 3: brk #1000 /* UNUSED */ nop + nop + nop 4: brk #1000 /* UNUSED */ nop + nop + nop 5: brk #1000 /* UNUSED */ nop + nop + nop 6: brk #1000 /* UNUSED */ nop + nop + nop 7: brk #1000 /* UNUSED */ nop -8: ldr s3, [x3, #12] /* S4 */ nop -9: ldr s2, [x3, #8] /* S3 */ nop -10: ldp s0, s1, [x3] /* S2 */ +8: bti j /* S4 */ + ldr s3, [x3, #12] + nop + nop +9: bti j /* S3 */ + ldr s2, [x3, #8] + nop + nop +10: bti j /* S2 */ + ldp s0, s1, [x3] b 99f -11: ldr s0, [x3] /* S1 */ + nop +11: bti j /* S1 */ + ldr s0, [x3] b 99f -12: ldr d3, [x3, #24] /* D4 */ nop -13: ldr d2, [x3, #16] /* D3 */ +12: bti j /* D4 */ + ldr d3, [x3, #24] + nop + nop +13: bti j /* D3 */ + ldr d2, [x3, #16] nop -14: ldp d0, d1, [x3] /* D2 */ + nop +14: bti j /* D2 */ + ldp d0, d1, [x3] b 99f -15: ldr d0, [x3] /* D1 */ + nop +15: bti j /* D1 */ + ldr d0, [x3] b 99f -16: ldr q3, [x3, #48] /* Q4 */ nop -17: ldr q2, [x3, #32] /* Q3 */ +16: bti j /* Q4 */ + ldr q3, [x3, #48] nop -18: ldp q0, q1, [x3] /* Q2 */ + nop +17: bti j /* Q3 */ + ldr q2, [x3, #32] + nop + nop +18: bti j /* Q2 */ + ldp q0, q1, [x3] b 99f -19: ldr q0, [x3] /* Q1 */ + nop +19: bti j /* Q1 */ + ldr q0, [x3] b 99f -20: ldrb w0, [x3, #BE(7)] /* UINT8 */ + nop +20: bti j /* UINT8 */ + ldrb w0, [x3, #BE(7)] b 99f + nop 21: brk #1000 /* reserved */ nop -22: ldrh w0, [x3, #BE(6)] /* UINT16 */ + nop + nop +22: bti j /* UINT16 */ + ldrh w0, [x3, #BE(6)] b 99f + nop 23: brk #1000 /* reserved */ nop -24: ldr w0, [x3, #BE(4)] /* UINT32 */ + nop + nop +24: bti j /* UINT32 */ + ldr w0, [x3, #BE(4)] b 99f + nop 25: brk #1000 /* reserved */ nop -26: ldrsb x0, [x3, #BE(7)] /* SINT8 */ + nop + nop +26: bti j /* SINT8 */ + ldrsb x0, [x3, #BE(7)] b 99f + nop 27: brk #1000 /* reserved */ nop -28: ldrsh x0, [x3, #BE(6)] /* SINT16 */ + nop + nop +28: bti j /* SINT16 */ + ldrsh x0, [x3, #BE(6)] b 99f + nop 29: brk #1000 /* reserved */ nop -30: ldrsw x0, [x3, #BE(4)] /* SINT32 */ + nop + nop +30: bti j /* SINT32 */ + ldrsw x0, [x3, #BE(4)] + nop nop 31: /* reserved */ 99: ldp x29, x30, [sp], #ffi_closure_SYSV_FS @@ -485,6 +614,7 @@ CNAME(ffi_closure_trampoline_table_page): .align 4 CNAME(ffi_go_closure_SYSV_V): cfi_startproc + bti c stp x29, x30, [sp, #-ffi_closure_SYSV_FS]! cfi_adjust_cfa_offset (ffi_closure_SYSV_FS) cfi_rel_offset (x29, 0) @@ -508,6 +638,7 @@ CNAME(ffi_go_closure_SYSV_V): .align 4 cfi_startproc CNAME(ffi_go_closure_SYSV): + bti c stp x29, x30, [sp, #-ffi_closure_SYSV_FS]! cfi_adjust_cfa_offset (ffi_closure_SYSV_FS) cfi_rel_offset (x29, 0) ++++++ 810.patch ++++++ >From ad3b42caa238330e872ae32adea55defe7a14286 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Storsj=C3=B6?= <mar...@martin.st> Date: Mon, 27 Nov 2023 00:39:21 +0200 Subject: [PATCH] aarch64: Write the BTI instructions as "hint" instructions GNU binutils refuses to assemble the direct BTI instructions unless the target architecture explicitly supports BTI, ending up with errors such as ../src/aarch64/sysv.S: Assembler messages: ../src/aarch64/sysv.S:87: Error: selected processor does not support `bti c' ../src/aarch64/sysv.S:156: Error: selected processor does not support `bti j' Building with -march=armv8.5-a fixes building this. However, the BTI instructions assemble into hint instructions, that are ignored by processors that don't implement them. Therefore it is possible to assemble them for the baseline armv8.0-a target as well, by replacing "bti j" with "hint #36", "bti c" with "hint #34" and "bti jc" with "hint #38"; this assembles into the same instruction bits. --- src/aarch64/ffi.c | 25 ++++++------ src/aarch64/sysv.S | 97 ++++++++++++++++++++++++---------------------- 2 files changed, 63 insertions(+), 59 deletions(-) diff --git a/src/aarch64/ffi.c b/src/aarch64/ffi.c index 67b18fbf..8661a352 100644 --- a/src/aarch64/ffi.c +++ b/src/aarch64/ffi.c @@ -386,55 +386,56 @@ extend_hfa_type (void *dest, void *src, int h) ssize_t f = h - AARCH64_RET_S4; void *x0; +#define BTI_J "hint #36" asm volatile ( "adr %0, 0f\n" " add %0, %0, %1\n" " br %0\n" -"0: bti j\n" /* S4 */ +"0: "BTI_J"\n" /* S4 */ " ldp s16, s17, [%3]\n" " ldp s18, s19, [%3, #8]\n" " b 4f\n" -" bti j\n" /* S3 */ +" "BTI_J"\n" /* S3 */ " ldp s16, s17, [%3]\n" " ldr s18, [%3, #8]\n" " b 3f\n" -" bti j\n" /* S2 */ +" "BTI_J"\n" /* S2 */ " ldp s16, s17, [%3]\n" " b 2f\n" " nop\n" -" bti j\n" /* S1 */ +" "BTI_J"\n" /* S1 */ " ldr s16, [%3]\n" " b 1f\n" " nop\n" -" bti j\n" /* D4 */ +" "BTI_J"\n" /* D4 */ " ldp d16, d17, [%3]\n" " ldp d18, d19, [%3, #16]\n" " b 4f\n" -" bti j\n" /* D3 */ +" "BTI_J"\n" /* D3 */ " ldp d16, d17, [%3]\n" " ldr d18, [%3, #16]\n" " b 3f\n" -" bti j\n" /* D2 */ +" "BTI_J"\n" /* D2 */ " ldp d16, d17, [%3]\n" " b 2f\n" " nop\n" -" bti j\n" /* D1 */ +" "BTI_J"\n" /* D1 */ " ldr d16, [%3]\n" " b 1f\n" " nop\n" -" bti j\n" /* Q4 */ +" "BTI_J"\n" /* Q4 */ " ldp q16, q17, [%3]\n" " ldp q18, q19, [%3, #32]\n" " b 4f\n" -" bti j\n" /* Q3 */ +" "BTI_J"\n" /* Q3 */ " ldp q16, q17, [%3]\n" " ldr q18, [%3, #32]\n" " b 3f\n" -" bti j\n" /* Q2 */ +" "BTI_J"\n" /* Q2 */ " ldp q16, q17, [%3]\n" " b 2f\n" " nop\n" -" bti j\n" /* Q1 */ +" "BTI_J"\n" /* Q1 */ " ldr q16, [%3]\n" " b 1f\n" "4: str q19, [%2, #48]\n" diff --git a/src/aarch64/sysv.S b/src/aarch64/sysv.S index 9f4188e0..90816752 100644 --- a/src/aarch64/sysv.S +++ b/src/aarch64/sysv.S @@ -64,6 +64,9 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #define PTR_SIZE 8 #endif +#define BTI_C hint #34 +#define BTI_J hint #36 + .text .align 4 @@ -84,7 +87,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ cfi_startproc CNAME(ffi_call_SYSV): - bti c + BTI_C /* Sign the lr with x1 since that is where it will be stored */ SIGN_LR_WITH_REG(x1) @@ -153,15 +156,15 @@ CNAME(ffi_call_SYSV): and therefore we want to extend to 64 bits; these types have two consecutive entries allocated for them. */ .align 4 -0: bti j /* VOID */ +0: BTI_J /* VOID */ b 99f nop nop -1: bti j /* INT64 */ +1: BTI_J /* INT64 */ str x0, [x3] b 99f nop -2: bti j /* INT128 */ +2: BTI_J /* INT128 */ stp x0, x1, [x3] b 99f nop @@ -185,55 +188,55 @@ CNAME(ffi_call_SYSV): b 99f nop nop -8: bti j /* S4 */ +8: BTI_J /* S4 */ st4 { v0.s, v1.s, v2.s, v3.s }[0], [x3] b 99f nop -9: bti j /* S3 */ +9: BTI_J /* S3 */ st3 { v0.s, v1.s, v2.s }[0], [x3] b 99f nop -10: bti j /* S2 */ +10: BTI_J /* S2 */ stp s0, s1, [x3] b 99f nop -11: bti j +11: BTI_J str s0, [x3] /* S1 */ b 99f nop -12: bti j /* D4 */ +12: BTI_J /* D4 */ st4 { v0.d, v1.d, v2.d, v3.d }[0], [x3] b 99f nop -13: bti j /* D3 */ +13: BTI_J /* D3 */ st3 { v0.d, v1.d, v2.d }[0], [x3] b 99f nop -14: bti j /* D2 */ +14: BTI_J /* D2 */ stp d0, d1, [x3] b 99f nop -15: bti j /* D1 */ +15: BTI_J /* D1 */ str d0, [x3] b 99f nop -16: bti j /* Q4 */ +16: BTI_J /* Q4 */ str q3, [x3, #48] nop nop -17: bti j /* Q3 */ +17: BTI_J /* Q3 */ str q2, [x3, #32] nop nop -18: bti j /* Q2 */ +18: BTI_J /* Q2 */ stp q0, q1, [x3] b 99f nop -19: bti j /* Q1 */ +19: BTI_J /* Q1 */ str q0, [x3] b 99f nop -20: bti j /* UINT8 */ +20: BTI_J /* UINT8 */ uxtb w0, w0 str x0, [x3] nop @@ -241,7 +244,7 @@ CNAME(ffi_call_SYSV): nop nop nop -22: bti j /* UINT16 */ +22: BTI_J /* UINT16 */ uxth w0, w0 str x0, [x3] nop @@ -249,7 +252,7 @@ CNAME(ffi_call_SYSV): nop nop nop -24: bti j /* UINT32 */ +24: BTI_J /* UINT32 */ mov w0, w0 str x0, [x3] nop @@ -257,7 +260,7 @@ CNAME(ffi_call_SYSV): nop nop nop -26: bti j /* SINT8 */ +26: BTI_J /* SINT8 */ sxtb x0, w0 str x0, [x3] nop @@ -265,7 +268,7 @@ CNAME(ffi_call_SYSV): nop nop nop -28: bti j /* SINT16 */ +28: BTI_J /* SINT16 */ sxth x0, w0 str x0, [x3] nop @@ -273,7 +276,7 @@ CNAME(ffi_call_SYSV): nop nop nop -30: bti j /* SINT32 */ +30: BTI_J /* SINT32 */ sxtw x0, w0 str x0, [x3] nop @@ -317,7 +320,7 @@ CNAME(ffi_call_SYSV): .align 4 CNAME(ffi_closure_SYSV_V): cfi_startproc - bti c + BTI_C SIGN_LR stp x29, x30, [sp, #-ffi_closure_SYSV_FS]! cfi_adjust_cfa_offset (ffi_closure_SYSV_FS) @@ -342,7 +345,7 @@ CNAME(ffi_closure_SYSV_V): .align 4 cfi_startproc CNAME(ffi_closure_SYSV): - bti c + BTI_C SIGN_LR stp x29, x30, [sp, #-ffi_closure_SYSV_FS]! cfi_adjust_cfa_offset (ffi_closure_SYSV_FS) @@ -378,15 +381,15 @@ L(do_closure): /* Note that each table entry is 4 insns, and thus 16 bytes. */ .align 4 -0: bti j /* VOID */ +0: BTI_J /* VOID */ b 99f nop nop -1: bti j /* INT64 */ +1: BTI_J /* INT64 */ ldr x0, [x3] b 99f nop -2: bti j /* INT128 */ +2: BTI_J /* INT128 */ ldp x0, x1, [x3] b 99f nop @@ -410,55 +413,55 @@ L(do_closure): nop nop nop -8: bti j /* S4 */ +8: BTI_J /* S4 */ ldr s3, [x3, #12] nop nop -9: bti j /* S3 */ +9: BTI_J /* S3 */ ldr s2, [x3, #8] nop nop -10: bti j /* S2 */ +10: BTI_J /* S2 */ ldp s0, s1, [x3] b 99f nop -11: bti j /* S1 */ +11: BTI_J /* S1 */ ldr s0, [x3] b 99f nop -12: bti j /* D4 */ +12: BTI_J /* D4 */ ldr d3, [x3, #24] nop nop -13: bti j /* D3 */ +13: BTI_J /* D3 */ ldr d2, [x3, #16] nop nop -14: bti j /* D2 */ +14: BTI_J /* D2 */ ldp d0, d1, [x3] b 99f nop -15: bti j /* D1 */ +15: BTI_J /* D1 */ ldr d0, [x3] b 99f nop -16: bti j /* Q4 */ +16: BTI_J /* Q4 */ ldr q3, [x3, #48] nop nop -17: bti j /* Q3 */ +17: BTI_J /* Q3 */ ldr q2, [x3, #32] nop nop -18: bti j /* Q2 */ +18: BTI_J /* Q2 */ ldp q0, q1, [x3] b 99f nop -19: bti j /* Q1 */ +19: BTI_J /* Q1 */ ldr q0, [x3] b 99f nop -20: bti j /* UINT8 */ +20: BTI_J /* UINT8 */ ldrb w0, [x3, #BE(7)] b 99f nop @@ -466,7 +469,7 @@ L(do_closure): nop nop nop -22: bti j /* UINT16 */ +22: BTI_J /* UINT16 */ ldrh w0, [x3, #BE(6)] b 99f nop @@ -474,7 +477,7 @@ L(do_closure): nop nop nop -24: bti j /* UINT32 */ +24: BTI_J /* UINT32 */ ldr w0, [x3, #BE(4)] b 99f nop @@ -482,7 +485,7 @@ L(do_closure): nop nop nop -26: bti j /* SINT8 */ +26: BTI_J /* SINT8 */ ldrsb x0, [x3, #BE(7)] b 99f nop @@ -490,7 +493,7 @@ L(do_closure): nop nop nop -28: bti j /* SINT16 */ +28: BTI_J /* SINT16 */ ldrsh x0, [x3, #BE(6)] b 99f nop @@ -498,7 +501,7 @@ L(do_closure): nop nop nop -30: bti j /* SINT32 */ +30: BTI_J /* SINT32 */ ldrsw x0, [x3, #BE(4)] nop nop @@ -614,7 +617,7 @@ CNAME(ffi_closure_trampoline_table_page): .align 4 CNAME(ffi_go_closure_SYSV_V): cfi_startproc - bti c + BTI_C stp x29, x30, [sp, #-ffi_closure_SYSV_FS]! cfi_adjust_cfa_offset (ffi_closure_SYSV_FS) cfi_rel_offset (x29, 0) @@ -638,7 +641,7 @@ CNAME(ffi_go_closure_SYSV_V): .align 4 cfi_startproc CNAME(ffi_go_closure_SYSV): - bti c + BTI_C stp x29, x30, [sp, #-ffi_closure_SYSV_FS]! cfi_adjust_cfa_offset (ffi_closure_SYSV_FS) cfi_rel_offset (x29, 0)