Try a couple PAuth compilation flags for gdb.arch/aarch64-pauth.exp
authorLuis Machado <luis.machado@arm.com>
Thu, 30 Jun 2022 14:23:56 +0000 (15:23 +0100)
committerLuis Machado <luis.machado@arm.com>
Mon, 11 Jul 2022 15:27:41 +0000 (16:27 +0100)
The -msign-return-address switch has been dropped from GCC, but some
older compiler may still support it.  Make sure we try both
-msign-return-address and -mbranch-protection before bailing out when
running gdb.arch/aarch64-pauth.exp.

gdb/testsuite/gdb.arch/aarch64-pauth.exp

index 76ffd22a7cb33ad9decd1ebeeb26fd30e2b4b0b1..901eb8212c9cb1286b9dd21f032822a97a6ef4d3 100644 (file)
@@ -25,9 +25,24 @@ if {![is_aarch64_target]} {
 # Build program with address signing forced on.
 standard_testfile
 set compile_flags {debug}
-lappend compile_flags "additional_flags=-msign-return-address=all"
 lappend compile_flags "additional_flags=-fno-inline"
-if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} ${compile_flags}] } {
+
+# Records whether the compilation was successful or not.
+set compilation_ok 0
+
+# We need to try a couple compilation flags here because -msign-return-address
+# was dropped at some point, but could still be supported.
+foreach pauth_flag "-mbranch-protection=pac-ret+leaf -msign-return-address=all" {
+    set flags $compile_flags
+    lappend flags "additional_flags=$pauth_flag"
+
+    if {!$compilation_ok && ![prepare_for_testing "failed to prepare" ${testfile} ${srcfile} ${flags}] } {
+       set compilation_ok 1
+    }
+}
+
+# If we couldn't compile, just bail out.
+if {!$compilation_ok} {
     return -1
 }