Successfully identified regression in *gcc* in CI configuration 
tcwg_gnu/gnu-master-arm-check_bootstrap.  So far, this commit has regressed CI 
configurations:
 - tcwg_gnu/gnu-master-arm-check_bootstrap

Culprit:
<cut>
commit c1f76af469388d3df815c82de566387da5ae000f
Author: Indu Bhagat <indu.bha...@oracle.com>
Date:   Thu May 20 11:19:04 2021 -0700

    CTF/BTF testsuites
    
    This commit adds a new testsuite for the CTF debug format.
    
    2021-06-28  Indu Bhagat  <indu.bha...@oracle.com>
                David Faust  <david.fa...@oracle.com>
    
    gcc/testsuite/
    
            * lib/gcc-dg.exp (gcc-dg-frontend-supports-ctf): New procedure.
            (gcc-dg-debug-runtest): Add -gctf support.
            * gcc.dg/debug/btf/btf-1.c: New test.
            * gcc.dg/debug/btf/btf-2.c: Likewise.
            * gcc.dg/debug/btf/btf-anonymous-struct-1.c: Likewise.
            * gcc.dg/debug/btf/btf-anonymous-union-1.c: Likewise.
            * gcc.dg/debug/btf/btf-array-1.c: Likewise.
            * gcc.dg/debug/btf/btf-bitfields-1.c: Likewise.
            * gcc.dg/debug/btf/btf-bitfields-2.c: Likewise.
            * gcc.dg/debug/btf/btf-bitfields-3.c: Likewise.
            * gcc.dg/debug/btf/btf-cvr-quals-1.c: Likewise.
            * gcc.dg/debug/btf/btf-enum-1.c: Likewise.
            * gcc.dg/debug/btf/btf-forward-1.c: Likewise.
            * gcc.dg/debug/btf/btf-function-1.c: Likewise.
            * gcc.dg/debug/btf/btf-function-2.c: Likewise.
            * gcc.dg/debug/btf/btf-int-1.c: Likewise.
            * gcc.dg/debug/btf/btf-pointers-1.c: Likewise.
            * gcc.dg/debug/btf/btf-struct-1.c: Likewise.
            * gcc.dg/debug/btf/btf-typedef-1.c: Likewise.
            * gcc.dg/debug/btf/btf-union-1.c: Likewise.
            * gcc.dg/debug/btf/btf-variables-1.c: Likewise.
            * gcc.dg/debug/btf/btf.exp: Likewise.
            * gcc.dg/debug/ctf/ctf-1.c: Likewise.
            * gcc.dg/debug/ctf/ctf-2.c: Likewise.
            * gcc.dg/debug/ctf/ctf-anonymous-struct-1.c: Likewise.
            * gcc.dg/debug/ctf/ctf-anonymous-union-1.c: Likewise.
            * gcc.dg/debug/ctf/ctf-array-1.c: Likewise.
            * gcc.dg/debug/ctf/ctf-array-2.c: Likewise.
            * gcc.dg/debug/ctf/ctf-array-3.c: Likewise.
            * gcc.dg/debug/ctf/ctf-array-4.c: Likewise.
            * gcc.dg/debug/ctf/ctf-attr-mode-1.c: Likewise.
            * gcc.dg/debug/ctf/ctf-attr-used-1.c: Likewise.
            * gcc.dg/debug/ctf/ctf-bitfields-1.c: Likewise.
            * gcc.dg/debug/ctf/ctf-bitfields-2.c: Likewise.
            * gcc.dg/debug/ctf/ctf-bitfields-3.c: Likewise.
            * gcc.dg/debug/ctf/ctf-bitfields-4.c: Likewise.
            * gcc.dg/debug/ctf/ctf-complex-1.c: Likewise.
            * gcc.dg/debug/ctf/ctf-cvr-quals-1.c: Likewise.
            * gcc.dg/debug/ctf/ctf-cvr-quals-2.c: Likewise.
            * gcc.dg/debug/ctf/ctf-cvr-quals-3.c: Likewise.
            * gcc.dg/debug/ctf/ctf-cvr-quals-4.c: Likewise.
            * gcc.dg/debug/ctf/ctf-enum-1.c: Likewise.
            * gcc.dg/debug/ctf/ctf-enum-2.c: Likewise.
            * gcc.dg/debug/ctf/ctf-file-scope-1.c: Likewise.
            * gcc.dg/debug/ctf/ctf-float-1.c: Likewise.
            * gcc.dg/debug/ctf/ctf-forward-1.c: Likewise.
            * gcc.dg/debug/ctf/ctf-forward-2.c: Likewise.
            * gcc.dg/debug/ctf/ctf-func-index-1.c: Likewise.
            * gcc.dg/debug/ctf/ctf-function-pointers-1.c: Likewise.
            * gcc.dg/debug/ctf/ctf-function-pointers-2.c: Likewise.
            * gcc.dg/debug/ctf/ctf-function-pointers-3.c: Likewise.
            * gcc.dg/debug/ctf/ctf-functions-1.c: Likewise.
            * gcc.dg/debug/ctf/ctf-int-1.c: Likewise.
            * gcc.dg/debug/ctf/ctf-objt-index-1.c: Likewise.
            * gcc.dg/debug/ctf/ctf-pointers-1.c: Likewise.
            * gcc.dg/debug/ctf/ctf-pointers-2.c: Likewise.
            * gcc.dg/debug/ctf/ctf-preamble-1.c: Likewise.
            * gcc.dg/debug/ctf/ctf-skip-types-1.c: Likewise.
            * gcc.dg/debug/ctf/ctf-skip-types-2.c: Likewise.
            * gcc.dg/debug/ctf/ctf-skip-types-3.c: Likewise.
            * gcc.dg/debug/ctf/ctf-skip-types-4.c: Likewise.
            * gcc.dg/debug/ctf/ctf-skip-types-5.c: Likewise.
            * gcc.dg/debug/ctf/ctf-skip-types-6.c: Likewise.
            * gcc.dg/debug/ctf/ctf-str-table-1.c: Likewise.
            * gcc.dg/debug/ctf/ctf-struct-1.c: Likewise.
            * gcc.dg/debug/ctf/ctf-struct-2.c: Likewise.
            * gcc.dg/debug/ctf/ctf-struct-array-1.c: Likewise.
            * gcc.dg/debug/ctf/ctf-struct-pointer-1.c: Likewise.
            * gcc.dg/debug/ctf/ctf-struct-pointer-2.c: Likewise.
            * gcc.dg/debug/ctf/ctf-typedef-1.c: Likewise.
            * gcc.dg/debug/ctf/ctf-typedef-2.c: Likewise.
            * gcc.dg/debug/ctf/ctf-typedef-3.c: Likewise.
            * gcc.dg/debug/ctf/ctf-typedef-struct-1.c: Likewise.
            * gcc.dg/debug/ctf/ctf-typedef-struct-2.c: Likewise.
            * gcc.dg/debug/ctf/ctf-typedef-struct-3.c: Likewise.
            * gcc.dg/debug/ctf/ctf-union-1.c: Likewise.
            * gcc.dg/debug/ctf/ctf-variables-1.c: Likewise.
            * gcc.dg/debug/ctf/ctf-variables-2.c: Likewise.
            * gcc.dg/debug/ctf/ctf.exp: Likewise.
</cut>

Results regressed to (for first_bad == c1f76af469388d3df815c82de566387da5ae000f)
# reset_artifacts:
-10
# build_abe bootstrap:
0
# build_abe check_bootstrap:
1
# # Comparing directories
# # REFERENCE: base-artifacts/sumfiles
# # CURRENT:   
/home/tcwg-buildslave/workspace/tcwg_gnu_3/artifacts/build-c1f76af469388d3df815c82de566387da5ae000f/sumfiles
# 
# # Comparing 12 common sum files:
# g++.sum
# gcc.sum
# gfortran.sum
# go.sum
# gotools.sum
# libatomic.sum
# libffi.sum
# libgo.sum
# libgomp.sum
# libitm.sum
# libstdc++.sum
# objc.sum
# Comparing:
# REFERENCE:/tmp/gxx-sum1.3784533
# CURRENT:  /tmp/gxx-sum2.3784533
# 
#               `                              +---------+---------+
# o  RUN STATUS:                               |   REF   |   RES   |
#   +------------------------------------------+---------+---------+
#   | Passes                            [PASS] |  460026 |  460487 |
#   | Unexpected fails                  [FAIL] |     192 |     195 |
#   | Errors                           [ERROR] |       0 |       0 |
#   | Unexpected passes                [XPASS] |      15 |      15 |
#   | Expected fails                   [XFAIL] |    2737 |    2737 |
#   | Unresolved                  [UNRESOLVED] |     104 |     104 |
#   | Unsupported                [UNSUPPORTED] |   22890 |   22896 |
#   | Untested                      [UNTESTED] |      10 |      10 |
#   +------------------------------------------+---------+---------+
# 
#     REF PASS ratio: 0.952238
#     RES PASS ratio: 0.952266
# 
# o  REGRESSIONS:
#   +------------------------------------------+---------+
#   | PASS now FAIL             [PASS => FAIL] |       1 |
#   | FAIL appears              [     => FAIL] |       2 |
#   +------------------------------------------+---------+
#   | TOTAL_REGRESSIONS                        |       3 |
#   +------------------------------------------+---------+
# 
#   - PASS now FAIL             [PASS => FAIL]:
# 
#   Executed from: g++.dg/dg.exp
#     g++:c-c++-common/missing-header-1.c  -std=gnu++14 (test for excess errors)
# 
# 
#   - FAIL appears              [     => FAIL]:
# 
#   Executed from: g++.dg/dg.exp
#     g++:c-c++-common/missing-header-1.c  -std=gnu++14  expected multiline 
pattern lines 5-7 not found: "\s*#include "this-file-does-not-exist\.h".*\n     
     \^~~~~~~~~~~~~~~~~~~~~~~~~~~~\ncompilation terminated\..*\n"
#   Executed from: gcc.dg/debug/ctf/ctf.exp
#     gcc:gcc.dg/debug/ctf/ctf-skip-types-2.c (test for excess errors)
# 
# 
# 
# o  IMPROVEMENTS TO BE CHECKED:
#   +------------------------------------------+---------+
#   | PASS disappears           [PASS =>     ] |       1 |
#   | New PASS                  [     => PASS] |     463 |
#   | UNSUPPORTED appears       [     =>UNSUP] |       6 |
#   +------------------------------------------+---------+
#   | TOTAL_IMPROVEMENTS_TO_BE_CHECKED         |     470 |
#   +------------------------------------------+---------+
# 
#   - PASS disappears           [PASS =>     ]:
# 
#   Executed from: g++.dg/dg.exp
#     g++:c-c++-common/missing-header-1.c  -std=gnu++14  expected multiline 
pattern lines 5-7 was found: "\s*#include "this-file-does-not-exist\.h".*\n     
     \^~~~~~~~~~~~~~~~~~~~~~~~~~~~\ncompilation terminated\..*\n"
# 
# 
#   - New PASS                  [     => PASS]:
# 
#   Executed from: g++.dg/dg.exp
#     g++:g++.dg/ipa/ipa-sra-4.C  -std=gnu++14 (test for excess errors)
#     g++:g++.dg/ipa/ipa-sra-4.C  -std=gnu++17 (test for excess errors)
#     g++:g++.dg/ipa/ipa-sra-4.C  -std=gnu++2a (test for excess errors)
#   Executed from: gcc.dg/debug/debug.exp
#     gcc:gcc.dg/debug/20000503-1.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/20010207-1.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/20011223-1.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/20020104-2.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/20020220-1.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/20020220-1.c -gctf execution test
#     gcc:gcc.dg/debug/20020224-1.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/20020327-1.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/20030605-1.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/20031231-1.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/20041023-1.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/20041219-1.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/20050907-1.c -gctf (test for excess errors)
#   Executed from: gcc.dg/debug/btf/btf.exp
#     gcc:gcc.dg/debug/btf/btf-1.c (test for excess errors)
#     gcc:gcc.dg/debug/btf/btf-2.c (test for excess errors)
#     gcc:gcc.dg/debug/btf/btf-2.c scan-assembler-times 0.*btf_flags 1
#     gcc:gcc.dg/debug/btf/btf-2.c scan-assembler-times 0x1.*btf_version 1
#     gcc:gcc.dg/debug/btf/btf-2.c scan-assembler-times 0xeb9f.*btf_magic 1
#     gcc:gcc.dg/debug/btf/btf-anonymous-struct-1.c (test for excess errors)
#     gcc:gcc.dg/debug/btf/btf-anonymous-struct-1.c scan-assembler-times [\t 
]0[\t ]+[^\n]*btt_name 1
#     gcc:gcc.dg/debug/btf/btf-anonymous-struct-1.c scan-assembler-times [\t 
]0x4000001[\t ]+[^\n]*btt_info 1
#     gcc:gcc.dg/debug/btf/btf-anonymous-struct-1.c scan-assembler-times [\t 
]0x4000002[\t ]+[^\n]*btt_info 1
#     gcc:gcc.dg/debug/btf/btf-anonymous-union-1.c (test for excess errors)
#     gcc:gcc.dg/debug/btf/btf-anonymous-union-1.c scan-assembler-times [\t 
]0[\t ]+[^\n]*btt_name 1
#     gcc:gcc.dg/debug/btf/btf-anonymous-union-1.c scan-assembler-times [\t 
]0x4000001[\t ]+[^\n]*btt_info 1
#     gcc:gcc.dg/debug/btf/btf-anonymous-union-1.c scan-assembler-times [\t 
]0x5000002[\t ]+[^\n]*btt_info 1
#     gcc:gcc.dg/debug/btf/btf-array-1.c (test for excess errors)
#     gcc:gcc.dg/debug/btf/btf-array-1.c scan-assembler-times 0x3000000[\t 
]+[^\n]*btt_info 5
#     gcc:gcc.dg/debug/btf/btf-array-1.c scan-assembler-times [\t ]0[\t 
]+[^\n]*bta_nelems 1
#     gcc:gcc.dg/debug/btf/btf-array-1.c scan-assembler-times [\t ]0x2[\t 
]+[^\n]*bta_nelems 2
#     gcc:gcc.dg/debug/btf/btf-array-1.c scan-assembler-times [\t ]0x3[\t 
]+[^\n]*bta_nelems 1
#     gcc:gcc.dg/debug/btf/btf-array-1.c scan-assembler-times [\t ]0x5[\t 
]+[^\n]*bta_nelems 1
#     gcc:gcc.dg/debug/btf/btf-bitfields-1.c (test for excess errors)
#     gcc:gcc.dg/debug/btf/btf-bitfields-1.c scan-assembler-times [\t 
]0x13000040[\t ]+[^\n]*btm_offset 1
#     gcc:gcc.dg/debug/btf/btf-bitfields-1.c scan-assembler-times [\t 
]0x700002a[\t ]+[^\n]*btm_offset 1
#     gcc:gcc.dg/debug/btf/btf-bitfields-1.c scan-assembler-times [\t 
]0x84000004[\t ]+[^\n]*btt_info 1
#     gcc:gcc.dg/debug/btf/btf-bitfields-1.c scan-assembler-times [\t 
]0xa000020[\t ]+[^\n]*btm_offset 1
#     gcc:gcc.dg/debug/btf/btf-bitfields-2.c (test for excess errors)
#     gcc:gcc.dg/debug/btf/btf-bitfields-2.c scan-assembler-times [\t 
]0x1f000000[\t ]+[^\n]*btm_offset 1
#     gcc:gcc.dg/debug/btf/btf-bitfields-2.c scan-assembler-times [\t 
]0x20000020[\t ]+[^\n]*btm_offset 1
#     gcc:gcc.dg/debug/btf/btf-bitfields-2.c scan-assembler-times [\t 
]0x84000002[\t ]+[^\n]*btt_info 1
#     gcc:gcc.dg/debug/btf/btf-bitfields-2.c scan-assembler-times btm_name 2
#     gcc:gcc.dg/debug/btf/btf-bitfields-3.c (test for excess errors)
#     gcc:gcc.dg/debug/btf/btf-bitfields-3.c scan-assembler-times [\t ]0x1[\t 
]+[^\n]*btm_type 1
#     gcc:gcc.dg/debug/btf/btf-bitfields-3.c scan-assembler-times [\t ]0x2[\t 
]+[^\n]*btm_type 1
#     gcc:gcc.dg/debug/btf/btf-bitfields-3.c scan-assembler-times [\t 
]0x6000004[\t ]+[^\n]*btt_info 1
#     gcc:gcc.dg/debug/btf/btf-bitfields-3.c scan-assembler-times [\t 
]0x84000002[\t ]+[^\n]*btt_info 1
#     gcc:gcc.dg/debug/btf/btf-bitfields-4.c (test for excess errors)
#     gcc:gcc.dg/debug/btf/btf-bitfields-4.c scan-assembler-times [\t 
]0x4000003[\t ]+[^\n]*btt_info 1
#     gcc:gcc.dg/debug/btf/btf-cvr-quals-1.c (test for excess errors)
#     gcc:gcc.dg/debug/btf/btf-cvr-quals-1.c scan-assembler-times [\t 
]0x2000000[\t ]+[^\n]*btt_info 2
#     gcc:gcc.dg/debug/btf/btf-cvr-quals-1.c scan-assembler-times [\t 
]0x9000000[\t ]+[^\n]*btt_info 1
#     gcc:gcc.dg/debug/btf/btf-cvr-quals-1.c scan-assembler-times [\t 
]0xa000000[\t ]+[^\n]*btt_info 2
#     gcc:gcc.dg/debug/btf/btf-cvr-quals-1.c scan-assembler-times [\t 
]0xb000000[\t ]+[^\n]*btt_info 2
#     gcc:gcc.dg/debug/btf/btf-cvr-quals-1.c scan-assembler-times ascii 
"int.0"[\t ]+[^\n]*btf_string 1
#     gcc:gcc.dg/debug/btf/btf-datasec-1.c (test for excess errors)
#     gcc:gcc.dg/debug/btf/btf-datasec-1.c scan-assembler-times 0[\t 
]+[^\n]*bts_offset 7
#     gcc:gcc.dg/debug/btf/btf-datasec-1.c scan-assembler-times 0xf000001[\t 
]+[^\n]*btt_info 1
#     gcc:gcc.dg/debug/btf/btf-datasec-1.c scan-assembler-times 0xf000003[\t 
]+[^\n]*btt_info 2
#     gcc:gcc.dg/debug/btf/btf-datasec-1.c scan-assembler-times ascii 
".bss.0"[\t ]+[^\n]*btf_aux_string 1
#     gcc:gcc.dg/debug/btf/btf-datasec-1.c scan-assembler-times ascii 
".data.0"[\t ]+[^\n]*btf_aux_string 1
#     gcc:gcc.dg/debug/btf/btf-datasec-1.c scan-assembler-times ascii 
".rodata.0"[\t ]+[^\n]*btf_aux_string 1
#     gcc:gcc.dg/debug/btf/btf-enum-1.c (test for excess errors)
#     gcc:gcc.dg/debug/btf/btf-enum-1.c scan-assembler-times [\t ]0x6000003[\t 
]+[^\n]*btt_info 1
#     gcc:gcc.dg/debug/btf/btf-enum-1.c scan-assembler-times [\t ]0x6000004[\t 
]+[^\n]*btt_info 1
#     gcc:gcc.dg/debug/btf/btf-enum-1.c scan-assembler-times ascii 
"IDUNNO.0"[\t ]+[^\n]*btf_string 1
#     gcc:gcc.dg/debug/btf/btf-enum-1.c scan-assembler-times ascii "NO.0"[\t 
]+[^\n]*btf_string 1
#     gcc:gcc.dg/debug/btf/btf-enum-1.c scan-assembler-times ascii "QAD.0"[\t 
]+[^\n]*btf_string 1
#     gcc:gcc.dg/debug/btf/btf-enum-1.c scan-assembler-times ascii "QED.0"[\t 
]+[^\n]*btf_string 1
#     gcc:gcc.dg/debug/btf/btf-enum-1.c scan-assembler-times ascii "QOD.0"[\t 
]+[^\n]*btf_string 1
#     gcc:gcc.dg/debug/btf/btf-enum-1.c scan-assembler-times ascii "QUD.0"[\t 
]+[^\n]*btf_string 1
#     gcc:gcc.dg/debug/btf/btf-enum-1.c scan-assembler-times ascii "YES.0"[\t 
]+[^\n]*btf_string 1
#     gcc:gcc.dg/debug/btf/btf-enum-1.c scan-assembler-times bte_value 7
#     gcc:gcc.dg/debug/btf/btf-forward-1.c (test for excess errors)
#     gcc:gcc.dg/debug/btf/btf-forward-1.c scan-assembler-times [\t 
]0x7000000[\t ]+[^\n]*btt_info 1
#     gcc:gcc.dg/debug/btf/btf-forward-1.c scan-assembler-times [\t 
]0x87000000[\t ]+[^\n]*btt_info 1
#     gcc:gcc.dg/debug/btf/btf-function-1.c (test for excess errors)
#     gcc:gcc.dg/debug/btf/btf-function-1.c scan-assembler-times [\t 
]0xd000002[\t ]+[^\n]*btt_info 1
#     gcc:gcc.dg/debug/btf/btf-function-1.c scan-assembler-times ascii 
"alpha.0"[\t ]+[^\n]*btf_aux_string 1
#     gcc:gcc.dg/debug/btf/btf-function-1.c scan-assembler-times ascii 
"bravo.0"[\t ]+[^\n]*btf_aux_string 1
#     gcc:gcc.dg/debug/btf/btf-function-1.c scan-assembler-times farg_name 2
#     gcc:gcc.dg/debug/btf/btf-function-1.c scan-assembler-times farg_type 2
#     gcc:gcc.dg/debug/btf/btf-function-2.c (test for excess errors)
#     gcc:gcc.dg/debug/btf/btf-function-2.c scan-assembler-times [\t ]0[\t 
]+[^\n]*farg_name 1
#     gcc:gcc.dg/debug/btf/btf-function-2.c scan-assembler-times [\t ]0[\t 
]+[^\n]*farg_type 1
#     gcc:gcc.dg/debug/btf/btf-function-2.c scan-assembler-times [\t 
]0xd000002[\t ]+[^\n]*btt_info 1
#     gcc:gcc.dg/debug/btf/btf-function-2.c scan-assembler-times farg_name 2
#     gcc:gcc.dg/debug/btf/btf-function-2.c scan-assembler-times farg_type 2
#     gcc:gcc.dg/debug/btf/btf-function-3.c (test for excess errors)
#     gcc:gcc.dg/debug/btf/btf-function-3.c scan-assembler-times [\t ]0[\t 
]+[^\n]*farg_type 1
#     gcc:gcc.dg/debug/btf/btf-function-3.c scan-assembler-times [\t 
]0xd000003[\t ]+[^\n]*btt_info 1
#     gcc:gcc.dg/debug/btf/btf-function-3.c scan-assembler-times farg_name 3
#     gcc:gcc.dg/debug/btf/btf-function-3.c scan-assembler-times farg_type 3
#     gcc:gcc.dg/debug/btf/btf-int-1.c (test for excess errors)
#     gcc:gcc.dg/debug/btf/btf-int-1.c scan-assembler-times [\t ]0x10000..[\t 
]+[^\n]*bti_encoding 3
#     gcc:gcc.dg/debug/btf/btf-int-1.c scan-assembler-times [\t ]0x1000000[\t 
]+[^\n]*btt_info 8
#     gcc:gcc.dg/debug/btf/btf-int-1.c scan-assembler-times [\t ]0x20000..[\t 
]+[^\n]*bti_encoding 1
#     gcc:gcc.dg/debug/btf/btf-int-1.c scan-assembler-times [\t ]0x30000..[\t 
]+[^\n]*bti_encoding 1
#     gcc:gcc.dg/debug/btf/btf-int-1.c scan-assembler-times ascii "int.0"[\t 
]+[^\n]*btf_string 1
#     gcc:gcc.dg/debug/btf/btf-int-1.c scan-assembler-times ascii "long 
int.0"[\t ]+[^\n]*btf_string 1
#     gcc:gcc.dg/debug/btf/btf-int-1.c scan-assembler-times ascii "long 
unsigned int.0"[\t ]+[^\n]*btf_string 1
#     gcc:gcc.dg/debug/btf/btf-int-1.c scan-assembler-times ascii "short 
int.0"[\t ]+[^\n]*btf_string 1
#     gcc:gcc.dg/debug/btf/btf-int-1.c scan-assembler-times ascii "short 
unsigned int.0"[\t ]+[^\n]*btf_string 1
#     gcc:gcc.dg/debug/btf/btf-int-1.c scan-assembler-times ascii "signed 
char.0"[\t ]+[^\n]*btf_string 1
#     gcc:gcc.dg/debug/btf/btf-int-1.c scan-assembler-times ascii "unsigned 
char.0"[\t ]+[^\n]*btf_string 1
#     gcc:gcc.dg/debug/btf/btf-int-1.c scan-assembler-times ascii "unsigned 
int.0"[\t ]+[^\n]*btf_string 1
#     gcc:gcc.dg/debug/btf/btf-pointers-1.c (test for excess errors)
#     gcc:gcc.dg/debug/btf/btf-pointers-1.c scan-assembler-times [\t 
]0x2000000[\t ]+[^\n]*btt_info 2
#     gcc:gcc.dg/debug/btf/btf-pointers-1.c scan-assembler-times ascii 
"int.0"[\t ]+[^\n]*btf_string 1
#     gcc:gcc.dg/debug/btf/btf-pointers-1.c scan-assembler-times ascii 
"st.0"[\t ]+[^\n]*btf_string 1
#     gcc:gcc.dg/debug/btf/btf-pointers-2.c (test for excess errors)
#     gcc:gcc.dg/debug/btf/btf-pointers-2.c scan-assembler-times [\t 
]0x1000000[\t ]+[^\n]*btt_info 0
#     gcc:gcc.dg/debug/btf/btf-pointers-2.c scan-assembler-times [\t 
]0x2000000[\t ]+[^\n]*btt_info 1
#     gcc:gcc.dg/debug/btf/btf-struct-1.c (test for excess errors)
#     gcc:gcc.dg/debug/btf/btf-struct-1.c scan-assembler-times [\t 
]0x4000002[\t ]+[^\n]*btt_info 1
#     gcc:gcc.dg/debug/btf/btf-struct-1.c scan-assembler-times [\t 
]0x4000003[\t ]+[^\n]*btt_info 1
#     gcc:gcc.dg/debug/btf/btf-struct-1.c scan-assembler-times btm_name 5
#     gcc:gcc.dg/debug/btf/btf-struct-2.c (test for excess errors)
#     gcc:gcc.dg/debug/btf/btf-struct-2.c scan-assembler-times [\t 
]0x4000002[\t ]+[^\n]*btt_info 1
#     gcc:gcc.dg/debug/btf/btf-typedef-1.c (test for excess errors)
#     gcc:gcc.dg/debug/btf/btf-typedef-1.c scan-assembler-times [\t ]0x2[\t 
]+[^\n]*btv_type 1
#     gcc:gcc.dg/debug/btf/btf-typedef-1.c scan-assembler-times [\t ]0x3[\t 
]+[^\n]*btv_type 1
#     gcc:gcc.dg/debug/btf/btf-typedef-1.c scan-assembler-times [\t ]0x4[\t 
]+[^\n]*btv_type 1
#     gcc:gcc.dg/debug/btf/btf-typedef-1.c scan-assembler-times [\t ]0x6[\t 
]+[^\n]*btv_type 1
#     gcc:gcc.dg/debug/btf/btf-typedef-1.c scan-assembler-times [\t 
]0x8000000[\t ]+[^\n]*btt_info 7
#     gcc:gcc.dg/debug/btf/btf-typedef-1.c scan-assembler-times [\t ]0x8[\t 
]+[^\n]*btv_type 1
#     gcc:gcc.dg/debug/btf/btf-typedef-1.c scan-assembler-times [\t ]0xb[\t 
]+[^\n]*btv_type 1
#     gcc:gcc.dg/debug/btf/btf-typedef-1.c scan-assembler-times [\t ]0xf[\t 
]+[^\n]*btv_type 1
#     gcc:gcc.dg/debug/btf/btf-typedef-1.c scan-assembler-times ascii 
"CBAR.0"[\t ]+[^\n]*btf_string 1
#     gcc:gcc.dg/debug/btf/btf-typedef-1.c scan-assembler-times ascii 
"CBARP.0"[\t ]+[^\n]*btf_string 1
#     gcc:gcc.dg/debug/btf/btf-typedef-1.c scan-assembler-times ascii 
"arena_t.0"[\t ]+[^\n]*btf_string 1
#     gcc:gcc.dg/debug/btf/btf-typedef-1.c scan-assembler-times ascii 
"bar_int.0"[\t ]+[^\n]*btf_string 1
#     gcc:gcc.dg/debug/btf/btf-typedef-1.c scan-assembler-times ascii 
"foo_int.0"[\t ]+[^\n]*btf_string 1
#     gcc:gcc.dg/debug/btf/btf-typedef-1.c scan-assembler-times ascii 
"my_int.0"[\t ]+[^\n]*btf_string 1
#     gcc:gcc.dg/debug/btf/btf-typedef-1.c scan-assembler-times ascii 
"node_t.0"[\t ]+[^\n]*btf_string 1
#     gcc:gcc.dg/debug/btf/btf-union-1.c (test for excess errors)
#     gcc:gcc.dg/debug/btf/btf-union-1.c scan-assembler-times [\t ]0x5000004[\t 
]+[^\n]*btt_info 1
#     gcc:gcc.dg/debug/btf/btf-union-1.c scan-assembler-times btm_name 4
#     gcc:gcc.dg/debug/btf/btf-variables-1.c (test for excess errors)
#     gcc:gcc.dg/debug/btf/btf-variables-1.c scan-assembler-times [\t 
]0xe000000[\t ]+[^\n]*btv_info 6
#     gcc:gcc.dg/debug/btf/btf-variables-2.c (test for excess errors)
#     gcc:gcc.dg/debug/btf/btf-variables-2.c scan-assembler-times [\t 
]0xe000000[\t ]+[^\n]*btv_info 3
#     gcc:gcc.dg/debug/btf/btf-variables-2.c scan-assembler-times ascii 
"baz.0"[\t ]+[^\n]*btf_string 1
#     gcc:gcc.dg/debug/btf/btf-variables-2.c scan-assembler-times ascii 
"foo.0"[\t ]+[^\n]*btf_string 1
#     gcc:gcc.dg/debug/btf/btf-variables-2.c scan-assembler-times ascii 
"myst.0"[\t ]+[^\n]*btf_string 1
#     gcc:gcc.dg/debug/btf/btf-variables-3.c (test for excess errors)
#     gcc:gcc.dg/debug/btf/btf-variables-3.c scan-assembler-times [\t ]0[\t 
]+[^\n]*btv_linkage 3
#     gcc:gcc.dg/debug/btf/btf-variables-3.c scan-assembler-times [\t ]0x1[\t 
]+[^\n]*btv_linkage 3
#     gcc:gcc.dg/debug/btf/btf-variables-3.c scan-assembler-times [\t 
]0xe000000[\t ]+[^\n]*btv_info 6
#   Executed from: gcc.dg/debug/debug.exp
#     gcc:gcc.dg/debug/const-1.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/const-2.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/const-3.c -gctf  scan-assembler-not dontgenerate
#     gcc:gcc.dg/debug/const-3.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/crash1.c -gctf (test for excess errors)
#   Executed from: gcc.dg/debug/ctf/ctf.exp
#     gcc:gcc.dg/debug/ctf/ctf-1.c (test for excess errors)
#     gcc:gcc.dg/debug/ctf/ctf-2.c (test for excess errors)
#     gcc:gcc.dg/debug/ctf/ctf-2.c scan-assembler-times 0.*CTF preamble flags 0
#     gcc:gcc.dg/debug/ctf/ctf-2.c scan-assembler-times 0x4.*CTF preamble 
version 0
#     gcc:gcc.dg/debug/ctf/ctf-2.c scan-assembler-times 0xdff2.*CTF preamble 
magic number 0
#     gcc:gcc.dg/debug/ctf/ctf-anonymous-struct-1.c (test for excess errors)
#     gcc:gcc.dg/debug/ctf/ctf-anonymous-struct-1.c scan-assembler-times 
0x1a000001[\t ]+[^\n]*ctt_info 1
#     gcc:gcc.dg/debug/ctf/ctf-anonymous-struct-1.c scan-assembler-times 
0x1a000002[\t ]+[^\n]*ctt_info 1
#     gcc:gcc.dg/debug/ctf/ctf-anonymous-struct-1.c scan-assembler-times [\t 
]0[\t ]+[^\n]*ctt_name 1
#     gcc:gcc.dg/debug/ctf/ctf-anonymous-union-1.c (test for excess errors)
#     gcc:gcc.dg/debug/ctf/ctf-anonymous-union-1.c scan-assembler-times 
0x1a000001[\t ]+[^\n]*ctt_info 1
#     gcc:gcc.dg/debug/ctf/ctf-anonymous-union-1.c scan-assembler-times 
0x1e000002[\t ]+[^\n]*ctt_info 1
#     gcc:gcc.dg/debug/ctf/ctf-anonymous-union-1.c scan-assembler-times [\t 
]0[\t ]+[^\n]*ctt_name 1
#     gcc:gcc.dg/debug/ctf/ctf-array-1.c (test for excess errors)
#     gcc:gcc.dg/debug/ctf/ctf-array-1.c scan-assembler-times 0x12000000[\t 
]+[^\n]*ctt_info 5
#     gcc:gcc.dg/debug/ctf/ctf-array-1.c scan-assembler-times [\t ]0[\t 
]+[^\n]*cta_nelems 1
#     gcc:gcc.dg/debug/ctf/ctf-array-1.c scan-assembler-times [\t ]0x2[\t 
]+[^\n]*cta_nelems 2
#     gcc:gcc.dg/debug/ctf/ctf-array-1.c scan-assembler-times [\t ]0x3[\t 
]+[^\n]*cta_nelems 1
#     gcc:gcc.dg/debug/ctf/ctf-array-1.c scan-assembler-times [\t ]0x5[\t 
]+[^\n]*cta_nelems 1
#     gcc:gcc.dg/debug/ctf/ctf-array-2.c (test for excess errors)
#     gcc:gcc.dg/debug/ctf/ctf-array-2.c scan-assembler-times 0x12000000[\t 
]+[^\n]*ctt_info 5
#     gcc:gcc.dg/debug/ctf/ctf-array-2.c scan-assembler-times [\t ]0[\t 
]+[^\n]*cta_nelems 3
#     gcc:gcc.dg/debug/ctf/ctf-array-2.c scan-assembler-times [\t ]0x5[\t 
]+[^\n]*cta_nelems 1
#     gcc:gcc.dg/debug/ctf/ctf-array-3.c (test for excess errors)
#     gcc:gcc.dg/debug/ctf/ctf-array-4.c (test for excess errors)
#     gcc:gcc.dg/debug/ctf/ctf-array-4.c scan-assembler-times 0x12000000[\t 
]+[^\n]*ctt_info 1
#     gcc:gcc.dg/debug/ctf/ctf-array-4.c scan-assembler-times [\t ]0x1[\t 
]+[^\n]*cta_nelems 1
#     gcc:gcc.dg/debug/ctf/ctf-attr-mode-1.c (test for excess errors)
#     gcc:gcc.dg/debug/ctf/ctf-attr-mode-1.c scan-assembler-times [\t 
]0x22000003[\t ]+[^\n]*ctt_info 1
#     gcc:gcc.dg/debug/ctf/ctf-attr-mode-1.c scan-assembler-times [\t 
]0x2a000000[\t ]+[^\n]*ctt_info 1
#     gcc:gcc.dg/debug/ctf/ctf-attr-mode-1.c scan-assembler-times [\t ]0x3[\t 
]+[^\n]*ctv_typeidx 1
#     gcc:gcc.dg/debug/ctf/ctf-attr-mode-1.c scan-assembler-times ascii 
"B1.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-attr-mode-1.c scan-assembler-times ascii 
"B2.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-attr-mode-1.c scan-assembler-times ascii 
"B3.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-attr-mode-1.c scan-assembler-times cte_value 3
#     gcc:gcc.dg/debug/ctf/ctf-attr-used-1.c (test for excess errors)
#     gcc:gcc.dg/debug/ctf/ctf-attr-used-1.c scan-assembler-times ascii 
"keep_this.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-attr-used-1.c scan-assembler-times ascii 
"lose_this.0"[\t ]+[^\n]*ctf_string 0
#     gcc:gcc.dg/debug/ctf/ctf-bitfields-1.c (test for excess errors)
#     gcc:gcc.dg/debug/ctf/ctf-bitfields-1.c scan-assembler-times [\t ]0[\t 
]+[^\n]*ctt_name 2
#     gcc:gcc.dg/debug/ctf/ctf-bitfields-1.c scan-assembler-times [\t ]0x2[\t 
]+[^\n]*cts_bits 1
#     gcc:gcc.dg/debug/ctf/ctf-bitfields-1.c scan-assembler-times [\t ]0x3[\t 
]+[^\n]*cts_bits 1
#     gcc:gcc.dg/debug/ctf/ctf-bitfields-2.c (test for excess errors)
#     gcc:gcc.dg/debug/ctf/ctf-bitfields-2.c scan-assembler-times [\t ]0x10[\t 
]+[^\n]*cts_bits 2
#     gcc:gcc.dg/debug/ctf/ctf-bitfields-2.c scan-assembler-times [\t ]0x21[\t 
]+[^\n]*cts_bits 2
#     gcc:gcc.dg/debug/ctf/ctf-bitfields-2.c scan-assembler-times [\t ]0x2[\t 
]+[^\n]*cts_type 3
#     gcc:gcc.dg/debug/ctf/ctf-bitfields-2.c scan-assembler-times [\t ]0x6[\t 
]+[^\n]*cts_type 3
#     gcc:gcc.dg/debug/ctf/ctf-bitfields-2.c scan-assembler-times [\t ]0xf[\t 
]+[^\n]*cts_bits 2
#     gcc:gcc.dg/debug/ctf/ctf-bitfields-2.c scan-assembler-times ascii "long 
long int.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-bitfields-2.c scan-assembler-times ascii "long 
long unsigned int.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-bitfields-3.c (test for excess errors)
#     gcc:gcc.dg/debug/ctf/ctf-bitfields-3.c scan-assembler-times [\t ]0x1[\t 
]+[^\n]*cts_bits 2
#     gcc:gcc.dg/debug/ctf/ctf-bitfields-3.c scan-assembler-times [\t ]0x2[\t 
]+[^\n]*cts_type 2
#     gcc:gcc.dg/debug/ctf/ctf-bitfields-3.c scan-assembler-times ascii 
"_Bool.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-bitfields-4.c (test for excess errors)
#     gcc:gcc.dg/debug/ctf/ctf-bitfields-4.c scan-assembler-times [\t ]0x2[\t 
]+[^\n]*cts_type 2
#     gcc:gcc.dg/debug/ctf/ctf-bitfields-4.c scan-assembler-times [\t ]0x5[\t 
]+[^\n]*cts_bits 1
#     gcc:gcc.dg/debug/ctf/ctf-bitfields-4.c scan-assembler-times [\t ]0xa[\t 
]+[^\n]*cts_bits 1
#     gcc:gcc.dg/debug/ctf/ctf-bitfields-4.c scan-assembler-times ctm_name 2
#     gcc:gcc.dg/debug/ctf/ctf-complex-1.c (test for excess errors)
#     gcc:gcc.dg/debug/ctf/ctf-complex-1.c scan-assembler-times ascii "complex 
double.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-complex-1.c scan-assembler-times ascii "complex 
float.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-complex-1.c scan-assembler-times ascii "complex 
long double.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-cvr-quals-1.c (test for excess errors)
#     gcc:gcc.dg/debug/ctf/ctf-cvr-quals-1.c scan-assembler-times [\t ]0[\t 
]+[^\n]*ctt_name 7
#     gcc:gcc.dg/debug/ctf/ctf-cvr-quals-1.c scan-assembler-times [\t 
]0x2e000000[\t ]+[^\n]*ctt_info 1
#     gcc:gcc.dg/debug/ctf/ctf-cvr-quals-1.c scan-assembler-times [\t 
]0x32000000[\t ]+[^\n]*ctt_info 2
#     gcc:gcc.dg/debug/ctf/ctf-cvr-quals-1.c scan-assembler-times [\t 
]0x36000000[\t ]+[^\n]*ctt_info 2
#     gcc:gcc.dg/debug/ctf/ctf-cvr-quals-1.c scan-assembler-times [\t 
]0xe000000[\t ]+[^\n]*ctt_info 2
#     gcc:gcc.dg/debug/ctf/ctf-cvr-quals-1.c scan-assembler-times ascii 
"int.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-cvr-quals-2.c (test for excess errors)
#     gcc:gcc.dg/debug/ctf/ctf-cvr-quals-2.c scan-assembler-times [\t 
]0x32000000[\t ]+[^\n]*ctt_info 2
#     gcc:gcc.dg/debug/ctf/ctf-cvr-quals-2.c scan-assembler-times ascii 
"int.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-cvr-quals-3.c (test for excess errors)
#     gcc:gcc.dg/debug/ctf/ctf-cvr-quals-3.c scan-assembler-times [\t 
]0x12000000[\t ]+[^\n]*ctt_info 2
#     gcc:gcc.dg/debug/ctf/ctf-cvr-quals-3.c scan-assembler-times [\t 
]0x2e000000[\t ]+[^\n]*ctt_info 5
#     gcc:gcc.dg/debug/ctf/ctf-cvr-quals-3.c scan-assembler-times [\t 
]0x32000000[\t ]+[^\n]*ctt_info 3
#     gcc:gcc.dg/debug/ctf/ctf-cvr-quals-3.c scan-assembler-times ascii 
"unsigned char.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-cvr-quals-4.c (test for excess errors)
#     gcc:gcc.dg/debug/ctf/ctf-cvr-quals-4.c scan-assembler-times [\t ]0[\t 
]+[^\n]*ctt_name 2
#     gcc:gcc.dg/debug/ctf/ctf-cvr-quals-4.c scan-assembler-times [\t 
]0x32000000[\t ]+[^\n]*ctt_info 1
#     gcc:gcc.dg/debug/ctf/ctf-cvr-quals-4.c scan-assembler-times [\t 
]0xe000000[\t ]+[^\n]*ctt_info 1
#     gcc:gcc.dg/debug/ctf/ctf-debug-1.c (test for excess errors)
#     gcc:gcc.dg/debug/ctf/ctf-debug-1.c scan-assembler 0xdff2.*CTF preamble 
magic number
#     gcc:gcc.dg/debug/ctf/ctf-debug-2.c (test for excess errors)
#     gcc:gcc.dg/debug/ctf/ctf-debug-2.c scan-assembler 0xdff2.*CTF preamble 
magic number
#     gcc:gcc.dg/debug/ctf/ctf-enum-1.c (test for excess errors)
#     gcc:gcc.dg/debug/ctf/ctf-enum-1.c scan-assembler-times ascii "BLUE.0"[\t 
]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-enum-1.c scan-assembler-times ascii "GREEN.0"[\t 
]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-enum-1.c scan-assembler-times ascii "RED.0"[\t 
]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-enum-1.c scan-assembler-times ascii 
"YELLOW.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-enum-1.c scan-assembler-times cte_value 4
#     gcc:gcc.dg/debug/ctf/ctf-enum-2.c (test for excess errors)
#     gcc:gcc.dg/debug/ctf/ctf-enum-2.c scan-assembler-times ascii 
"GFS_MONOTONIC.0"[\t ]+[^\n]*ctf_string 0
#     gcc:gcc.dg/debug/ctf/ctf-enum-2.c scan-assembler-times ascii 
"GFS_RUNTIME.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-enum-2.c scan-assembler-times ascii 
"GFS_STATIC.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-enum-2.c scan-assembler-times cte_value 2
#     gcc:gcc.dg/debug/ctf/ctf-file-scope-1.c (test for excess errors)
#     gcc:gcc.dg/debug/ctf/ctf-file-scope-1.c scan-assembler-times ascii 
"SFOO.0"[\t ]+[^\n]*ctf_string 0
#     gcc:gcc.dg/debug/ctf/ctf-file-scope-1.c scan-assembler-times ascii 
"foo.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-file-scope-1.c scan-assembler-times ascii 
"gfoo.0"[\t ]+[^\n]*ctf_string 0
#     gcc:gcc.dg/debug/ctf/ctf-float-1.c (test for excess errors)
#     gcc:gcc.dg/debug/ctf/ctf-float-1.c scan-assembler-times ascii 
"double.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-float-1.c scan-assembler-times ascii 
"float.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-float-1.c scan-assembler-times ascii "long 
double.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-forward-1.c (test for excess errors)
#     gcc:gcc.dg/debug/ctf/ctf-forward-1.c scan-assembler-times [\t 
]0x26000000[\t ]+[^\n]*ctt_info 2
#     gcc:gcc.dg/debug/ctf/ctf-forward-1.c scan-assembler-times [\t ]0x6[\t 
]+[^\n]*ctt_size or ctt_type 2
#     gcc:gcc.dg/debug/ctf/ctf-forward-1.c scan-assembler-times [\t ]0x7[\t 
]+[^\n]*ctt_size or ctt_type 2
#     gcc:gcc.dg/debug/ctf/ctf-forward-2.c (test for excess errors)
#     gcc:gcc.dg/debug/ctf/ctf-forward-2.c scan-assembler-times [\t 
]0x26000000[\t ]+[^\n]*ctt_info 1
#     gcc:gcc.dg/debug/ctf/ctf-forward-2.c scan-assembler-times [\t ]0x8[\t 
]+[^\n]*ctt_size or ctt_type 1
#     gcc:gcc.dg/debug/ctf/ctf-forward-2.c scan-assembler-times ascii 
"vibgyor.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-func-index-1.c (test for excess errors)
#     gcc:gcc.dg/debug/ctf/ctf-func-index-1.c scan-assembler-times ascii 
"bar.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-func-index-1.c scan-assembler-times ascii 
"foo.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-func-index-1.c scan-assembler-times 
funcinfo_func_type 2
#     gcc:gcc.dg/debug/ctf/ctf-func-index-1.c scan-assembler-times 
funcinfo_name 2
#     gcc:gcc.dg/debug/ctf/ctf-function-pointers-1.c (test for excess errors)
#     gcc:gcc.dg/debug/ctf/ctf-function-pointers-1.c scan-assembler-times [\t 
]0x16000001[\t ]+[^\n]*ctt_info 1
#     gcc:gcc.dg/debug/ctf/ctf-function-pointers-1.c scan-assembler-times [\t 
]0x16000002[\t ]+[^\n]*ctt_info 1
#     gcc:gcc.dg/debug/ctf/ctf-function-pointers-1.c scan-assembler-times [\t 
]0x16000003[\t ]+[^\n]*ctt_info 1
#     gcc:gcc.dg/debug/ctf/ctf-function-pointers-1.c scan-assembler-times ascii 
"__foo_fn.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-function-pointers-1.c scan-assembler-times ascii 
"destroy.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-function-pointers-1.c scan-assembler-times ascii 
"func.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-function-pointers-2.c (test for excess errors)
#     gcc:gcc.dg/debug/ctf/ctf-function-pointers-2.c scan-assembler-times [\t 
]0x16000001[\t ]+[^\n]*ctt_info 1
#     gcc:gcc.dg/debug/ctf/ctf-function-pointers-2.c scan-assembler-times ascii 
"func.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-function-pointers-2.c scan-assembler-times ascii 
"rcu_callback_t.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-function-pointers-3.c (test for excess errors)
#     gcc:gcc.dg/debug/ctf/ctf-function-pointers-3.c scan-assembler-times [\t 
]0x16000001[\t ]+[^\n]*ctt_info 1
#     gcc:gcc.dg/debug/ctf/ctf-function-pointers-3.c scan-assembler-times ascii 
"fn.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-function-pointers-3.c scan-assembler-times ascii 
"foo_init_callback.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-function-pointers-4.c (test for excess errors)
#     gcc:gcc.dg/debug/ctf/ctf-function-pointers-4.c scan-assembler-times [\t 
]0x16000001[\t ]+[^\n]*ctt_info 1
#     gcc:gcc.dg/debug/ctf/ctf-function-pointers-4.c scan-assembler-times ascii 
"var_assign_func_t.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-functions-1.c (test for excess errors)
#     gcc:gcc.dg/debug/ctf/ctf-functions-1.c scan-assembler-times [\t ]0[\t 
]+[^\n]*dtu_argv 1
#     gcc:gcc.dg/debug/ctf/ctf-functions-1.c scan-assembler-times [\t 
]0x16000002[\t ]+[^\n]*ctt_info 1
#     gcc:gcc.dg/debug/ctf/ctf-functions-1.c scan-assembler-times dtu_argv 2
#     gcc:gcc.dg/debug/ctf/ctf-int-1.c (test for excess errors)
#     gcc:gcc.dg/debug/ctf/ctf-int-1.c scan-assembler-times ascii "int.0"[\t 
]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-int-1.c scan-assembler-times ascii "long 
int.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-int-1.c scan-assembler-times ascii "short 
int.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-objt-index-1.c (test for excess errors)
#     gcc:gcc.dg/debug/ctf/ctf-objt-index-1.c scan-assembler-times ascii 
"a.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-objt-index-1.c scan-assembler-times ascii 
"a1.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-objt-index-1.c scan-assembler-times ascii 
"b.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-objt-index-1.c scan-assembler-times ascii 
"d_instance.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-objt-index-1.c scan-assembler-times 
objtinfo_name 4
#     gcc:gcc.dg/debug/ctf/ctf-objt-index-1.c scan-assembler-times 
objtinfo_var_type 4
#     gcc:gcc.dg/debug/ctf/ctf-pointers-1.c (test for excess errors)
#     gcc:gcc.dg/debug/ctf/ctf-pointers-1.c scan-assembler-times [\t 
]0xe000000[\t ]+[^\n]*ctt_info 2
#     gcc:gcc.dg/debug/ctf/ctf-pointers-1.c scan-assembler-times ascii 
"foo_struct.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-pointers-1.c scan-assembler-times ascii 
"int.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-pointers-2.c (test for excess errors)
#     gcc:gcc.dg/debug/ctf/ctf-pointers-2.c scan-assembler-times [\t 
]0xe000000[\t ]+[^\n]*ctt_info 1
#     gcc:gcc.dg/debug/ctf/ctf-preamble-1.c (test for excess errors)
#     gcc:gcc.dg/debug/ctf/ctf-preamble-1.c scan-assembler 0.*CTF preamble flags
#     gcc:gcc.dg/debug/ctf/ctf-preamble-1.c scan-assembler 0x4.*CTF preamble 
version
#     gcc:gcc.dg/debug/ctf/ctf-preamble-1.c scan-assembler 0xdff2.*CTF preamble 
magic number
#     gcc:gcc.dg/debug/ctf/ctf-skip-types-1.c (test for excess errors)
#     gcc:gcc.dg/debug/ctf/ctf-skip-types-1.c scan-assembler-times [\t 
]0x2000000[\t ]+[^\n]*ctt_info 1
#     gcc:gcc.dg/debug/ctf/ctf-skip-types-1.c scan-assembler-times ascii 
"unknown.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-skip-types-3.c (test for excess errors)
#     gcc:gcc.dg/debug/ctf/ctf-skip-types-8.c (test for excess errors)
#     gcc:gcc.dg/debug/ctf/ctf-skip-types-8.c scan-assembler-times [\t 
]0x1a000003[\t ]+[^\n]*ctt_info 1
#     gcc:gcc.dg/debug/ctf/ctf-skip-types-8.c scan-assembler-times [\t 
]0x2a000000[\t ]+[^\n]*ctt_info 1
#     gcc:gcc.dg/debug/ctf/ctf-skip-types-8.c scan-assembler-times [\t 
]0x32000000[\t ]+[^\n]*ctt_info 1
#     gcc:gcc.dg/debug/ctf/ctf-skip-types-8.c scan-assembler-times ascii 
"c1.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-skip-types-8.c scan-assembler-times ascii 
"comp_type.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-skip-types-8.c scan-assembler-times ascii 
"comp_type_t.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-skip-types-8.c scan-assembler-times ctm_name 3
#     gcc:gcc.dg/debug/ctf/ctf-str-table-1.c (test for excess errors)
#     gcc:gcc.dg/debug/ctf/ctf-str-table-1.c scan-assembler-times ascii ".0"[\t 
]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-struct-1.c (test for excess errors)
#     gcc:gcc.dg/debug/ctf/ctf-struct-1.c scan-assembler-times [\t 
]0x1a000002[\t ]+[^\n]*ctt_info 1
#     gcc:gcc.dg/debug/ctf/ctf-struct-1.c scan-assembler-times [\t 
]0x1a000004[\t ]+[^\n]*ctt_info 1
#     gcc:gcc.dg/debug/ctf/ctf-struct-1.c scan-assembler-times ctm_name 6
#     gcc:gcc.dg/debug/ctf/ctf-struct-2.c (test for excess errors)
#     gcc:gcc.dg/debug/ctf/ctf-struct-2.c scan-assembler-times ascii 
"dmx_dtdef.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-struct-2.c scan-assembler-times ascii 
"dmx_dtdef_t.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-struct-2.c scan-assembler-times ascii 
"dtd_name.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-struct-2.c scan-assembler-times ascii 
"dtd_type.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-struct-array-1.c (test for excess errors)
#     gcc:gcc.dg/debug/ctf/ctf-struct-array-1.c scan-assembler-times [\t 
]0x32000000[\t ]+[^\n]*ctt_info 3
#     gcc:gcc.dg/debug/ctf/ctf-struct-array-1.c scan-assembler-times ascii 
"cmodel.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-struct-array-1.c scan-assembler-times ascii 
"cmodel_t.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-struct-array-1.c scan-assembler-times ascii 
"cname.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-struct-array-1.c scan-assembler-times ascii 
"cpointer.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-struct-array-2.c (test for excess errors)
#     gcc:gcc.dg/debug/ctf/ctf-struct-array-2.c scan-assembler-times 
0x12000000[\t ]+[^\n]*ctt_info 1
#     gcc:gcc.dg/debug/ctf/ctf-struct-array-2.c scan-assembler-times [\t ]0[\t 
]+[^\n]*ctm_offset 1
#     gcc:gcc.dg/debug/ctf/ctf-struct-array-2.c scan-assembler-times [\t 
]0x4[\t ]+[^\n]*cta_nelems 1
#     gcc:gcc.dg/debug/ctf/ctf-struct-array-2.c scan-assembler-times [\t 
]0x4[\t ]+[^\n]*ctm_offset 1
#     gcc:gcc.dg/debug/ctf/ctf-struct-pointer-1.c (test for excess errors)
#     gcc:gcc.dg/debug/ctf/ctf-struct-pointer-1.c scan-assembler-times [\t 
]"bar.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-struct-pointer-2.c (test for excess errors)
#     gcc:gcc.dg/debug/ctf/ctf-struct-pointer-2.c scan-assembler-times [\t 
]"bar.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-typedef-1.c (test for excess errors)
#     gcc:gcc.dg/debug/ctf/ctf-typedef-1.c scan-assembler-times 0x2a000000[\t 
]+[^\n]*ctt_info 7
#     gcc:gcc.dg/debug/ctf/ctf-typedef-1.c scan-assembler-times [\t ]0x2[\t 
]+[^\n]*ctv_typeidx 1
#     gcc:gcc.dg/debug/ctf/ctf-typedef-1.c scan-assembler-times [\t ]0x4[\t 
]+[^\n]*ctv_typeidx 1
#     gcc:gcc.dg/debug/ctf/ctf-typedef-1.c scan-assembler-times [\t ]0x5[\t 
]+[^\n]*ctv_typeidx 1
#     gcc:gcc.dg/debug/ctf/ctf-typedef-1.c scan-assembler-times [\t ]0x9[\t 
]+[^\n]*ctv_typeidx 1
#     gcc:gcc.dg/debug/ctf/ctf-typedef-1.c scan-assembler-times [\t ]0xa[\t 
]+[^\n]*ctv_typeidx 1
#     gcc:gcc.dg/debug/ctf/ctf-typedef-1.c scan-assembler-times [\t ]0xc[\t 
]+[^\n]*ctv_typeidx 1
#     gcc:gcc.dg/debug/ctf/ctf-typedef-1.c scan-assembler-times [\t ]0xf[\t 
]+[^\n]*ctv_typeidx 1
#     gcc:gcc.dg/debug/ctf/ctf-typedef-1.c scan-assembler-times ascii 
"CINT.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-typedef-1.c scan-assembler-times ascii 
"CINTP.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-typedef-1.c scan-assembler-times ascii 
"bar_int.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-typedef-1.c scan-assembler-times ascii 
"foo_int.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-typedef-1.c scan-assembler-times ascii 
"my_array.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-typedef-1.c scan-assembler-times ascii 
"my_int.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-typedef-1.c scan-assembler-times ascii 
"my_node_t.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-typedef-2.c (test for excess errors)
#     gcc:gcc.dg/debug/ctf/ctf-typedef-2.c scan-assembler-times 0x2a000000[\t 
]+[^\n]*ctt_info 1
#     gcc:gcc.dg/debug/ctf/ctf-typedef-2.c scan-assembler-times ascii 
"foo_void_type.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-typedef-2.c scan-assembler-times ascii 
"void.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-typedef-3.c (test for excess errors)
#     gcc:gcc.dg/debug/ctf/ctf-typedef-3.c scan-assembler-times 0x2a000000[\t 
]+[^\n]*ctt_info 1
#     gcc:gcc.dg/debug/ctf/ctf-typedef-3.c scan-assembler-times ascii 
"foo.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-typedef-3.c scan-assembler-times ascii 
"foo_type.0"[\t ]+[^\n]*ctf_string 1
#     gcc:gcc.dg/debug/ctf/ctf-typedef-struct-1.c (test for excess errors)
#     gcc:gcc.dg/debug/ctf/ctf-typedef-struct-2.c (test for excess errors)
#     gcc:gcc.dg/debug/ctf/ctf-typedef-struct-3.c (test for excess errors)
#     gcc:gcc.dg/debug/ctf/ctf-typedef-struct-3.c scan-assembler-times [\t 
]0x2a000000[\t ]+[^\n]*ctt_info 1
#     gcc:gcc.dg/debug/ctf/ctf-typedef-struct-3.c scan-assembler-times [\t 
]0x32000000[\t ]+[^\n]*ctt_info 1
#     gcc:gcc.dg/debug/ctf/ctf-typedef-struct-3.c scan-assembler-times [\t 
]0x4[\t ]+[^\n]*ctv_typeidx 1
#     gcc:gcc.dg/debug/ctf/ctf-union-1.c (test for excess errors)
#     gcc:gcc.dg/debug/ctf/ctf-union-1.c scan-assembler-times [\t 
]0x1e000004[\t ]+[^\n]*ctt_info 1
#     gcc:gcc.dg/debug/ctf/ctf-union-1.c scan-assembler-times ctm_name 4
#     gcc:gcc.dg/debug/ctf/ctf-variables-1.c (test for excess errors)
#     gcc:gcc.dg/debug/ctf/ctf-variables-1.c scan-assembler-times ctv_name 7
#     gcc:gcc.dg/debug/ctf/ctf-variables-2.c (test for excess errors)
#     gcc:gcc.dg/debug/ctf/ctf-variables-2.c scan-assembler-times ascii 
"bstatic.0"[\t ]+[^\n]*ctf_string 0
#     gcc:gcc.dg/debug/ctf/ctf-variables-2.c scan-assembler-times ctv_name 0
#   Executed from: gcc.dg/debug/debug.exp
#     gcc:gcc.dg/debug/debug-3.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/debug-4.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/debug-5.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/debug-7.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/dwarf2-1.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/dwarf2-2.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/enum-1.c -gctf  scan-assembler JTI_MAX
#     gcc:gcc.dg/debug/enum-1.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/pr16676.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/pr26881.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/pr29558.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/pr29609-1.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/pr29609-1.c -gctf execution test
#     gcc:gcc.dg/debug/pr29609-2.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/pr29609-2.c -gctf execution test
#     gcc:gcc.dg/debug/pr32610.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/pr33316.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/pr36690-1.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/pr36690-1.c -gctf execution test
#     gcc:gcc.dg/debug/pr36690-2.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/pr36690-2.c -gctf execution test
#     gcc:gcc.dg/debug/pr36690-3.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/pr36690-3.c -gctf execution test
#     gcc:gcc.dg/debug/pr37616.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/pr37616.c -gctf execution test
#     gcc:gcc.dg/debug/pr39412.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/pr41264-1.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/pr41343-1.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/pr41717.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/pr41893-1.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/pr41893-2.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/pr42244.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/pr42767.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/pr43972.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/pr45849.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/pr46409.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/pr46782.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/pr47498.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/pr47501.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/pr49032.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/pr49294.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/pr49522.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/pr55730.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/pr57351.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/pr65771.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/pr66068.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/pr66432.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/pr78587.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/pr80321.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/pr85252.c -gctf  (test for warnings, line 10)
#     gcc:gcc.dg/debug/pr85252.c -gctf  (test for warnings, line 8)
#     gcc:gcc.dg/debug/pr85252.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/pr89704.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/pr97714.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/redecl-1.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/redecl-2.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/redecl-3.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/redecl-4.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/redecl-5.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/tls-1.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/trivial.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/trivial.c -gctf execution test
#     gcc:gcc.dg/debug/vta-1.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/vta-2.c -gctf (test for excess errors)
#     gcc:gcc.dg/debug/vta-3.c -gctf (test for excess errors)
#   Executed from: gcc.dg/ipa/ipa.exp
#     gcc:gcc.dg/ipa/ipa-sra-23.c (test for excess errors)
#     gcc:gcc.dg/ipa/ipa-sra-24.c (test for excess errors)
#     gcc:gcc.dg/ipa/pr93385.c (test for excess errors)
#     gcc:gcc.dg/ipa/pr93385.c execution test
# 
# 
#   - UNSUPPORTED appears       [     =>UNSUP]:
# 
#   Executed from: g++.dg/dg.exp
#     g++:g++.dg/ipa/ipa-sra-4.C  -std=gnu++98
#   Executed from: gcc.dg/debug/ctf/ctf.exp
#     gcc:gcc.dg/debug/ctf/ctf-skip-types-4.c
#     gcc:gcc.dg/debug/ctf/ctf-skip-types-5.c
#     gcc:gcc.dg/debug/ctf/ctf-skip-types-6.c
#     gcc:gcc.dg/debug/ctf/ctf-skip-types-7.c
#   Executed from: gcc.dg/debug/debug.exp
#     gcc:gcc.dg/debug/pr35154.c -gctf
# 
# 
# 
# # Regressions found
# # Regressions in 12 common sum files found

from (for last_good == b7e215a8ee81d44281d9e0a2a25eceb47b6911dd)
# reset_artifacts:
-10
# build_abe bootstrap:
0
# build_abe check_bootstrap:
1

Artifacts of last_good build: 
https://ci.linaro.org/job/tcwg_gcc-bisect-gnu-master-arm-check_bootstrap/67/artifact/artifacts/build-b7e215a8ee81d44281d9e0a2a25eceb47b6911dd/
Artifacts of first_bad build: 
https://ci.linaro.org/job/tcwg_gcc-bisect-gnu-master-arm-check_bootstrap/67/artifact/artifacts/build-c1f76af469388d3df815c82de566387da5ae000f/
Build top page/logs: 
https://ci.linaro.org/job/tcwg_gcc-bisect-gnu-master-arm-check_bootstrap/67/

Configuration details:


Reproduce builds:
<cut>
mkdir investigate-gcc-c1f76af469388d3df815c82de566387da5ae000f
cd investigate-gcc-c1f76af469388d3df815c82de566387da5ae000f

git clone https://git.linaro.org/toolchain/jenkins-scripts

mkdir -p artifacts/manifests
curl -o artifacts/manifests/build-baseline.sh 
https://ci.linaro.org/job/tcwg_gcc-bisect-gnu-master-arm-check_bootstrap/67/artifact/artifacts/manifests/build-baseline.sh
 --fail
curl -o artifacts/manifests/build-parameters.sh 
https://ci.linaro.org/job/tcwg_gcc-bisect-gnu-master-arm-check_bootstrap/67/artifact/artifacts/manifests/build-parameters.sh
 --fail
curl -o artifacts/test.sh 
https://ci.linaro.org/job/tcwg_gcc-bisect-gnu-master-arm-check_bootstrap/67/artifact/artifacts/test.sh
 --fail
chmod +x artifacts/test.sh

# Reproduce the baseline build (build all pre-requisites)
./jenkins-scripts/tcwg_gnu-build.sh @@ artifacts/manifests/build-baseline.sh

cd gcc

# Reproduce first_bad build
git checkout --detach c1f76af469388d3df815c82de566387da5ae000f
../artifacts/test.sh

# Reproduce last_good build
git checkout --detach b7e215a8ee81d44281d9e0a2a25eceb47b6911dd
../artifacts/test.sh

cd ..
</cut>

History of pending regressions and results: 
https://git.linaro.org/toolchain/ci/base-artifacts.git/log/?h=linaro-local/ci/tcwg_gnu/gnu-master-arm-check_bootstrap

Artifacts: 
https://ci.linaro.org/job/tcwg_gcc-bisect-gnu-master-arm-check_bootstrap/67/artifact/artifacts/
Build log: 
https://ci.linaro.org/job/tcwg_gcc-bisect-gnu-master-arm-check_bootstrap/67/consoleText

Full commit (up to 1000 lines):
<cut>
commit c1f76af469388d3df815c82de566387da5ae000f
Author: Indu Bhagat <indu.bha...@oracle.com>
Date:   Thu May 20 11:19:04 2021 -0700

    CTF/BTF testsuites
    
    This commit adds a new testsuite for the CTF debug format.
    
    2021-06-28  Indu Bhagat  <indu.bha...@oracle.com>
                David Faust  <david.fa...@oracle.com>
    
    gcc/testsuite/
    
            * lib/gcc-dg.exp (gcc-dg-frontend-supports-ctf): New procedure.
            (gcc-dg-debug-runtest): Add -gctf support.
            * gcc.dg/debug/btf/btf-1.c: New test.
            * gcc.dg/debug/btf/btf-2.c: Likewise.
            * gcc.dg/debug/btf/btf-anonymous-struct-1.c: Likewise.
            * gcc.dg/debug/btf/btf-anonymous-union-1.c: Likewise.
            * gcc.dg/debug/btf/btf-array-1.c: Likewise.
            * gcc.dg/debug/btf/btf-bitfields-1.c: Likewise.
            * gcc.dg/debug/btf/btf-bitfields-2.c: Likewise.
            * gcc.dg/debug/btf/btf-bitfields-3.c: Likewise.
            * gcc.dg/debug/btf/btf-cvr-quals-1.c: Likewise.
            * gcc.dg/debug/btf/btf-enum-1.c: Likewise.
            * gcc.dg/debug/btf/btf-forward-1.c: Likewise.
            * gcc.dg/debug/btf/btf-function-1.c: Likewise.
            * gcc.dg/debug/btf/btf-function-2.c: Likewise.
            * gcc.dg/debug/btf/btf-int-1.c: Likewise.
            * gcc.dg/debug/btf/btf-pointers-1.c: Likewise.
            * gcc.dg/debug/btf/btf-struct-1.c: Likewise.
            * gcc.dg/debug/btf/btf-typedef-1.c: Likewise.
            * gcc.dg/debug/btf/btf-union-1.c: Likewise.
            * gcc.dg/debug/btf/btf-variables-1.c: Likewise.
            * gcc.dg/debug/btf/btf.exp: Likewise.
            * gcc.dg/debug/ctf/ctf-1.c: Likewise.
            * gcc.dg/debug/ctf/ctf-2.c: Likewise.
            * gcc.dg/debug/ctf/ctf-anonymous-struct-1.c: Likewise.
            * gcc.dg/debug/ctf/ctf-anonymous-union-1.c: Likewise.
            * gcc.dg/debug/ctf/ctf-array-1.c: Likewise.
            * gcc.dg/debug/ctf/ctf-array-2.c: Likewise.
            * gcc.dg/debug/ctf/ctf-array-3.c: Likewise.
            * gcc.dg/debug/ctf/ctf-array-4.c: Likewise.
            * gcc.dg/debug/ctf/ctf-attr-mode-1.c: Likewise.
            * gcc.dg/debug/ctf/ctf-attr-used-1.c: Likewise.
            * gcc.dg/debug/ctf/ctf-bitfields-1.c: Likewise.
            * gcc.dg/debug/ctf/ctf-bitfields-2.c: Likewise.
            * gcc.dg/debug/ctf/ctf-bitfields-3.c: Likewise.
            * gcc.dg/debug/ctf/ctf-bitfields-4.c: Likewise.
            * gcc.dg/debug/ctf/ctf-complex-1.c: Likewise.
            * gcc.dg/debug/ctf/ctf-cvr-quals-1.c: Likewise.
            * gcc.dg/debug/ctf/ctf-cvr-quals-2.c: Likewise.
            * gcc.dg/debug/ctf/ctf-cvr-quals-3.c: Likewise.
            * gcc.dg/debug/ctf/ctf-cvr-quals-4.c: Likewise.
            * gcc.dg/debug/ctf/ctf-enum-1.c: Likewise.
            * gcc.dg/debug/ctf/ctf-enum-2.c: Likewise.
            * gcc.dg/debug/ctf/ctf-file-scope-1.c: Likewise.
            * gcc.dg/debug/ctf/ctf-float-1.c: Likewise.
            * gcc.dg/debug/ctf/ctf-forward-1.c: Likewise.
            * gcc.dg/debug/ctf/ctf-forward-2.c: Likewise.
            * gcc.dg/debug/ctf/ctf-func-index-1.c: Likewise.
            * gcc.dg/debug/ctf/ctf-function-pointers-1.c: Likewise.
            * gcc.dg/debug/ctf/ctf-function-pointers-2.c: Likewise.
            * gcc.dg/debug/ctf/ctf-function-pointers-3.c: Likewise.
            * gcc.dg/debug/ctf/ctf-functions-1.c: Likewise.
            * gcc.dg/debug/ctf/ctf-int-1.c: Likewise.
            * gcc.dg/debug/ctf/ctf-objt-index-1.c: Likewise.
            * gcc.dg/debug/ctf/ctf-pointers-1.c: Likewise.
            * gcc.dg/debug/ctf/ctf-pointers-2.c: Likewise.
            * gcc.dg/debug/ctf/ctf-preamble-1.c: Likewise.
            * gcc.dg/debug/ctf/ctf-skip-types-1.c: Likewise.
            * gcc.dg/debug/ctf/ctf-skip-types-2.c: Likewise.
            * gcc.dg/debug/ctf/ctf-skip-types-3.c: Likewise.
            * gcc.dg/debug/ctf/ctf-skip-types-4.c: Likewise.
            * gcc.dg/debug/ctf/ctf-skip-types-5.c: Likewise.
            * gcc.dg/debug/ctf/ctf-skip-types-6.c: Likewise.
            * gcc.dg/debug/ctf/ctf-str-table-1.c: Likewise.
            * gcc.dg/debug/ctf/ctf-struct-1.c: Likewise.
            * gcc.dg/debug/ctf/ctf-struct-2.c: Likewise.
            * gcc.dg/debug/ctf/ctf-struct-array-1.c: Likewise.
            * gcc.dg/debug/ctf/ctf-struct-pointer-1.c: Likewise.
            * gcc.dg/debug/ctf/ctf-struct-pointer-2.c: Likewise.
            * gcc.dg/debug/ctf/ctf-typedef-1.c: Likewise.
            * gcc.dg/debug/ctf/ctf-typedef-2.c: Likewise.
            * gcc.dg/debug/ctf/ctf-typedef-3.c: Likewise.
            * gcc.dg/debug/ctf/ctf-typedef-struct-1.c: Likewise.
            * gcc.dg/debug/ctf/ctf-typedef-struct-2.c: Likewise.
            * gcc.dg/debug/ctf/ctf-typedef-struct-3.c: Likewise.
            * gcc.dg/debug/ctf/ctf-union-1.c: Likewise.
            * gcc.dg/debug/ctf/ctf-variables-1.c: Likewise.
            * gcc.dg/debug/ctf/ctf-variables-2.c: Likewise.
            * gcc.dg/debug/ctf/ctf.exp: Likewise.
---
 gcc/testsuite/gcc.dg/debug/btf/btf-1.c             |  6 ++
 gcc/testsuite/gcc.dg/debug/btf/btf-2.c             | 10 +++
 .../gcc.dg/debug/btf/btf-anonymous-struct-1.c      | 23 ++++++
 .../gcc.dg/debug/btf/btf-anonymous-union-1.c       | 23 ++++++
 gcc/testsuite/gcc.dg/debug/btf/btf-array-1.c       | 31 ++++++++
 gcc/testsuite/gcc.dg/debug/btf/btf-bitfields-1.c   | 34 +++++++++
 gcc/testsuite/gcc.dg/debug/btf/btf-bitfields-2.c   | 26 +++++++
 gcc/testsuite/gcc.dg/debug/btf/btf-bitfields-3.c   | 43 ++++++++++++
 gcc/testsuite/gcc.dg/debug/btf/btf-bitfields-4.c   | 23 ++++++
 gcc/testsuite/gcc.dg/debug/btf/btf-cvr-quals-1.c   | 52 ++++++++++++++
 gcc/testsuite/gcc.dg/debug/btf/btf-datasec-1.c     | 45 ++++++++++++
 gcc/testsuite/gcc.dg/debug/btf/btf-enum-1.c        | 30 ++++++++
 gcc/testsuite/gcc.dg/debug/btf/btf-forward-1.c     | 24 +++++++
 gcc/testsuite/gcc.dg/debug/btf/btf-function-1.c    | 18 +++++
 gcc/testsuite/gcc.dg/debug/btf/btf-function-2.c    | 18 +++++
 gcc/testsuite/gcc.dg/debug/btf/btf-function-3.c    | 22 ++++++
 gcc/testsuite/gcc.dg/debug/btf/btf-int-1.c         | 44 ++++++++++++
 gcc/testsuite/gcc.dg/debug/btf/btf-pointers-1.c    | 25 +++++++
 gcc/testsuite/gcc.dg/debug/btf/btf-pointers-2.c    | 13 ++++
 gcc/testsuite/gcc.dg/debug/btf/btf-struct-1.c      | 22 ++++++
 gcc/testsuite/gcc.dg/debug/btf/btf-struct-2.c      | 19 +++++
 gcc/testsuite/gcc.dg/debug/btf/btf-typedef-1.c     | 82 ++++++++++++++++++++++
 gcc/testsuite/gcc.dg/debug/btf/btf-union-1.c       | 16 +++++
 gcc/testsuite/gcc.dg/debug/btf/btf-variables-1.c   | 33 +++++++++
 gcc/testsuite/gcc.dg/debug/btf/btf-variables-2.c   | 27 +++++++
 gcc/testsuite/gcc.dg/debug/btf/btf-variables-3.c   | 36 ++++++++++
 gcc/testsuite/gcc.dg/debug/btf/btf.exp             | 41 +++++++++++
 gcc/testsuite/gcc.dg/debug/ctf/ctf-1.c             |  6 ++
 gcc/testsuite/gcc.dg/debug/ctf/ctf-2.c             | 10 +++
 .../gcc.dg/debug/ctf/ctf-anonymous-struct-1.c      | 23 ++++++
 .../gcc.dg/debug/ctf/ctf-anonymous-union-1.c       | 26 +++++++
 gcc/testsuite/gcc.dg/debug/ctf/ctf-array-1.c       | 31 ++++++++
 gcc/testsuite/gcc.dg/debug/ctf/ctf-array-2.c       | 38 ++++++++++
 gcc/testsuite/gcc.dg/debug/ctf/ctf-array-3.c       | 17 +++++
 gcc/testsuite/gcc.dg/debug/ctf/ctf-array-4.c       | 13 ++++
 gcc/testsuite/gcc.dg/debug/ctf/ctf-attr-mode-1.c   | 22 ++++++
 gcc/testsuite/gcc.dg/debug/ctf/ctf-attr-used-1.c   | 22 ++++++
 gcc/testsuite/gcc.dg/debug/ctf/ctf-bitfields-1.c   | 30 ++++++++
 gcc/testsuite/gcc.dg/debug/ctf/ctf-bitfields-2.c   | 39 ++++++++++
 gcc/testsuite/gcc.dg/debug/ctf/ctf-bitfields-3.c   | 16 +++++
 gcc/testsuite/gcc.dg/debug/ctf/ctf-bitfields-4.c   | 19 +++++
 gcc/testsuite/gcc.dg/debug/ctf/ctf-complex-1.c     | 21 ++++++
 gcc/testsuite/gcc.dg/debug/ctf/ctf-cvr-quals-1.c   | 65 +++++++++++++++++
 gcc/testsuite/gcc.dg/debug/ctf/ctf-cvr-quals-2.c   | 30 ++++++++
 gcc/testsuite/gcc.dg/debug/ctf/ctf-cvr-quals-3.c   | 25 +++++++
 gcc/testsuite/gcc.dg/debug/ctf/ctf-cvr-quals-4.c   | 23 ++++++
 gcc/testsuite/gcc.dg/debug/ctf/ctf-debug-1.c       |  7 ++
 gcc/testsuite/gcc.dg/debug/ctf/ctf-debug-2.c       |  7 ++
 gcc/testsuite/gcc.dg/debug/ctf/ctf-enum-1.c        | 21 ++++++
 gcc/testsuite/gcc.dg/debug/ctf/ctf-enum-2.c        | 27 +++++++
 gcc/testsuite/gcc.dg/debug/ctf/ctf-file-scope-1.c  | 25 +++++++
 gcc/testsuite/gcc.dg/debug/ctf/ctf-float-1.c       | 16 +++++
 gcc/testsuite/gcc.dg/debug/ctf/ctf-forward-1.c     | 40 +++++++++++
 gcc/testsuite/gcc.dg/debug/ctf/ctf-forward-2.c     | 16 +++++
 gcc/testsuite/gcc.dg/debug/ctf/ctf-func-index-1.c  | 25 +++++++
 .../gcc.dg/debug/ctf/ctf-function-pointers-1.c     | 24 +++++++
 .../gcc.dg/debug/ctf/ctf-function-pointers-2.c     | 22 ++++++
 .../gcc.dg/debug/ctf/ctf-function-pointers-3.c     | 21 ++++++
 .../gcc.dg/debug/ctf/ctf-function-pointers-4.c     | 18 +++++
 gcc/testsuite/gcc.dg/debug/ctf/ctf-functions-1.c   | 34 +++++++++
 gcc/testsuite/gcc.dg/debug/ctf/ctf-int-1.c         | 17 +++++
 gcc/testsuite/gcc.dg/debug/ctf/ctf-objt-index-1.c  | 30 ++++++++
 gcc/testsuite/gcc.dg/debug/ctf/ctf-pointers-1.c    | 26 +++++++
 gcc/testsuite/gcc.dg/debug/ctf/ctf-pointers-2.c    | 25 +++++++
 gcc/testsuite/gcc.dg/debug/ctf/ctf-preamble-1.c    | 11 +++
 gcc/testsuite/gcc.dg/debug/ctf/ctf-skip-types-1.c  | 38 ++++++++++
 gcc/testsuite/gcc.dg/debug/ctf/ctf-skip-types-2.c  | 17 +++++
 gcc/testsuite/gcc.dg/debug/ctf/ctf-skip-types-3.c  | 20 ++++++
 gcc/testsuite/gcc.dg/debug/ctf/ctf-skip-types-4.c  | 19 +++++
 gcc/testsuite/gcc.dg/debug/ctf/ctf-skip-types-5.c  | 19 +++++
 gcc/testsuite/gcc.dg/debug/ctf/ctf-skip-types-6.c  | 18 +++++
 gcc/testsuite/gcc.dg/debug/ctf/ctf-skip-types-7.c  | 18 +++++
 gcc/testsuite/gcc.dg/debug/ctf/ctf-skip-types-8.c  | 27 +++++++
 gcc/testsuite/gcc.dg/debug/ctf/ctf-str-table-1.c   | 26 +++++++
 gcc/testsuite/gcc.dg/debug/ctf/ctf-struct-1.c      | 25 +++++++
 gcc/testsuite/gcc.dg/debug/ctf/ctf-struct-2.c      | 32 +++++++++
 .../gcc.dg/debug/ctf/ctf-struct-array-1.c          | 65 +++++++++++++++++
 .../gcc.dg/debug/ctf/ctf-struct-array-2.c          | 15 ++++
 .../gcc.dg/debug/ctf/ctf-struct-pointer-1.c        | 21 ++++++
 .../gcc.dg/debug/ctf/ctf-struct-pointer-2.c        | 22 ++++++
 gcc/testsuite/gcc.dg/debug/ctf/ctf-typedef-1.c     | 68 ++++++++++++++++++
 gcc/testsuite/gcc.dg/debug/ctf/ctf-typedef-2.c     | 20 ++++++
 gcc/testsuite/gcc.dg/debug/ctf/ctf-typedef-3.c     | 24 +++++++
 .../gcc.dg/debug/ctf/ctf-typedef-struct-1.c        | 14 ++++
 .../gcc.dg/debug/ctf/ctf-typedef-struct-2.c        | 17 +++++
 .../gcc.dg/debug/ctf/ctf-typedef-struct-3.c        | 32 +++++++++
 gcc/testsuite/gcc.dg/debug/ctf/ctf-union-1.c       | 14 ++++
 gcc/testsuite/gcc.dg/debug/ctf/ctf-variables-1.c   | 25 +++++++
 gcc/testsuite/gcc.dg/debug/ctf/ctf-variables-2.c   | 16 +++++
 gcc/testsuite/gcc.dg/debug/ctf/ctf.exp             | 41 +++++++++++
 gcc/testsuite/lib/gcc-dg.exp                       | 64 +++++++++++++----
 91 files changed, 2376 insertions(+), 15 deletions(-)

diff --git a/gcc/testsuite/gcc.dg/debug/btf/btf-1.c 
b/gcc/testsuite/gcc.dg/debug/btf/btf-1.c
new file mode 100644
index 00000000000..bcbc9492439
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/debug/btf/btf-1.c
@@ -0,0 +1,6 @@
+/* { dg-do compile } */
+/* { dg-options "-gbtf" } */
+
+void func(void)
+{
+}
diff --git a/gcc/testsuite/gcc.dg/debug/btf/btf-2.c 
b/gcc/testsuite/gcc.dg/debug/btf/btf-2.c
new file mode 100644
index 00000000000..70e2ff1e053
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/debug/btf/btf-2.c
@@ -0,0 +1,10 @@
+/* Check the BTF header information.  */
+
+/* { dg-do compile } */
+/* { dg-options "-gbtf -dA" } */
+
+/* { dg-final { scan-assembler-times "0xeb9f.*btf_magic" 1} } */
+/* { dg-final { scan-assembler-times "0x1.*btf_version" 1 } } */
+/* { dg-final { scan-assembler-times "0.*btf_flags" 1 } } */
+
+int foo;
diff --git a/gcc/testsuite/gcc.dg/debug/btf/btf-anonymous-struct-1.c 
b/gcc/testsuite/gcc.dg/debug/btf/btf-anonymous-struct-1.c
new file mode 100644
index 00000000000..89a5701bba0
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/debug/btf/btf-anonymous-struct-1.c
@@ -0,0 +1,23 @@
+/* Test BTF generation of anonymous struct.
+
+   We expect two BTF struct records:
+   - struct foo, with two fields "a" and "bar"
+   - struct <anonymous> with one field "b"
+
+   The anonymous struct should have a name of 0, pointing to the null string
+   at the start of the string table.  */
+
+/* { dg-do compile } */
+/* { dg-options "-O0 -gbtf -dA" } */
+
+/* Struct type with 2 members (struct foo).  */
+/* { dg-final { scan-assembler-times "\[\t \]0x4000002\[\t 
\]+\[^\n\]*btt_info" 1 } } */
+/* Struct type with 1 member (anon struct).  */
+/* { dg-final { scan-assembler-times "\[\t \]0x4000001\[\t 
\]+\[^\n\]*btt_info" 1 } } */
+/* { dg-final { scan-assembler-times "\[\t \]0\[\t \]+\[^\n\]*btt_name" 1 } } 
*/
+
+struct foo
+{
+  int a;
+  struct { int b; } bar;
+} myfoo;
diff --git a/gcc/testsuite/gcc.dg/debug/btf/btf-anonymous-union-1.c 
b/gcc/testsuite/gcc.dg/debug/btf/btf-anonymous-union-1.c
new file mode 100644
index 00000000000..f3b120bb458
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/debug/btf/btf-anonymous-union-1.c
@@ -0,0 +1,23 @@
+/* Test BTF generation of anonymous union.
+
+   We expect a named struct type and an anonymous union type record to
+   be generated. The anonymous union record should have a name of 0,
+   pointing to the null string at the start of the string table.  */
+
+/* { dg-do compile } */
+/* { dg-options "-O0 -gbtf -dA" } */
+
+/* Struct type with 1 member.  */
+/* { dg-final { scan-assembler-times "\[\t \]0x4000001\[\t 
\]+\[^\n\]*btt_info" 1 } } */
+/* Union type with 2 members.  */
+/* { dg-final { scan-assembler-times "\[\t \]0x5000002\[\t 
\]+\[^\n\]*btt_info" 1 } } */
+/* { dg-final { scan-assembler-times "\[\t \]0\[\t \]+\[^\n\]*btt_name" 1 } } 
*/
+
+struct foo
+{
+  union
+    {
+      int value;
+      char ascii;
+    };
+} myfoo;
diff --git a/gcc/testsuite/gcc.dg/debug/btf/btf-array-1.c 
b/gcc/testsuite/gcc.dg/debug/btf/btf-array-1.c
new file mode 100644
index 00000000000..ab55445bd35
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/debug/btf/btf-array-1.c
@@ -0,0 +1,31 @@
+/* BTF generation for array type.
+
+   Unsized arrays are encoded with a 0 for the number of elements.
+
+   In this testcase, 5 distinct BTF records for arrays are expected
+   b1 : cta_nelems = 2
+   c1 : cta_nelems = 3
+   a1 : cta_nelems = 2, 5
+   buf : cta_nelems = 0.  */
+
+/* { dg-do compile )  */
+/* { dg-options "-O0 -gbtf -dA" } */
+
+/* { dg-final { scan-assembler-times "0x3000000\[\t \]+\[^\n\]*btt_info" 5 } } 
*/
+
+/* { dg-final { scan-assembler-times "\[\t \]0x2\[\t \]+\[^\n\]*bta_nelems" 2 
} } */
+/* { dg-final { scan-assembler-times "\[\t \]0x3\[\t \]+\[^\n\]*bta_nelems" 1 
} } */
+/* { dg-final { scan-assembler-times "\[\t \]0x5\[\t \]+\[^\n\]*bta_nelems" 1 
} } */
+/* { dg-final { scan-assembler-times "\[\t \]0\[\t \]+\[^\n\]*bta_nelems" 1 } 
} */
+
+int b1[2] = {0,1};
+int c1[5] = {0,1,2,3,4};
+int a1[2][3] = { {3,4,5}, {2,3,4} };
+
+/* Variable length struct using arrays.  */
+struct my_array
+{
+  int flags;
+  int length;
+  int buf[];
+} my_array_obj;
diff --git a/gcc/testsuite/gcc.dg/debug/btf/btf-bitfields-1.c 
b/gcc/testsuite/gcc.dg/debug/btf/btf-bitfields-1.c
new file mode 100644
index 00000000000..c6bf52130dc
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/debug/btf/btf-bitfields-1.c
@@ -0,0 +1,34 @@
+/* Basic tests for BTF bitfields.
+
+   The structure containing bitfield members should be marked with KIND_FLAG=1
+   The bitfield member offsets should be encoded as:
+     (bit_size << 24) | bit_offset
+     - (0xa  << 24) | 0x20
+     - (0x7  << 24) | 0x2a
+     - (0x13 << 24) | 0x40 - note that this is aligned to 0x40.  */
+
+/* { dg-do compile )  */
+/* { dg-options "-O0 -gbtf -dA" } */
+
+/* { dg-final { scan-assembler-times "\[\t \]0x84000004\[\t 
\]+\[^\n\]*btt_info" 1 } } */
+
+/* { dg-final { scan-assembler-times "\[\t \]0xa000020\[\t 
\]+\[^\n\]*btm_offset" 1 } } */
+/* { dg-final { scan-assembler-times "\[\t \]0x700002a\[\t 
\]+\[^\n\]*btm_offset" 1 } } */
+/* { dg-final { scan-assembler-times "\[\t \]0x13000040\[\t 
\]+\[^\n\]*btm_offset" 1 } } */
+
+struct bitt {
+  int a;
+  unsigned int bitfield_a : 10;
+  unsigned int bitfield_b : 7;
+  unsigned int bitfield_c : 19;
+} bitty;
+
+struct no_bitt {
+  int a;
+  int b;
+} no_bitty;
+
+int main ()
+{
+  return bitty.bitfield_b + bitty.a;
+}
diff --git a/gcc/testsuite/gcc.dg/debug/btf/btf-bitfields-2.c 
b/gcc/testsuite/gcc.dg/debug/btf/btf-bitfields-2.c
new file mode 100644
index 00000000000..9665ab67145
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/debug/btf/btf-bitfields-2.c
@@ -0,0 +1,26 @@
+/* Test BTF generation for struct with 0 size bitfield.
+
+   We expect a struct with 2 members to be generated. The size 0 bitfield
+   should not have any entry in the member list.  */
+
+/* { dg-do compile )  */
+/* { dg-options "-O0 -gbtf -dA" } */
+
+/* Struct with bitfield members, and 2 members.  */
+/* { dg-final { scan-assembler-times "\[\t \]0x84000002\[\t 
\]+\[^\n\]*btt_info" 1 } } */
+
+/* Bitfield size 31 (0x1f) at offset 0.  */
+/* { dg-final { scan-assembler-times "\[\t \]0x1f000000\[\t 
\]+\[^\n\]*btm_offset" 1 } } */
+
+/* Bitfield size 32 (0x20) at offset 32.  */
+/* { dg-final { scan-assembler-times "\[\t \]0x20000020\[\t 
\]+\[^\n\]*btm_offset" 1 } } */
+
+/* Only 2 members.  */
+/* { dg-final { scan-assembler-times "btm_name" 2 } } */
+
+struct foo
+{
+  unsigned a : 31;
+  unsigned   : 0;
+  unsigned c : 32;
+} myfoo;
diff --git a/gcc/testsuite/gcc.dg/debug/btf/btf-bitfields-3.c 
b/gcc/testsuite/gcc.dg/debug/btf/btf-bitfields-3.c
new file mode 100644
index 00000000000..440623c3b16
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/debug/btf/btf-bitfields-3.c
@@ -0,0 +1,43 @@
+/* Test BTF generation for enum-type bitfields
+
+   It is allowed to have a bitfield type be an enum type.
+   We expect the following types:
+
+     [1] enum 'foo'(1U#B) size=4U#B
+        'BAR' value=0
+        'BAZ' value=1
+        'QUZ' value=2
+        'QUX' value=3
+     [2] int 'unsigned int' size=4 offset=0 bits=32
+     [3] struct 'bitt' size=4
+         member 'f' type=1 bitfield_size=2 bit_offset=0
+         member 'data' type=2 bitfield_size=14 bit_offset=2
+   */
+
+/* { dg-do compile } */
+/* { dg-options "-O0 -gbtf -dA" } */
+
+/* Enum with 4 members.  */
+/* { dg-final { scan-assembler-times "\[\t \]0x6000004\[\t 
\]+\[^\n\]*btt_info" 1 } } */
+/* Struct with bitfield members, and 2 members.  */
+/* { dg-final { scan-assembler-times "\[\t \]0x84000002\[\t 
\]+\[^\n\]*btt_info" 1 } } */
+
+/* Bitfield "f" points to type ID 1.  */
+/* { dg-final { scan-assembler-times "\[\t \]0x1\[\t \]+\[^\n\]*btm_type" 1 } 
} */
+
+/* Bitfield "data" points to type ID 2.  */
+/* { dg-final { scan-assembler-times "\[\t \]0x2\[\t \]+\[^\n\]*btm_type" 1 } 
} */
+
+enum foo
+{
+  BAR = 0,
+  BAZ = 1,
+  QUZ = 2,
+  QUX = 3
+};
+
+struct bitt
+{
+  enum foo f : 2;
+  unsigned data : 14;
+} bitty;
diff --git a/gcc/testsuite/gcc.dg/debug/btf/btf-bitfields-4.c 
b/gcc/testsuite/gcc.dg/debug/btf/btf-bitfields-4.c
new file mode 100644
index 00000000000..af91845726f
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/debug/btf/btf-bitfields-4.c
@@ -0,0 +1,23 @@
+/* Test BTF generation for non-representable bitfields.
+
+   Due to the limitations of BTF, we only have 24 bits in which to store
+   the bitfield offset (in bits, from the beginning of the struct).
+
+   In this test, we construct a structure such that the bitfield will have
+   an offset so large as to be unrepresentable in BTF. We expect that the
+   resulting BTF will describe the rest of the structure, ignoring the
+   non-representable bitfield.  */
+
+/* { dg-do compile } */
+/* { dg-options "-O0 -gbtf -dA" } */
+
+/* Struct with 3 members and no bitfield (kind_flag not set).  */
+/* { dg-final { scan-assembler-times "\[\t \]0x4000003\[\t 
\]+\[^\n\]*btt_info" 1 } } */
+
+struct bigly
+{
+  int a;
+  int b[((0xffffff + 1) / (8 * sizeof (int)))];
+  unsigned unsup : 7;
+  char c;
+} big;
diff --git a/gcc/testsuite/gcc.dg/debug/btf/btf-cvr-quals-1.c 
b/gcc/testsuite/gcc.dg/debug/btf/btf-cvr-quals-1.c
new file mode 100644
index 00000000000..79e9f52a479
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/debug/btf/btf-cvr-quals-1.c
@@ -0,0 +1,52 @@
+/* Test BTF generation of BTF_KIND_{CONST,VOLATILE,RESTRICT} records.
+
+   BTF const, volatile and restrict records are nameless type records pointing
+   to the type they modify.
+
+   Types:
+     [1] int 'int' size=4U offset=0 bits=32 SIGNED
+     [2] const <anonymous> type=1
+     [3] volatile <anonymous> type=1
+     [4] const <anonymous> type=3
+     [5] ptr <anonymous> type=1
+     [6] restrict <anonymous> type=5
+     [7] ptr <anonymous> type=2
+     [8] restrict <anonymous> type=7
+
+   Note:
+   - Type id 3 describes a volatile int.
+   - Type id 2 describes a const int.
+   - Type id 4 describes a const volatile int by modifying id 3.
+   - Type id 6 describes a restrict pointer to int.
+   - Type id 8 describes a restrict pointer to const int.
+ */
+
+/* { dg-do compile } */
+/* { dg-options "-O0 -gbtf -dA" } */
+
+/* { dg-final { scan-assembler-times "ascii \"int.0\"\[\t 
\]+\[^\n\]*btf_string" 1 } } */
+
+/* types 5 and 7 are pointers, to 'int' and 'const int' respectively.  */
+/* { dg-final { scan-assembler-times "\[\t \]0x2000000\[\t 
\]+\[^\n\]*btt_info" 2 } } */
+
+/* type 3 has VOLATILE qualifier */
+/* { dg-final { scan-assembler-times "\[\t \]0x9000000\[\t 
\]+\[^\n\]*btt_info" 1 } } */
+
+/* types 2 and 4 have CONST qualifier.  */
+/* { dg-final { scan-assembler-times "\[\t \]0xa000000\[\t 
\]+\[^\n\]*btt_info" 2 } } */
+
+/* types 6 and 8 have RESTRICT qualifier.  */
+/* { dg-final { scan-assembler-times "\[\t \]0xb000000\[\t 
\]+\[^\n\]*btt_info" 2 } } */
+
+const int a = 10;
+
+volatile int b;
+
+int * restrict c;
+
+const volatile int d = 20;
+
+const int * restrict e;
+
+const int * f;
+int const * g;
diff --git a/gcc/testsuite/gcc.dg/debug/btf/btf-datasec-1.c 
b/gcc/testsuite/gcc.dg/debug/btf/btf-datasec-1.c
new file mode 100644
index 00000000000..88ae4c4edfd
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/debug/btf/btf-datasec-1.c
@@ -0,0 +1,45 @@
+/* BTF generation of BTF_KIND_DATASEC records.
+
+   We expect 3 DATASEC records: one for each of .data, .rodata and .bss.
+   .rodata: the consts; c,e,my_cstruct
+   .bss:    a,b,bigarr
+   .data:   d
+
+   The type IDs of the variables placed in each section are not deterministic
+   so we cannot check them.
+ */
+
+/* { dg-do compile )  */
+/* { dg-options "-O0 -gbtf -dA" } */
+
+/* Check for two DATASEC entries with vlen 3, and one with vlen 1.  */
+/* { dg-final { scan-assembler-times "0xf000003\[\t \]+\[^\n\]*btt_info" 2 } } 
*/
+/* { dg-final { scan-assembler-times "0xf000001\[\t \]+\[^\n\]*btt_info" 1 } } 
*/
+
+/* The offset entry for each variable in a DATSEC should be 0 at compile time. 
 */
+/* { dg-final { scan-assembler-times "0\[\t \]+\[^\n\]*bts_offset" 7 } } */
+
+/* Check that strings for each DATASEC have been added to the BTF string 
table.  */
+/* { dg-final { scan-assembler-times "ascii \".data.0\"\[\t 
\]+\[^\n\]*btf_aux_string" 1 } } */
+/* { dg-final { scan-assembler-times "ascii \".rodata.0\"\[\t 
\]+\[^\n\]*btf_aux_string" 1 } } */
+/* { dg-final { scan-assembler-times "ascii \".bss.0\"\[\t 
\]+\[^\n\]*btf_aux_string" 1 } } */
+
+int a;
+long long b;
+const long unsigned int c;
+
+int d = 137;
+
+const int e = -55;
+
+int bigarr[20][10];
+
+struct c_struct {
+  long x;
+  char c;
+};
+
+const struct c_struct my_cstruct = {
+  99,
+  '?'
+};
diff --git a/gcc/testsuite/gcc.dg/debug/btf/btf-enum-1.c 
b/gcc/testsuite/gcc.dg/debug/btf/btf-enum-1.c
new file mode 100644
index 00000000000..728493b0804
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/debug/btf/btf-enum-1.c
@@ -0,0 +1,30 @@
+/* Test BTF generation for enums.  */
+
+/* { dg-do compile } */
+/* { dg-options "-O0 -gbtf -dA" } */
+
+/* { dg-final { scan-assembler-times "\[\t \]0x6000004\[\t 
\]+\[^\n\]*btt_info" 1 } } */
+/* { dg-final { scan-assembler-times "\[\t \]0x6000003\[\t 
\]+\[^\n\]*btt_info" 1 } } */
+/* { dg-final { scan-assembler-times "ascii \"QAD.0\"\[\t 
\]+\[^\n\]*btf_string" 1 } } */
+/* { dg-final { scan-assembler-times "ascii \"QED.0\"\[\t 
\]+\[^\n\]*btf_string" 1 } } */
+/* { dg-final { scan-assembler-times "ascii \"QOD.0\"\[\t 
\]+\[^\n\]*btf_string" 1 } } */
+/* { dg-final { scan-assembler-times "ascii \"QUD.0\"\[\t 
\]+\[^\n\]*btf_string" 1 } } */
+/* { dg-final { scan-assembler-times "ascii \"YES.0\"\[\t 
\]+\[^\n\]*btf_string" 1 } } */
+/* { dg-final { scan-assembler-times "ascii \"NO.0\"\[\t 
\]+\[^\n\]*btf_string" 1 } } */
+/* { dg-final { scan-assembler-times "ascii \"IDUNNO.0\"\[\t 
\]+\[^\n\]*btf_string" 1 } } */
+/* { dg-final { scan-assembler-times "bte_value" 7 } } */
+
+enum foo
+{
+  QAD,
+  QED,
+  QOD,
+  QUD,
+} a;
+
+enum barsigned
+{
+  YES=1000,
+  NO=-1000,
+  IDUNNO=0,
+} b;
diff --git a/gcc/testsuite/gcc.dg/debug/btf/btf-forward-1.c 
b/gcc/testsuite/gcc.dg/debug/btf/btf-forward-1.c
new file mode 100644
index 00000000000..c894fa26bc7
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/debug/btf/btf-forward-1.c
@@ -0,0 +1,24 @@
+/* Test BTF generation of forwards.
+
+   Check that the KIND_FLAG (bit 31) of btt_info is set (1) for the forward to
+   union, and not set (0) for forward to struct.  */
+
+/* { dg-do compile } */
+/* { dg-options "-O0 -gbtf -dA" } */
+
+/* { dg-final { scan-assembler-times "\[\t \]0x87000000\[\t 
\]+\[^\n\]*btt_info" 1 } } */
+/* { dg-final { scan-assembler-times "\[\t \]0x7000000\[\t 
\]+\[^\n\]*btt_info" 1 } } */
+
+typedef struct _fwd_st
+{
+  struct unk_struct_type *data[4];
+} fwd_st_t;
+
+fwd_st_t struct_container;
+
+typedef struct _fwd_un
+{
+  union unk_union_type *options[4];
+} fwd_un_t;
+
+fwd_un_t union_container;
diff --git a/gcc/testsuite/gcc.dg/debug/btf/btf-function-1.c 
b/gcc/testsuite/gcc.dg/debug/btf/btf-function-1.c
new file mode 100644
index 00000000000..9fa1498bd8e
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/debug/btf/btf-function-1.c
@@ -0,0 +1,18 @@
+/* Test BTF generation for functions.
+
+   We expect to see one BTF_KIND_FUNC_PROTO with 2 named arguments.
+   The parameter names should appear in the auxilliary string table.  */
+
+/* { dg-do compile } */
+/* { dg-options "-O0 -gbtf -dA" } */
+
+/* { dg-final { scan-assembler-times "\[\t \]0xd000002\[\t 
\]+\[^\n\]*btt_info" 1 } } */
+/* { dg-final { scan-assembler-times "farg_name" 2 } } */
+/* { dg-final { scan-assembler-times "farg_type" 2 } } */
+/* { dg-final { scan-assembler-times "ascii \"alpha.0\"\[\t 
\]+\[^\n\]*btf_aux_string" 1 } } */
+/* { dg-final { scan-assembler-times "ascii \"bravo.0\"\[\t 
\]+\[^\n\]*btf_aux_string" 1 } } */
+
+int funfoo (int alpha, long bravo)
+{
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/debug/btf/btf-function-2.c 
b/gcc/testsuite/gcc.dg/debug/btf/btf-function-2.c
new file mode 100644
index 00000000000..3c7fda9ee35
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/debug/btf/btf-function-2.c
@@ -0,0 +1,18 @@
+/* Test BTF generation for functions with varargs.
+
+   We expect one BTF_KIND_FUNC_PROTO with two arguments. The second argument
+   should have "farg_name" and "farg_type" both of 0, representing varargs.  */
+
+/* { dg-do compile } */
+/* { dg-options "-O0 -gbtf -dA" } */
+
+/* { dg-final { scan-assembler-times "\[\t \]0xd000002\[\t 
\]+\[^\n\]*btt_info" 1 } } */
+/* { dg-final { scan-assembler-times "farg_name" 2 } } */
+/* { dg-final { scan-assembler-times "farg_type" 2 } } */
+/* { dg-final { scan-assembler-times "\[\t \]0\[\t \]+\[^\n\]*farg_name" 1 } } 
*/
+/* { dg-final { scan-assembler-times "\[\t \]0\[\t \]+\[^\n\]*farg_type" 1 } } 
*/
+
+int fmt (const char * format, ...)
+{
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/debug/btf/btf-function-3.c 
b/gcc/testsuite/gcc.dg/debug/btf/btf-function-3.c
new file mode 100644
index 00000000000..35f96a2152c
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/debug/btf/btf-function-3.c
@@ -0,0 +1,22 @@
+/* Test BTF generation for a function with an unrepresentable parameter.
+
+   BTF has no encoding for floating point types, among others. Function
+   parameters of unrepresentable types are emitted as 'void' types.
+
+   We expect one BTF_KIND_FUNC_PROTO with 3 parameters, one of which
+   has type_id=0.  */
+
+/* { dg-do compile } */
+/* { dg-options "-O0 -gbtf -dA" } */
+
+/* { dg-final { scan-assembler-times "\[\t \]0xd000003\[\t 
\]+\[^\n\]*btt_info" 1 } } */
+/* { dg-final { scan-assembler-times "farg_name" 3 } } */
+/* { dg-final { scan-assembler-times "farg_type" 3 } } */
+
+/* Exactly one function parameter should have type_id=0.  */
+/* { dg-final { scan-assembler-times "\[\t \]0\[\t \]+\[^\n\]*farg_type" 1 } } 
*/
+
+int foo (int a, float f, long b)
+{
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/debug/btf/btf-int-1.c 
b/gcc/testsuite/gcc.dg/debug/btf/btf-int-1.c
new file mode 100644
index 00000000000..2381decd6ff
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/debug/btf/btf-int-1.c
@@ -0,0 +1,44 @@
+/* Tests for BTF integer base types.
+
+     0       f       ff      00   ff
+   | 0 | encoding | offset | 00 | bits |
+   encoding:
+     signed  1 << 24
+     char    2 << 24
+
+   All offsets in this test should be 0.
+   This test does _not_ check number of bits, as it may vary between targets.
+ */
+
+/* { dg-do compile } */
+/* { dg-options "-O0 -gbtf -dA" } */
+
+/* Check for 8 BTF_KIND_INT types.  */
+/* { dg-final { scan-assembler-times "\[\t \]0x1000000\[\t 
\]+\[^\n\]*btt_info" 8 } } */
+
+/* Check the signed/char flags, but not bit size. */
+/* { dg-final { scan-assembler-times "\[\t \]0x10000..\[\t 
\]+\[^\n\]*bti_encoding" 3 } } */
+/* { dg-final { scan-assembler-times "\[\t \]0x20000..\[\t 
\]+\[^\n\]*bti_encoding" 1 } } */
+/* { dg-final { scan-assembler-times "\[\t \]0x30000..\[\t 
\]+\[^\n\]*bti_encoding" 1 } } */
+
+/* Check that there is a string entry for each type name.  */
+/* { dg-final { scan-assembler-times "ascii \"unsigned char.0\"\[\t 
\]+\[^\n\]*btf_string" 1 } } */
+/* { dg-final { scan-assembler-times "ascii \"signed char.0\"\[\t 
\]+\[^\n\]*btf_string" 1 } } */
+/* { dg-final { scan-assembler-times "ascii \"short unsigned int.0\"\[\t 
\]+\[^\n\]*btf_string" 1 } } */
+/* { dg-final { scan-assembler-times "ascii \"short int.0\"\[\t 
\]+\[^\n\]*btf_string" 1 } } */
+/* { dg-final { scan-assembler-times "ascii \"unsigned int.0\"\[\t 
\]+\[^\n\]*btf_string" 1 } } */
+/* { dg-final { scan-assembler-times "ascii \"int.0\"\[\t 
\]+\[^\n\]*btf_string" 1 } } */
+/* { dg-final { scan-assembler-times "ascii \"long unsigned int.0\"\[\t 
\]+\[^\n\]*btf_string" 1 } } */
+/* { dg-final { scan-assembler-times "ascii \"long int.0\"\[\t 
\]+\[^\n\]*btf_string" 1 } } */
+
+unsigned char a = 11;
+signed char b = -22;
+
+unsigned short c = 33;
+signed short d = 44;
+
+unsigned int e = 55;
+signed int f = -66;
+
+unsigned long int g = 77;
+signed long int h = 88;
diff --git a/gcc/testsuite/gcc.dg/debug/btf/btf-pointers-1.c 
b/gcc/testsuite/gcc.dg/debug/btf/btf-pointers-1.c
new file mode 100644
index 00000000000..a14ac0f89b2
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/debug/btf/btf-pointers-1.c
@@ -0,0 +1,25 @@
+/* Test BTF generation for pointer types.
+
+   Two pointer types are expected:
+    - int *
+    - struct st *
+   */
+
+/* { dg-do compile } */
+/* { dg-options "-O0 -gbtf -dA" } */
+
+/* { dg-final { scan-assembler-times "\[\t \]0x2000000\[\t 
\]+\[^\n\]*btt_info" 2 } } */
+/* { dg-final { scan-assembler-times "ascii \"int.0\"\[\t 
\]+\[^\n\]*btf_string" 1 } } */
+/* { dg-final { scan-assembler-times "ascii \"st.0\"\[\t 
\]+\[^\n\]*btf_string" 1 } } */
+
+int foo = 10;
+int *pfoo = &foo;
+
+struct st
+{
+  int a;
+  int *pb;
+  struct st * next;
+};
+
+struct st * bar;
diff --git a/gcc/testsuite/gcc.dg/debug/btf/btf-pointers-2.c 
b/gcc/testsuite/gcc.dg/debug/btf/btf-pointers-2.c
new file mode 100644
index 00000000000..c77b224d711
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/debug/btf/btf-pointers-2.c
@@ -0,0 +1,13 @@
+/* Test BTF generation for pointers to void.
+
+   In this test, we expect that the pointer references type ID 0, the reserved
+   void typeid, and that no intermediate type is generated for void. */
+
+/* { dg-do compile } */
+/* { dg-options "-O0 -gbtf -dA" } */
+
+/* { dg-final { scan-assembler-times "\[\t \]0x2000000\[\t 
\]+\[^\n\]*btt_info" 1 } } */
+
+/* { dg-final { scan-assembler-times "\[\t \]0x1000000\[\t 
\]+\[^\n\]*btt_info" 0 } } */
+
+void *ptr;
diff --git a/gcc/testsuite/gcc.dg/debug/btf/btf-struct-1.c 
b/gcc/testsuite/gcc.dg/debug/btf/btf-struct-1.c
new file mode 100644
index 00000000000..bc3281437c9
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/debug/btf/btf-struct-1.c
@@ -0,0 +1,22 @@
+/* Test BTF generation of struct type.
+
+   Two BTF_KIND_STRUCT records are expected.
+   - struct foo with 3 members
+   - struct data with 2 members  */
+
+/* { dg-do compile } */
+/* { dg-options "-O0 -gbtf -dA" } */
+
+/* { dg-final { scan-assembler-times "\[\t \]0x4000003\[\t 
\]+\[^\n\]*btt_info" 1 } } */
+/* { dg-final { scan-assembler-times "\[\t \]0x4000002\[\t 
\]+\[^\n\]*btt_info" 1 } } */
+/* { dg-final { scan-assembler-times "btm_name" 5 } } */
+
+struct foo
+{
+  int after;
+  int before;
+  struct {
+    unsigned short n_valid;
+    int set[10];
+  } data;
+} my_foo;
diff --git a/gcc/testsuite/gcc.dg/debug/btf/btf-struct-2.c 
b/gcc/testsuite/gcc.dg/debug/btf/btf-struct-2.c
new file mode 100644
index 00000000000..24514fcb31e
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/debug/btf/btf-struct-2.c
@@ -0,0 +1,19 @@
+/* Test BTF generation for struct type with a member which refers to an
+   unsupported type.
+
+   BTF does not support floating point types (among other things). When
+   generating BTF for a struct (or union) type, members which refer to
+   unsupported types should be skipped.  */
+
+/* { dg-do compile } */
+/* { dg-options "-O0 -gbtf -dA" } */
+
+/* Expect a struct with only 2 members - 'f' should not be present.  */
+/* { dg-final { scan-assembler-times "\[\t \]0x4000002\[\t 
\]+\[^\n\]*btt_info" 1 } } */
+
+struct with_float
+{
+  int a;
+  float f;
+  char c;
+} instance;
diff --git a/gcc/testsuite/gcc.dg/debug/btf/btf-typedef-1.c 
b/gcc/testsuite/gcc.dg/debug/btf/btf-typedef-1.c
new file mode 100644
index 00000000000..472cc63f600
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/debug/btf/btf-typedef-1.c
@@ -0,0 +1,82 @@
+/* Test BTF generation for BTF_KIND_TYPEDEF records.
+
+   7 typedef records are expected. We expect the following types (among 
others):
+     [1] int 'int' size=4 offset=0 bits=32 SIGNED
+     [2] typedef 'my_int' type=1
+     [3] typedef 'foo_int' type=1
+     [4] typedef 'bar_int' type=1
+     ..
+     [6] typedef 'CBAR' type=5
+     ..
+     [8] typedef 'CBARP' type=7
+     [9] struct '_node' size=16
+     ..
+     [11] typedef 'node_t' type=9
+     [12] struct '_arena'
+     ..
+     [15] typedef 'arena_t' type=12
+     [16] var 'a' type=2 linkage=1 (global)
+     [17] var 'suitcase' type=15 linkage=1 (global)
+     [18] var 'b' type=3 linkage=1 (global)
+     [19] var 'c' type=4 linkage=1 (global)
+     [20] var 'd' type=11 linkage=1 (global)
+     [21] var 'destination' type=6 linkage=1 (global)
+     [22] var 'ticket' type=8 linkage=1 (global)
+
+   Note that the order of the variables is not guaranteed, so we do not check
+   particular variables have exactly the right typedef. Instead, we check:
+   1. 7 typedef records are generated, along with the correct strings for them.
+   2. There is one variable pointing to each typedef.  */
+
+/* { dg-do compile } */
+/* { dg-options "-O0 -gbtf -dA" } */
+
+/* { dg-final { scan-assembler-times "\[\t \]0x8000000\[\t 
\]+\[^\n\]*btt_info" 7 } } */
+
+/* { dg-final { scan-assembler-times "ascii \"my_int.0\"\[\t 
\]+\[^\n\]*btf_string" 1 } } */
+/* { dg-final { scan-assembler-times "ascii \"foo_int.0\"\[\t 
\]+\[^\n\]*btf_string" 1 } } */
+/* { dg-final { scan-assembler-times "ascii \"bar_int.0\"\[\t 
\]+\[^\n\]*btf_string" 1 } } */
+/* { dg-final { scan-assembler-times "ascii \"CBAR.0\"\[\t 
\]+\[^\n\]*btf_string" 1 } } */
+/* { dg-final { scan-assembler-times "ascii \"CBARP.0\"\[\t 
\]+\[^\n\]*btf_string" 1 } } */
+/* { dg-final { scan-assembler-times "ascii \"node_t.0\"\[\t 
\]+\[^\n\]*btf_string" 1 } } */
+/* { dg-final { scan-assembler-times "ascii \"arena_t.0\"\[\t 
\]+\[^\n\]*btf_string" 1 } } */
+
+/* { dg-final { scan-assembler-times "\[\t \]0x2\[\t \]+\[^\n\]*btv_type" 1 } 
} */
+/* { dg-final { scan-assembler-times "\[\t \]0x3\[\t \]+\[^\n\]*btv_type" 1 } 
} */
+/* { dg-final { scan-assembler-times "\[\t \]0x4\[\t \]+\[^\n\]*btv_type" 1 } 
} */
+/* { dg-final { scan-assembler-times "\[\t \]0x6\[\t \]+\[^\n\]*btv_type" 1 } 
} */
+/* { dg-final { scan-assembler-times "\[\t \]0x8\[\t \]+\[^\n\]*btv_type" 1 } 
} */
+/* { dg-final { scan-assembler-times "\[\t \]0xb\[\t \]+\[^\n\]*btv_type" 1 } 
} */
+/* { dg-final { scan-assembler-times "\[\t \]0xf\[\t \]+\[^\n\]*btv_type" 1 } 
} */
+
+typedef int my_int;
+typedef int foo_int;
+typedef int bar_int;
+
+typedef const bar_int CBAR;
+typedef const bar_int * CBARP;
+
+typedef struct _node
+{
+  foo_int name_off;
+  bar_int info;
+  struct _node * next;
+} node_t;
+
+
+typedef struct _arena
+{
+  node_t nodes[16];
+  my_int vardata;
+  bar_int flags;
+} arena_t;
+
+my_int a;
+foo_int b;
+bar_int c;
+node_t d;
+
+CBAR destination;
+CBARP ticket = &destination;
+
+arena_t suitcase;
diff --git a/gcc/testsuite/gcc.dg/debug/btf/btf-union-1.c 
b/gcc/testsuite/gcc.dg/debug/btf/btf-union-1.c
new file mode 100644
index 00000000000..d66843717b3
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/debug/btf/btf-union-1.c
@@ -0,0 +1,16 @@
+/* Test BTF generation for union type.  */
+
+/* { dg-do compile )  */
+/* { dg-options "-O0 -gbtf -dA" } */
+
+/* One union type with 4 members */
+/* { dg-final { scan-assembler-times "\[\t \]0x5000004\[\t 
\]+\[^\n\]*btt_info" 1 } } */
+/* { dg-final { scan-assembler-times "btm_name" 4 } } */
+
+union onion
+{
+  int redness;
+  char *name;
+  unsigned short freshness;
+  unsigned short flavor;
+} my_onion;
diff --git a/gcc/testsuite/gcc.dg/debug/btf/btf-variables-1.c 
b/gcc/testsuite/gcc.dg/debug/btf/btf-variables-1.c
new file mode 100644
index 00000000000..a79ed1d53b7
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/debug/btf/btf-variables-1.c
@@ -0,0 +1,33 @@
+/* BTF generation for variables. */
+
+/* { dg-do compile } */
+/* { dg-options "-O0 -gbtf -dA" } */
+
+/* We expect 6 variables */
+/* { dg-final { scan-assembler-times "\[\t \]0xe000000\[\t 
\]+\[^\n\]*btv_info" 6 } } */
+
+unsigned int x1;
+
+struct st
+{
+  int a;
+  int b;
+};
+
+union {
+  long int value;
+  struct st * pointer;
+} bar;
+
</cut>
_______________________________________________
linaro-toolchain mailing list
linaro-toolchain@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/linaro-toolchain

Reply via email to