[V5,00/16] Experimental support for synthesizing CFI for hand-written asm

Message ID 20240111074820.2677826-1-indu.bhagat@oracle.com
Headers
Series Experimental support for synthesizing CFI for hand-written asm |

Message

Indu Bhagat Jan. 11, 2024, 7:48 a.m. UTC
  Hello,

This patch series adds support in GAS to synthesize CFI for hand-written
asm, acronym'd as SCFI.  In the current V5 version, I have addressed
many of the review comments.  If this version looks OK to you, I like
this to be merged for the upcoming 2.42 release.

 The current SCFI support is experimental;  Work
will need to continue to make SCFI a more mature and robust offering.

Thanks for reviewing the previous versions:
  - RFC patch series (https://sourceware.org/pipermail/binutils/2023-September/129560.html).
  - V1 (https://sourceware.org/pipermail/binutils/2023-October/130163.html)
  - V2 (https://sourceware.org/pipermail/binutils/2023-October/130210.html)
  - V3 (https://sourceware.org/pipermail/binutils/2023-December/131079.html)
  - V4 (https://sourceware.org/pipermail/binutils/2024-January/131521.html)

To aid the review process, each patch has a short summary of changes
from V2->V3, from V3->V4, and now from V4->V5.  Following are the most
significant ones:
  - After consensus to merge this feature as experimental, the command
    line option has been changed to --scfi=experimental.
  - Fixed several cases of incorrect, insufficient or confusing code in
    tc-i386.c.
 
Some work items for future include:
  - Allow APX instructions.
  - Handle 8-bit, 16-bit, 32-bit MOV and ALU ops correctly.
  - User-interfacing documentation around best-practices to use SCFI.
  - Other minor items
We will create a bugzilla entry for each and handle them over the coming
weeks.

SCFI
------  
Motivation for the patch series is to alleviate users from manually
adding the CFI directives in hand-written asm. Manually adding CFI
annotations to user input asm needs additional expertise; human-errors
are possible and indeed occur more often than one may like.  These
errors, if present at the time of virtual stack unwind, lead to
unfavorable outcomes: incorrect stacktraces, program state corruption
etc.

For synthesis of CFI to work, the user input must adhere to the ABI and
the appropriate calling conventions, as GAS derives the set of
callee-saved registers based on that contract.  Currently, only System V
AMD64 ABI is supported.  AArch64 support is in the works.

The SCFI implementation is based on some heuristics/rules, please see
the patch "gas: synthesize CFI for hand-written asm" for more details.
Further, at the moment, SCFI does not help in cases when the control
flow graph of the input asm cannot be generated (e.g., in case of
indirect jumps, jump tables).

Thanks,

Indu Bhagat (16):
  gas: dw2gencfi: minor rejig for cfi_sections_set and all_cfi_sections
  gas: dw2gencfi: use all_cfi_sections instead of cfi_sections
  gas: dw2gencfi: expose a new cfi_set_last_fde API
  gas: dw2gencfi: move some tc_* defines to the header file
  gas: dw2gencfi: expose dot_cfi_sections for scfidw2gen
  gas: dw2gencfi: externalize the all_cfi_sections
  gas: add new command line option --scfi=experimental
  gas: scfidw2gen: new functionality to prepare for SCFI
  opcodes: i386: fix dw2_regnum data type in reg_entry
  opcodes: gas: i386: define and use Rex2 as attribute not constraint
  opcodes: i386: new marker for insns that implicitly update stack
    pointer
  gas: synthesize CFI for hand-written asm
  gas: doc: update documentation for the new listing option
  opcodes: i386-reg.tbl: Add a comment to reflect dependency on ordering
  gas: testsuite: add an x86_64 testsuite for SCFI
  gas/NEWS: announce the new SCFI command line option

 gas/Makefile.am                               |     6 +
 gas/Makefile.in                               |    18 +-
 gas/NEWS                                      |     3 +
 gas/as.c                                      |    28 +-
 gas/as.h                                      |     8 +
 gas/config/obj-elf.c                          |    18 +
 gas/config/tc-i386.c                          |  1112 +-
 gas/config/tc-i386.h                          |    21 +
 gas/doc/as.texi                               |    31 +-
 gas/dw2gencfi.c                               |    45 +-
 gas/dw2gencfi.h                               |    20 +
 gas/ginsn.c                                   |  1259 ++
 gas/ginsn.h                                   |   384 +
 gas/listing.h                                 |     1 +
 gas/read.c                                    |    29 +-
 gas/scfi.c                                    |  1232 ++
 gas/scfi.h                                    |    38 +
 gas/scfidw2gen.c                              |   272 +
 gas/scfidw2gen.h                              |    35 +
 gas/subsegs.c                                 |     1 +
 gas/subsegs.h                                 |     2 +
 gas/symbols.c                                 |     3 +
 gas/testsuite/gas/scfi/README                 |    16 +
 gas/testsuite/gas/scfi/x86_64/ginsn-add-1.l   |    49 +
 gas/testsuite/gas/scfi/x86_64/ginsn-add-1.s   |    27 +
 .../gas/scfi/x86_64/ginsn-dw2-regnum-1.l      |    69 +
 .../gas/scfi/x86_64/ginsn-dw2-regnum-1.s      |    33 +
 gas/testsuite/gas/scfi/x86_64/ginsn-pop-1.l   |    41 +
 gas/testsuite/gas/scfi/x86_64/ginsn-pop-1.s   |    16 +
 gas/testsuite/gas/scfi/x86_64/ginsn-push-1.l  |    44 +
 gas/testsuite/gas/scfi/x86_64/ginsn-push-1.s  |    17 +
 gas/testsuite/gas/scfi/x86_64/scfi-add-1.d    |    26 +
 gas/testsuite/gas/scfi/x86_64/scfi-add-1.l    |     2 +
 gas/testsuite/gas/scfi/x86_64/scfi-add-1.s    |    13 +
 gas/testsuite/gas/scfi/x86_64/scfi-add-2.d    |    37 +
 gas/testsuite/gas/scfi/x86_64/scfi-add-2.l    |     2 +
 gas/testsuite/gas/scfi/x86_64/scfi-add-2.s    |    48 +
 .../gas/scfi/x86_64/scfi-asm-marker-1.d       |    29 +
 .../gas/scfi/x86_64/scfi-asm-marker-1.l       |     3 +
 .../gas/scfi/x86_64/scfi-asm-marker-1.s       |    27 +
 .../gas/scfi/x86_64/scfi-asm-marker-2.d       |    25 +
 .../gas/scfi/x86_64/scfi-asm-marker-2.l       |     3 +
 .../gas/scfi/x86_64/scfi-asm-marker-2.s       |    11 +
 .../gas/scfi/x86_64/scfi-asm-marker-3.d       |    32 +
 .../gas/scfi/x86_64/scfi-asm-marker-3.l       |     2 +
 .../gas/scfi/x86_64/scfi-asm-marker-3.s       |    38 +
 gas/testsuite/gas/scfi/x86_64/scfi-bp-sp-1.d  |    32 +
 gas/testsuite/gas/scfi/x86_64/scfi-bp-sp-1.l  |     2 +
 gas/testsuite/gas/scfi/x86_64/scfi-bp-sp-1.s  |    21 +
 gas/testsuite/gas/scfi/x86_64/scfi-bp-sp-2.d  |    58 +
 gas/testsuite/gas/scfi/x86_64/scfi-bp-sp-2.l  |     2 +
 gas/testsuite/gas/scfi/x86_64/scfi-bp-sp-2.s  |    52 +
 .../gas/scfi/x86_64/scfi-callee-saved-1.d     |    41 +
 .../gas/scfi/x86_64/scfi-callee-saved-1.l     |     2 +
 .../gas/scfi/x86_64/scfi-callee-saved-1.s     |    25 +
 .../gas/scfi/x86_64/scfi-callee-saved-2.d     |    42 +
 .../gas/scfi/x86_64/scfi-callee-saved-2.l     |     2 +
 .../gas/scfi/x86_64/scfi-callee-saved-2.s     |    40 +
 .../gas/scfi/x86_64/scfi-callee-saved-3.d     |    43 +
 .../gas/scfi/x86_64/scfi-callee-saved-3.l     |     3 +
 .../gas/scfi/x86_64/scfi-callee-saved-3.s     |    39 +
 .../gas/scfi/x86_64/scfi-callee-saved-4.d     |    41 +
 .../gas/scfi/x86_64/scfi-callee-saved-4.l     |     3 +
 .../gas/scfi/x86_64/scfi-callee-saved-4.s     |    55 +
 gas/testsuite/gas/scfi/x86_64/scfi-cfg-1.d    |    37 +
 gas/testsuite/gas/scfi/x86_64/scfi-cfg-1.l    |     2 +
 gas/testsuite/gas/scfi/x86_64/scfi-cfg-1.s    |    47 +
 gas/testsuite/gas/scfi/x86_64/scfi-cfg-2.d    |    29 +
 gas/testsuite/gas/scfi/x86_64/scfi-cfg-2.l    |     2 +
 gas/testsuite/gas/scfi/x86_64/scfi-cfg-2.s    |    21 +
 .../gas/scfi/x86_64/scfi-cfi-label-1.d        |    38 +
 .../gas/scfi/x86_64/scfi-cfi-label-1.l        |     2 +
 .../gas/scfi/x86_64/scfi-cfi-label-1.s        |    19 +
 .../gas/scfi/x86_64/scfi-cfi-sections-1.d     |    24 +
 .../gas/scfi/x86_64/scfi-cfi-sections-1.l     |     2 +
 .../gas/scfi/x86_64/scfi-cfi-sections-1.s     |    22 +
 gas/testsuite/gas/scfi/x86_64/scfi-cofi-1.d   |     5 +
 gas/testsuite/gas/scfi/x86_64/scfi-cofi-1.l   |     3 +
 gas/testsuite/gas/scfi/x86_64/scfi-cofi-1.s   |    24 +
 gas/testsuite/gas/scfi/x86_64/scfi-diag-1.l   |     4 +
 gas/testsuite/gas/scfi/x86_64/scfi-diag-1.s   |    22 +
 gas/testsuite/gas/scfi/x86_64/scfi-diag-2.l   |     4 +
 gas/testsuite/gas/scfi/x86_64/scfi-diag-2.s   |    28 +
 .../gas/scfi/x86_64/scfi-dyn-stack-1.d        |    24 +
 .../gas/scfi/x86_64/scfi-dyn-stack-1.l        |     2 +
 .../gas/scfi/x86_64/scfi-dyn-stack-1.s        |    50 +
 gas/testsuite/gas/scfi/x86_64/scfi-enter-1.d  |    36 +
 gas/testsuite/gas/scfi/x86_64/scfi-enter-1.l  |     2 +
 gas/testsuite/gas/scfi/x86_64/scfi-enter-1.s  |    24 +
 .../gas/scfi/x86_64/scfi-fp-diag-2.l          |     3 +
 .../gas/scfi/x86_64/scfi-fp-diag-2.s          |    55 +
 .../gas/scfi/x86_64/scfi-indirect-mov-1.d     |    52 +
 .../gas/scfi/x86_64/scfi-indirect-mov-1.l     |     2 +
 .../gas/scfi/x86_64/scfi-indirect-mov-1.s     |    48 +
 .../gas/scfi/x86_64/scfi-indirect-mov-2.d     |    42 +
 .../gas/scfi/x86_64/scfi-indirect-mov-2.l     |     2 +
 .../gas/scfi/x86_64/scfi-indirect-mov-2.s     |    38 +
 .../gas/scfi/x86_64/scfi-indirect-mov-3.d     |    42 +
 .../gas/scfi/x86_64/scfi-indirect-mov-3.l     |     2 +
 .../gas/scfi/x86_64/scfi-indirect-mov-3.s     |    38 +
 .../gas/scfi/x86_64/scfi-indirect-mov-4.d     |    64 +
 .../gas/scfi/x86_64/scfi-indirect-mov-4.l     |     3 +
 .../gas/scfi/x86_64/scfi-indirect-mov-4.s     |    68 +
 .../gas/scfi/x86_64/scfi-indirect-mov-5.s     |    35 +
 gas/testsuite/gas/scfi/x86_64/scfi-lea-1.d    |    38 +
 gas/testsuite/gas/scfi/x86_64/scfi-lea-1.l    |     2 +
 gas/testsuite/gas/scfi/x86_64/scfi-lea-1.s    |    39 +
 gas/testsuite/gas/scfi/x86_64/scfi-leave-1.d  |    37 +
 gas/testsuite/gas/scfi/x86_64/scfi-leave-1.l  |     2 +
 gas/testsuite/gas/scfi/x86_64/scfi-leave-1.s  |    25 +
 gas/testsuite/gas/scfi/x86_64/scfi-pushq-1.d  |    36 +
 gas/testsuite/gas/scfi/x86_64/scfi-pushq-1.l  |     2 +
 gas/testsuite/gas/scfi/x86_64/scfi-pushq-1.s  |    23 +
 .../gas/scfi/x86_64/scfi-pushsection-1.d      |    43 +
 .../gas/scfi/x86_64/scfi-pushsection-1.l      |     2 +
 .../gas/scfi/x86_64/scfi-pushsection-1.s      |    40 +
 .../gas/scfi/x86_64/scfi-pushsection-2.d      |    40 +
 .../gas/scfi/x86_64/scfi-pushsection-2.l      |     2 +
 .../gas/scfi/x86_64/scfi-pushsection-2.s      |    40 +
 .../gas/scfi/x86_64/scfi-selfalign-func-1.d   |    32 +
 .../gas/scfi/x86_64/scfi-selfalign-func-1.l   |     2 +
 .../gas/scfi/x86_64/scfi-selfalign-func-1.s   |    36 +
 gas/testsuite/gas/scfi/x86_64/scfi-simple-1.d |    27 +
 gas/testsuite/gas/scfi/x86_64/scfi-simple-1.l |     2 +
 gas/testsuite/gas/scfi/x86_64/scfi-simple-1.s |    15 +
 gas/testsuite/gas/scfi/x86_64/scfi-simple-2.d |    31 +
 gas/testsuite/gas/scfi/x86_64/scfi-simple-2.l |     2 +
 gas/testsuite/gas/scfi/x86_64/scfi-simple-2.s |    16 +
 gas/testsuite/gas/scfi/x86_64/scfi-sub-1.d    |    26 +
 gas/testsuite/gas/scfi/x86_64/scfi-sub-1.l    |     2 +
 gas/testsuite/gas/scfi/x86_64/scfi-sub-1.s    |    12 +
 gas/testsuite/gas/scfi/x86_64/scfi-sub-2.d    |    32 +
 gas/testsuite/gas/scfi/x86_64/scfi-sub-2.l    |     2 +
 gas/testsuite/gas/scfi/x86_64/scfi-sub-2.s    |    29 +
 .../gas/scfi/x86_64/scfi-unsupported-1.l      |     2 +
 .../gas/scfi/x86_64/scfi-unsupported-1.s      |     9 +
 .../gas/scfi/x86_64/scfi-unsupported-2.l      |     3 +
 .../gas/scfi/x86_64/scfi-unsupported-2.s      |    13 +
 .../gas/scfi/x86_64/scfi-unsupported-3.l      |     3 +
 .../gas/scfi/x86_64/scfi-unsupported-3.s      |    13 +
 .../gas/scfi/x86_64/scfi-unsupported-4.l      |     4 +
 .../gas/scfi/x86_64/scfi-unsupported-4.s      |    22 +
 .../gas/scfi/x86_64/scfi-unsupported-cfg-1.l  |     3 +
 .../gas/scfi/x86_64/scfi-unsupported-cfg-1.s  |    52 +
 .../gas/scfi/x86_64/scfi-unsupported-cfg-2.l  |     4 +
 .../gas/scfi/x86_64/scfi-unsupported-cfg-2.s  |    14 +
 .../gas/scfi/x86_64/scfi-unsupported-drap-1.l |     4 +
 .../gas/scfi/x86_64/scfi-unsupported-drap-1.s |    75 +
 .../gas/scfi/x86_64/scfi-unsupported-insn-1.l |     7 +
 .../gas/scfi/x86_64/scfi-unsupported-insn-1.s |    16 +
 gas/testsuite/gas/scfi/x86_64/scfi-x86-64.exp |   113 +
 opcodes/i386-gen.c                            |     1 +
 opcodes/i386-opc.h                            |    10 +-
 opcodes/i386-opc.tbl                          |   106 +-
 opcodes/i386-reg.tbl                          |     3 +
 opcodes/i386-tbl.h                            | 11755 ++++++++++------
 156 files changed, 15482 insertions(+), 4033 deletions(-)
 create mode 100644 gas/ginsn.c
 create mode 100644 gas/ginsn.h
 create mode 100644 gas/scfi.c
 create mode 100644 gas/scfi.h
 create mode 100644 gas/scfidw2gen.c
 create mode 100644 gas/scfidw2gen.h
 create mode 100644 gas/testsuite/gas/scfi/README
 create mode 100644 gas/testsuite/gas/scfi/x86_64/ginsn-add-1.l
 create mode 100644 gas/testsuite/gas/scfi/x86_64/ginsn-add-1.s
 create mode 100644 gas/testsuite/gas/scfi/x86_64/ginsn-dw2-regnum-1.l
 create mode 100644 gas/testsuite/gas/scfi/x86_64/ginsn-dw2-regnum-1.s
 create mode 100644 gas/testsuite/gas/scfi/x86_64/ginsn-pop-1.l
 create mode 100644 gas/testsuite/gas/scfi/x86_64/ginsn-pop-1.s
 create mode 100644 gas/testsuite/gas/scfi/x86_64/ginsn-push-1.l
 create mode 100644 gas/testsuite/gas/scfi/x86_64/ginsn-push-1.s
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-add-1.d
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-add-1.l
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-add-1.s
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-add-2.d
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-add-2.l
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-add-2.s
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-asm-marker-1.d
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-asm-marker-1.l
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-asm-marker-1.s
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-asm-marker-2.d
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-asm-marker-2.l
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-asm-marker-2.s
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-asm-marker-3.d
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-asm-marker-3.l
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-asm-marker-3.s
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-bp-sp-1.d
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-bp-sp-1.l
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-bp-sp-1.s
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-bp-sp-2.d
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-bp-sp-2.l
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-bp-sp-2.s
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-callee-saved-1.d
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-callee-saved-1.l
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-callee-saved-1.s
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-callee-saved-2.d
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-callee-saved-2.l
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-callee-saved-2.s
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-callee-saved-3.d
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-callee-saved-3.l
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-callee-saved-3.s
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-callee-saved-4.d
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-callee-saved-4.l
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-callee-saved-4.s
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-cfg-1.d
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-cfg-1.l
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-cfg-1.s
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-cfg-2.d
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-cfg-2.l
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-cfg-2.s
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-cfi-label-1.d
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-cfi-label-1.l
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-cfi-label-1.s
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-cfi-sections-1.d
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-cfi-sections-1.l
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-cfi-sections-1.s
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-cofi-1.d
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-cofi-1.l
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-cofi-1.s
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-diag-1.l
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-diag-1.s
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-diag-2.l
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-diag-2.s
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-dyn-stack-1.d
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-dyn-stack-1.l
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-dyn-stack-1.s
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-enter-1.d
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-enter-1.l
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-enter-1.s
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-fp-diag-2.l
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-fp-diag-2.s
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-indirect-mov-1.d
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-indirect-mov-1.l
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-indirect-mov-1.s
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-indirect-mov-2.d
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-indirect-mov-2.l
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-indirect-mov-2.s
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-indirect-mov-3.d
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-indirect-mov-3.l
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-indirect-mov-3.s
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-indirect-mov-4.d
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-indirect-mov-4.l
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-indirect-mov-4.s
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-indirect-mov-5.s
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-lea-1.d
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-lea-1.l
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-lea-1.s
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-leave-1.d
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-leave-1.l
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-leave-1.s
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-pushq-1.d
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-pushq-1.l
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-pushq-1.s
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-pushsection-1.d
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-pushsection-1.l
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-pushsection-1.s
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-pushsection-2.d
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-pushsection-2.l
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-pushsection-2.s
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-selfalign-func-1.d
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-selfalign-func-1.l
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-selfalign-func-1.s
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-simple-1.d
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-simple-1.l
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-simple-1.s
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-simple-2.d
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-simple-2.l
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-simple-2.s
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-sub-1.d
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-sub-1.l
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-sub-1.s
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-sub-2.d
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-sub-2.l
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-sub-2.s
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-unsupported-1.l
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-unsupported-1.s
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-unsupported-2.l
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-unsupported-2.s
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-unsupported-3.l
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-unsupported-3.s
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-unsupported-4.l
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-unsupported-4.s
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-unsupported-cfg-1.l
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-unsupported-cfg-1.s
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-unsupported-cfg-2.l
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-unsupported-cfg-2.s
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-unsupported-drap-1.l
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-unsupported-drap-1.s
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-unsupported-insn-1.l
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-unsupported-insn-1.s
 create mode 100644 gas/testsuite/gas/scfi/x86_64/scfi-x86-64.exp