[gcc r14-4281] AArch64: Remove BTI from outline atomics

Wilco Dijkstra wilco@gcc.gnu.org
Tue Sep 26 15:38:36 GMT 2023


https://gcc.gnu.org/g:e1e18ea0defe9e1ee35abbbe5279028ecf786957

commit r14-4281-ge1e18ea0defe9e1ee35abbbe5279028ecf786957
Author: Wilco Dijkstra <wilco.dijkstra@arm.com>
Date:   Tue Sep 26 16:27:38 2023 +0100

    AArch64: Remove BTI from outline atomics
    
    The outline atomic functions have hidden visibility and can only be called
    directly.  Therefore we can remove the BTI at function entry.  This improves
    security by reducing the number of indirect entry points in a binary.
    The BTI markings on the objects are still emitted.
    
    libgcc/ChangeLog:
            * config/aarch64/lse.S (BTI_C): Remove define.

Diff:
---
 libgcc/config/aarch64/lse.S | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/libgcc/config/aarch64/lse.S b/libgcc/config/aarch64/lse.S
index dde3a28e07b..f64a3e98bfa 100644
--- a/libgcc/config/aarch64/lse.S
+++ b/libgcc/config/aarch64/lse.S
@@ -46,6 +46,9 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
  * direct branch.  The choice of LSE vs non-LSE is done via one byte load
  * followed by a well-predicted direct branch.  The functions are compiled
  * separately to minimize code size.
+ *
+ * Since these functions have hidden visibility and are never called
+ * indirectly, they do not need to start with a BTI instruction.
  */
 
 #include "auto-target.h"
@@ -161,8 +164,6 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 #define tmp1	17
 #define tmp2	15
 
-#define BTI_C	hint	34
-
 /* Start and end a function.  */
 .macro	STARTFN name
 	.text
@@ -172,7 +173,6 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 	.type	\name, %function
 	.cfi_startproc
 \name:
-	BTI_C
 .endm
 
 .macro	ENDFN name


More information about the Gcc-cvs mailing list