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.

/
    Leif

> 
> -- 
> Pedro
> 
> 
> 
> 
> 


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#101960): https://edk2.groups.io/g/devel/message/101960
Mute This Topic: https://groups.io/mt/97879282/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: 
https://edk2.groups.io/g/devel/leave/9847357/21656/1706620634/xyzzy 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to