From f58d9432cdf8a279ed584efdb9791f44bb4dcd9e Mon Sep 17 00:00:00 2001 From: Luis Machado Date: Thu, 30 Jun 2022 15:23:56 +0100 Subject: [PATCH] Try a couple PAuth compilation flags for gdb.arch/aarch64-pauth.exp 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 | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/gdb/testsuite/gdb.arch/aarch64-pauth.exp b/gdb/testsuite/gdb.arch/aarch64-pauth.exp index 76ffd22a7cb..901eb8212c9 100644 --- a/gdb/testsuite/gdb.arch/aarch64-pauth.exp +++ b/gdb/testsuite/gdb.arch/aarch64-pauth.exp @@ -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 } -- 2.30.2