]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commit
gas: aarch64: testsuite: add new tests for SCFI users/ibhagat/try-scfi-aarch64-v2
authorIndu Bhagat <indu.bhagat@oracle.com>
Mon, 11 Dec 2023 06:08:03 +0000 (22:08 -0800)
committerIndu Bhagat <indu.bhagat@oracle.com>
Sat, 1 Jun 2024 00:07:47 +0000 (17:07 -0700)
commit163f1c3c1f395e9baa17c97fc7e2917d9e60fda3
tree3eee0d7581d3bdf63479373249bb08dbeb3bdb6d
parent89828a28cdf9f7a72a70f1a874298a5e01f4dbbb
gas: aarch64: testsuite: add new tests for SCFI

[Changes from V1]
 - new testcase scfi-cfg-4.s for the changes in cmp_scfi_state.
 - new testcase ginsn-arith-1.s for ginsn creation for various add sub insns.
 - removed redundant insns from ginsn-misc-1.s, some of those insns are
   now in ginsn-arith-1.s.
[End of changes from V1]

Similar to the x86_64 testcases, some .s files contain the corresponding
CFI directives.  This helps in validating the synthesized CFI by running
those tests with and without the --scfi=experimental command line
option.

GAS issues some diagnostics, enabled by default, with
--scfi=experimental.  The diagnostics have been added with an intent to
help user correct inadvertent errors in their hand-written asm.  An
error is issued when GAS finds that input asm is not amenable to
accurate CFI synthesis.  The existing scfi-diag-*.s tests in the
gas/testsuite/gas/scfi/x86_64 directory test some SCFI diagnostics
already:

      - (#1) "Warning: SCFI: Asymetrical register restore"
      - (#2) "Error: SCFI: usage of REG_FP as scratch not supported"
      - (#3) "Error: SCFI: unsupported stack manipulation pattern"
      - (#4) "Error: untraceable control flow for func 'XXX'"

In the newly added aarch64 testsuite, further tests for additional
diagnostics have been added:
 - scfi-diag-1.s in this patch highlights an aarch64-specific diagnostic:
   (#5) "Warning: SCFI: ignored probable save/restore op with reg offset"

Additionally, some testcases are added to showcase the (currently)
unsupported patterns, e.g., scfi-unsupported-1.s
        mov     x16, 4384
        sub     sp, sp, x16

gas/testsuite/:
* gas/scfi/README: Update comment to include aarch64.
* gas/scfi/aarch64/scfi-aarch64.exp: New file.
* gas/scfi/aarch64/ginsn-arith-1.l: New test.
* gas/scfi/aarch64/ginsn-arith-1.s: New test.
* gas/scfi/aarch64/ginsn-cofi-1.l: New test.
* gas/scfi/aarch64/ginsn-cofi-1.s: New test.
* gas/scfi/aarch64/ginsn-ldst-1.l: New test.
* gas/scfi/aarch64/ginsn-ldst-1.s: New test.
* gas/scfi/aarch64/scfi-cb-1.d: New test.
* gas/scfi/aarch64/scfi-cb-1.l: New test.
* gas/scfi/aarch64/scfi-cb-1.s: New test.
* gas/scfi/aarch64/scfi-cfg-1.d: New test.
* gas/scfi/aarch64/scfi-cfg-1.l: New test.
* gas/scfi/aarch64/scfi-cfg-1.s: New test.
* gas/scfi/aarch64/scfi-cfg-2.d: New test.
* gas/scfi/aarch64/scfi-cfg-2.l: New test.
* gas/scfi/aarch64/scfi-cfg-2.s: New test.
* gas/scfi/aarch64/scfi-cfg-3.d: New test.
* gas/scfi/aarch64/scfi-cfg-3.l: New test.
* gas/scfi/aarch64/scfi-cfg-3.s: New test.
* gas/scfi/aarch64/scfi-cfg-4.l: New test.
* gas/scfi/aarch64/scfi-cfg-4.s: New test.
* gas/scfi/aarch64/scfi-cond-br-1.d: New test.
* gas/scfi/aarch64/scfi-cond-br-1.l: New test.
* gas/scfi/aarch64/scfi-cond-br-1.s: New test.
* gas/scfi/aarch64/scfi-diag-1.l: New test.
* gas/scfi/aarch64/scfi-diag-1.s: New test.
* gas/scfi/aarch64/scfi-diag-2.l: New test.
* gas/scfi/aarch64/scfi-diag-2.s: New test.
* gas/scfi/aarch64/scfi-ldrp-1.d: New test.
* gas/scfi/aarch64/scfi-ldrp-1.l: New test.
* gas/scfi/aarch64/scfi-ldrp-1.s: New test.
* gas/scfi/aarch64/scfi-ldrp-2.d: New test.
* gas/scfi/aarch64/scfi-ldrp-2.l: New test.
* gas/scfi/aarch64/scfi-ldrp-2.s: New test.
* gas/scfi/aarch64/scfi-strp-1.d: New test.
* gas/scfi/aarch64/scfi-strp-1.l: New test.
* gas/scfi/aarch64/scfi-strp-1.s: New test.
* gas/scfi/aarch64/scfi-strp-2.d: New test.
* gas/scfi/aarch64/scfi-strp-2.l: New test.
* gas/scfi/aarch64/scfi-strp-2.s: New test.
* gas/scfi/aarch64/scfi-unsupported-1.l: New test.
* gas/scfi/aarch64/scfi-unsupported-1.s: New test.
46 files changed:
gas/testsuite/gas/scfi/README
gas/testsuite/gas/scfi/aarch64/ginsn-arith-1.l [new file with mode: 0644]
gas/testsuite/gas/scfi/aarch64/ginsn-arith-1.s [new file with mode: 0644]
gas/testsuite/gas/scfi/aarch64/ginsn-cofi-1.l [new file with mode: 0644]
gas/testsuite/gas/scfi/aarch64/ginsn-cofi-1.s [new file with mode: 0644]
gas/testsuite/gas/scfi/aarch64/ginsn-ldst-1.l [new file with mode: 0644]
gas/testsuite/gas/scfi/aarch64/ginsn-ldst-1.s [new file with mode: 0644]
gas/testsuite/gas/scfi/aarch64/ginsn-misc-1.l [new file with mode: 0644]
gas/testsuite/gas/scfi/aarch64/ginsn-misc-1.s [new file with mode: 0644]
gas/testsuite/gas/scfi/aarch64/scfi-aarch64.exp [new file with mode: 0644]
gas/testsuite/gas/scfi/aarch64/scfi-cb-1.d [new file with mode: 0644]
gas/testsuite/gas/scfi/aarch64/scfi-cb-1.l [new file with mode: 0644]
gas/testsuite/gas/scfi/aarch64/scfi-cb-1.s [new file with mode: 0644]
gas/testsuite/gas/scfi/aarch64/scfi-cfg-1.d [new file with mode: 0644]
gas/testsuite/gas/scfi/aarch64/scfi-cfg-1.l [new file with mode: 0644]
gas/testsuite/gas/scfi/aarch64/scfi-cfg-1.s [new file with mode: 0644]
gas/testsuite/gas/scfi/aarch64/scfi-cfg-2.d [new file with mode: 0644]
gas/testsuite/gas/scfi/aarch64/scfi-cfg-2.l [new file with mode: 0644]
gas/testsuite/gas/scfi/aarch64/scfi-cfg-2.s [new file with mode: 0644]
gas/testsuite/gas/scfi/aarch64/scfi-cfg-3.d [new file with mode: 0644]
gas/testsuite/gas/scfi/aarch64/scfi-cfg-3.l [new file with mode: 0644]
gas/testsuite/gas/scfi/aarch64/scfi-cfg-3.s [new file with mode: 0644]
gas/testsuite/gas/scfi/aarch64/scfi-cfg-4.d [new file with mode: 0644]
gas/testsuite/gas/scfi/aarch64/scfi-cfg-4.l [new file with mode: 0644]
gas/testsuite/gas/scfi/aarch64/scfi-cfg-4.s [new file with mode: 0644]
gas/testsuite/gas/scfi/aarch64/scfi-cond-br-1.d [new file with mode: 0644]
gas/testsuite/gas/scfi/aarch64/scfi-cond-br-1.l [new file with mode: 0644]
gas/testsuite/gas/scfi/aarch64/scfi-cond-br-1.s [new file with mode: 0644]
gas/testsuite/gas/scfi/aarch64/scfi-diag-1.l [new file with mode: 0644]
gas/testsuite/gas/scfi/aarch64/scfi-diag-1.s [new file with mode: 0644]
gas/testsuite/gas/scfi/aarch64/scfi-diag-2.l [new file with mode: 0644]
gas/testsuite/gas/scfi/aarch64/scfi-diag-2.s [new file with mode: 0644]
gas/testsuite/gas/scfi/aarch64/scfi-ldrp-1.d [new file with mode: 0644]
gas/testsuite/gas/scfi/aarch64/scfi-ldrp-1.l [new file with mode: 0644]
gas/testsuite/gas/scfi/aarch64/scfi-ldrp-1.s [new file with mode: 0644]
gas/testsuite/gas/scfi/aarch64/scfi-ldrp-2.d [new file with mode: 0644]
gas/testsuite/gas/scfi/aarch64/scfi-ldrp-2.l [new file with mode: 0644]
gas/testsuite/gas/scfi/aarch64/scfi-ldrp-2.s [new file with mode: 0644]
gas/testsuite/gas/scfi/aarch64/scfi-strp-1.d [new file with mode: 0644]
gas/testsuite/gas/scfi/aarch64/scfi-strp-1.l [new file with mode: 0644]
gas/testsuite/gas/scfi/aarch64/scfi-strp-1.s [new file with mode: 0644]
gas/testsuite/gas/scfi/aarch64/scfi-strp-2.d [new file with mode: 0644]
gas/testsuite/gas/scfi/aarch64/scfi-strp-2.l [new file with mode: 0644]
gas/testsuite/gas/scfi/aarch64/scfi-strp-2.s [new file with mode: 0644]
gas/testsuite/gas/scfi/aarch64/scfi-unsupported-1.l [new file with mode: 0644]
gas/testsuite/gas/scfi/aarch64/scfi-unsupported-1.s [new file with mode: 0644]