On Mon, 27 Mar 2023 at 16:24, Leif Lindholm <quic_llind...@quicinc.com> wrote: > > On Mon, Mar 27, 2023 at 15:12:29 +0100, Pedro Falcato wrote: > > On Mon, Mar 27, 2023 at 12:01 PM Ard Biesheuvel <a...@kernel.org> wrote: > > > > > > Implement a CPP macro that can be called from .S files to emit the .note > > > section carrying the annotation that informs the linker that the object > > > file is compatible with BTI control flow integrity checks. > > > > > > Signed-off-by: Ard Biesheuvel <a...@kernel.org> > > > --- > > > MdePkg/Include/AArch64/ProcessorBind.h | 31 ++++++++++++++++++++ > > > 1 file changed, 31 insertions(+) > > > > > > diff --git a/MdePkg/Include/AArch64/ProcessorBind.h > > > b/MdePkg/Include/AArch64/ProcessorBind.h > > > index abe2571245c665f3..11814f1ffaef698a 100644 > > > --- a/MdePkg/Include/AArch64/ProcessorBind.h > > > +++ b/MdePkg/Include/AArch64/ProcessorBind.h > > > @@ -186,6 +186,37 @@ typedef INT64 INTN; > > > #define GCC_ASM_IMPORT(func__) \ > > > .extern _CONCATENATE (__USER_LABEL_PREFIX__, func__) > > > > > > +#if defined(__ARM_FEATURE_BTI_DEFAULT) && __ARM_FEATURE_BTI_DEFAULT == 1 > > > +#define AARCH64_BTI(__type) \ > > > + .ifnc __type, ;\ > > > + bti __type ;\ > > > + .endif ;\ > > > + .ifndef .Lgnu_bti_notesize ;\ > > > + .pushsection .note.gnu.property, "a" ;\ > > > + .set NT_GNU_PROPERTY_TYPE_0, 0x5 ;\ > > > + .set GNU_PROPERTY_AARCH64_FEATURE_1_AND, 0xc0000000 ;\ > > > + .set GNU_PROPERTY_AARCH64_FEATURE_1_BTI, 0x1 ;\ > > > + .align 3 ;\ > > > + .long .Lnamesize ;\ > > > + .long .Lgnu_bti_notesize ;\ > > > + .long NT_GNU_PROPERTY_TYPE_0 ;\ > > > +0: .asciz "GNU" ;\ > > > + .set .Lnamesize, . - 0b ;\ > > > + .align 3 ;\ > > > +1: .long GNU_PROPERTY_AARCH64_FEATURE_1_AND ;\ > > > + .long .Lvalsize ;\ > > > +2: .long GNU_PROPERTY_AARCH64_FEATURE_1_BTI ;\ > > > + .set .Lvalsize, . - 2b ;\ > > > + .align 3 ;\ > > > + .set .Lgnu_bti_notesize, . - 1b ;\ > > > + .popsection ;\ > > > + .endif > > > +#endif > > > + > > > +#endif > > > + > > > +#ifndef AARCH64_BTI > > > +#define AARCH64_BTI(__type) > > > #endif > > > > > > /** > > > -- > > > 2.39.2 > > > > Patch-set wide comment: is there any chance we could take this > > opportunity to introduce a global ASM_FUNC (or a more Linux-named > > ENTRY(FuncName))? > > It seems to be that the current way is a bit error prone and you end > > up repeating yourself quite a bit with: > > > > ASM_PFX(Foo): > > AARCH64_BTI(c) > > <code> > > > > having a: > > ASM_FUNC(Foo) > > <code> > > > > that does proper PFX and BTI expansion internally seems better to me. > > I was thinking while looking at this patch that ASM_FUNC could > probably do with moving over to this file from AsmMacroIoLibV8.h. > I didn't take the thought far enough to consider including the BTI > bits in that, but I guess that could make sense. >
Yeah, but I'd prefer it if we could do that globally, and not just for AArch64 as part of this series. -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#102152): https://edk2.groups.io/g/devel/message/102152 Mute This Topic: https://groups.io/mt/97879282/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-