On 01/07/2022 14:03, Richard Earnshaw via Gcc-patches wrote:


On 28/04/2022 10:40, Andrea Corallo via Gcc-patches wrote:
Add targeting-checking entities for PACBTI in testsuite
framework.

Pre-approved with the requested changes here
<https://gcc.gnu.org/pipermail/gcc-patches/2021-December/586331.html>.

gcc/testsuite/ChangeLog:

    * testsuite/lib/target-supports.exp:
    (check_effective_target_arm_pacbti_hw): New.
    * doc/sourcebuild.texi: Document arm_pacbti_hw.

Co-Authored-By: Tejas Belagod  <tbela...@arm.com>

+proc check_effective_target_arm_pacbti_hw {} {
+    return [check_runtime arm_pacbti_hw_available {
+    __attribute__ ((naked)) int
+    main (void)
+    {
+      asm ("pac r12, lr, sp");

So the armv8-m Arm ARM says that this instruction is in the NOP space and that it is undefined if we aren't armv8-m.main or higher.

+      asm ("mov r0, #0");
+      asm ("autg r12, lr, sp");

This isn't in the nop space, but the Arm ARM says it is unpredictable if the extension isn't present.  Unfortunately, that means this isn't a particularly reliable way of detecting that the PACBTI feature is present.

However, I can't think off hand of more reliable way of testing this since reading the feature register ID_ISAR5 is not possible when in unprivileged mode.

So I think we'll have to live with this.

+      asm ("bx lr");
+    }
+    } ""]

OK.


Or perhaps not. The test does not try to add the right options to enable PAC/BTI if those aren't in the default selection for the current testsuite run.

Perhaps we also need some additional tests to work out what architecture options to add (if any) to ensure the test will at least assemble.

R.
R.

Reply via email to