]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
AArch64: Remove BTI from outline atomics
authorWilco Dijkstra <wilco.dijkstra@arm.com>
Tue, 26 Sep 2023 15:27:38 +0000 (16:27 +0100)
committerWilco Dijkstra <wilco.dijkstra@arm.com>
Tue, 26 Sep 2023 15:37:38 +0000 (16:37 +0100)
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.

libgcc/config/aarch64/lse.S

index dde3a28e07b13669533dfc5e8fac0a9a6ac33dbd..f64a3e98bfaee72a473d094764cde08446c0152b 100644 (file)
@@ -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