> From: Jeremie Courreges-Anglas <j...@wxcvbn.org> > Date: Mon, 20 Nov 2023 08:22:13 +0100 > > On Sun, Nov 19 2023, Tobias Heider <tobias.hei...@stusta.de> wrote: > > Diff below fixes libgcrypt/gnupg on my m2. > > > > CFI_STARTPROC() seemed like a good place to add the bti instructions > > since it is called in all the right places. > > It's not something that makes sense for upstream IMHO, but for ports > that use it, it's an obvious place for us to tuck in "endbr64" or > "bti c". (eg I've been tempted to use such macros in lang/ocaml) > > Using a macro named CFI_STARTPROC() can be considered either appropriate > or misleading, since the .cfi_* directives are about "Call Frame > Information", and endbr64/bti are about "Control-flow Integrity"... > > > If this is too hacky I'm also fine with adding explicit instructions > > everywhere or even a new macro. > > I'd say it's fine for our port. > > I have one doubt: wouldn't it look more correct to have "bti c" *after* > .cfi_startproc: > > # define CFI_STARTPROC() .cfi_startproc; bti c; > > since "bti c" is intended to be part of the function?
yes! > > opinions? ok? > > Just in case: the diff needs to be committed along with a REVISION bump, > so that the updated package ends up on users machines. > > My two cents, I'll let others chime in. (+cc maintainer) > > > Index: patches/patch-cipher_asm-common-aarch64_h > > =================================================================== > > RCS file: patches/patch-cipher_asm-common-aarch64_h > > diff -N patches/patch-cipher_asm-common-aarch64_h > > --- /dev/null 1 Jan 1970 00:00:00 -0000 > > +++ patches/patch-cipher_asm-common-aarch64_h 19 Nov 2023 20:22:40 > > -0000 > > @@ -0,0 +1,21 @@ > > +Index: cipher/asm-common-aarch64.h > > +--- cipher/asm-common-aarch64.h.orig > > ++++ cipher/asm-common-aarch64.h > > +@@ -45,7 +45,7 @@ > > + > > + #ifdef HAVE_GCC_ASM_CFI_DIRECTIVES > > + /* CFI directives to emit DWARF stack unwinding information. */ > > +-# define CFI_STARTPROC() .cfi_startproc > > ++# define CFI_STARTPROC() bti c; .cfi_startproc; > > + # define CFI_ENDPROC() .cfi_endproc > > + # define CFI_REMEMBER_STATE() .cfi_remember_state > > + # define CFI_RESTORE_STATE() .cfi_restore_state > > +@@ -87,7 +87,7 @@ > > + DW_SLEB128_28BIT(rsp_offs) > > + > > + #else > > +-# define CFI_STARTPROC() > > ++# define CFI_STARTPROC() bti c; > > + # define CFI_ENDPROC() > > + # define CFI_REMEMBER_STATE() > > + # define CFI_RESTORE_STATE() > > > > -- > jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF DDCC 0DFA 74AE 1524 E7EE >