When building with -mbranch-protection=bti, which affects the compiler codegen only, ensure that the assembler based codegen is aligned with this, by emitting the BTI C opcode at the start of each exported function. While most exported functions are not in fact ever called indirectly, whether or not this is the case is a property of the caller so annotating every exported function is a reasonable default.
While at it, fix two occurrences in ArmPkg of exported functions that did not use the ASM_FUNC() macro. Signed-off-by: Ard Biesheuvel <a...@kernel.org> --- ArmPkg/Include/AsmMacroIoLibV8.h | 3 ++- ArmPkg/Library/ArmExceptionLib/AArch64/ExceptionSupport.S | 3 +-- ArmPkg/Library/ArmSvcLib/AArch64/ArmSvc.S | 4 +--- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/ArmPkg/Include/AsmMacroIoLibV8.h b/ArmPkg/Include/AsmMacroIoLibV8.h index 2c2b1cabd0537671..135aaeca5d0b986d 100644 --- a/ArmPkg/Include/AsmMacroIoLibV8.h +++ b/ArmPkg/Include/AsmMacroIoLibV8.h @@ -38,7 +38,8 @@ .global Name ; \ .section #Section, "ax" ; \ .type Name, %function ; \ - Name: + Name: ; \ + AARCH64_BTI(c) #define ASM_FUNC(Name) _ASM_FUNC(ASM_PFX(Name), .text. ## Name) diff --git a/ArmPkg/Library/ArmExceptionLib/AArch64/ExceptionSupport.S b/ArmPkg/Library/ArmExceptionLib/AArch64/ExceptionSupport.S index 9202952ee9c0d4e5..cd9437b6aab82889 100644 --- a/ArmPkg/Library/ArmExceptionLib/AArch64/ExceptionSupport.S +++ b/ArmPkg/Library/ArmExceptionLib/AArch64/ExceptionSupport.S @@ -94,7 +94,6 @@ GCC_ASM_EXPORT(ExceptionHandlersEnd) GCC_ASM_EXPORT(CommonCExceptionHandler) -GCC_ASM_EXPORT(RegisterEl0Stack) .text @@ -387,6 +386,6 @@ ASM_PFX(CommonExceptionEntry): eret -ASM_PFX(RegisterEl0Stack): +ASM_FUNC(RegisterEl0Stack) msr sp_el0, x0 ret diff --git a/ArmPkg/Library/ArmSvcLib/AArch64/ArmSvc.S b/ArmPkg/Library/ArmSvcLib/AArch64/ArmSvc.S index 1a7c10cb793183e7..ab13914fd3e7a359 100644 --- a/ArmPkg/Library/ArmSvcLib/AArch64/ArmSvc.S +++ b/ArmPkg/Library/ArmSvcLib/AArch64/ArmSvc.S @@ -8,9 +8,7 @@ .text .align 3 -GCC_ASM_EXPORT(ArmCallSvc) - -ASM_PFX(ArmCallSvc): +ASM_FUNC(ArmCallSvc) // Push frame pointer and return address on the stack stp x29, x30, [sp, #-32]! mov x29, sp -- 2.39.2 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#101933): https://edk2.groups.io/g/devel/message/101933 Mute This Topic: https://groups.io/mt/97879290/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-