[GCC, AArch64] Fix a couple of bugs in BTI
authorSudakshina Das <sudi.das@arm.com>
Fri, 22 Feb 2019 10:55:22 +0000 (10:55 +0000)
committerSudakshina Das <sudi@gcc.gnu.org>
Fri, 22 Feb 2019 10:55:22 +0000 (10:55 +0000)
While doing more testing I found a couple of issues with my BTI patches.
This patch fixes them:
1) Remove a reference to return address key. The original patch was written
based on a different not yet committed patch ([PATCH 3/3][GCC][AARCH64] Add
support for pointer authentication B key) and I missed out on cleaning this
up. This is hidden behind the configuration option and thus went unnoticed.
2) Add a missed case for adding the BTI instruction in thunk functions.

*** gcc/ChangeLog ***

2019-02-22  Sudakshina Das  <sudi.das@arm.com>

* config/aarch64/aarch64.c (aarch64_output_mi_thunk): Add bti
instruction if enabled.
(aarch64_override_options): Remove reference to return address key.

From-SVN: r269112

gcc/ChangeLog
gcc/config/aarch64/aarch64.c

index b2b413c..0dbcc09 100644 (file)
@@ -1,3 +1,9 @@
+2019-02-22  Sudakshina Das  <sudi.das@arm.com>
+
+       * config/aarch64/aarch64.c (aarch64_output_mi_thunk): Add bti
+       instruction if enabled.
+       (aarch64_override_options): Remove reference to return address key.
+
 2019-02-22  Richard Biener  <rguenther@suse.de>
 
        PR tree-optimization/89440
index 0fd0b0e..91e79d3 100644 (file)
@@ -5980,6 +5980,9 @@ aarch64_output_mi_thunk (FILE *file, tree thunk ATTRIBUTE_UNUSED,
   rtx this_rtx, temp0, temp1, addr, funexp;
   rtx_insn *insn;
 
+  if (aarch64_bti_enabled ())
+    emit_insn (gen_bti_c());
+
   reload_completed = 1;
   emit_note (NOTE_INSN_PROLOGUE_END);
 
@@ -12032,7 +12035,6 @@ aarch64_override_options (void)
     {
 #ifdef TARGET_ENABLE_PAC_RET
       aarch64_ra_sign_scope = AARCH64_FUNCTION_NON_LEAF;
-      aarch64_ra_sign_key = AARCH64_KEY_A;
 #else
       aarch64_ra_sign_scope = AARCH64_FUNCTION_NONE;
 #endif