mirror of https://github.com/acidanthera/audk.git
ArmPkg: Emit BTI opcodes when BTI codegen is enabled
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 <ardb@kernel.org> Reviewed-by: Leif Lindholm <quic_llindhol@quicinc.com> Reviewed-by: Oliver Smith-Denny <osd@smith-denny.com>
This commit is contained in:
parent
f8b1854b92
commit
48d642a310
|
@ -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)
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -5,12 +5,12 @@
|
|||
//
|
||||
//
|
||||
|
||||
#include <AsmMacroIoLibV8.h>
|
||||
|
||||
.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
|
||||
|
|
Loading…
Reference in New Issue