http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51941

             Bug #: 51941
           Summary: FAIL: g++.dg/debug/dwarf2/nested-3.C scan-assembler
    Classification: Unclassified
           Product: gcc
           Version: 4.7.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: testsuite
        AssignedTo: unassig...@gcc.gnu.org
        ReportedBy: domi...@lps.ens.fr
                CC: ccout...@google.com, do...@gcc.gnu.org,
                    ia...@gcc.gnu.org, ja...@redhat.com
              Host: x86_64-apple-darwin10
            Target: x86_64-apple-darwin10
             Build: x86_64-apple-darwin10


The test g++.dg/debug/dwarf2/nested-3.C fails on x86_64-apple-darwin10

FAIL: g++.dg/debug/dwarf2/nested-3.C scan-assembler [^\\n\\r]*\\\\(DIE
\\\\(0x([0-9a-f]+)\\\\)
DW_TAG_namespace\\\\)[\\n\\r]+[^\\n\\r]*"thread[^\\n\\r]+[\\n\\r]+([^\\n\\r]*[\\n\\r]+)+[^\\n\\r]*\\\\(DIE
\\\\(0x([0-9a-f]+)\\\\)
DW_TAG_class_type\\\\)[\\n\\r]+[^\\n\\r]*"Executor[^\\n\\r]+[\\n\\r]+[^\\n\\r]*DW_AT_declaration[\\n\\r]+[^\\n\\r]*\\\\(DIE[^\\n\\r]*DW_TAG_subprogram\\\\)[\\n\\r]+([^\\n\\r]*[\\n\\r]+)+[^\\n\\r]*"CurrentExecutor[^\\n\\r]+[\\n\\r]+([^\\n\\r]*[\\n\\r]+)+([^\\n\\r]*[\\n\\r]+)+[^\\n\\r]*end
of children of DIE 0x\\\\3[\\n\\r]+[^\\n\\r]*end of children of DIE
0x\\\\1[\\n\\r]+
FAIL: g++.dg/debug/dwarf2/nested-3.C scan-assembler [^\\n\\r]*\\\\(DIE
\\\\(0x([0-9a-f]+)\\\\)
DW_TAG_namespace\\\\)[\\n\\r]+[^\\n\\r]*"thread[^\\n\\r]+[\\n\\r]+([^\\n\\r]*[\\n\\r]+)+[^\\n\\r]*\\\\(DIE
\\\\(0x([0-9a-f]+)\\\\)
DW_TAG_class_type\\\\)[\\n\\r]+[^\\n\\r]*"Executor[^\\n\\r]+[\\n\\r]+[^\\n\\r]*DW_AT_declaration[\\n\\r]+[^\\n\\r]*\\\\(DIE[^\\n\\r]*DW_TAG_subprogram\\\\)[\\n\\r]+([^\\n\\r]*[\\n\\r]+)+[^\\n\\r]*"CurrentExecutor[^\\n\\r]+[\\n\\r]+([^\\n\\r]*[\\n\\r]+)+([^\\n\\r]*[\\n\\r]+)+[^\\n\\r]*end
of children of DIE 0x\\\\3[\\n\\r]+[^\\n\\r]*end of children of DIE
0x\\\\1[\\n\\r]+

IIUC the regexp, it tries to match the following part of the assembler

Letext0:
    .section .gnu.linkonce.wt.a547508193f2f296
    .long   0x57    # Length of Compilation Unit Info
    .word   0x4     # DWARF version number
    .set L$set$24,Ldebug_abbrev0-Lsection__debug_abbrev
    .long L$set$24  # Offset Into Abbrev. Section
    .byte   0x8     # Pointer Size (in bytes)
    .byte   0xa5    # Type Signature
    .byte   0x47
    .byte   0x50
    .byte   0x81
    .byte   0x93
    .byte   0xf2
    .byte   0xf2
    .byte   0x96
    .long   0x37    # Offset to Type DIE
    .byte   0x1     # uleb128 0x1; (DIE (0x17) DW_TAG_type_unit)
    .byte   0x4     # DW_AT_language
    .byte   0xdf    # DW_AT_GNU_odr_signature
    .byte   0xd3
    .byte   0xca
    .byte   0x9a
    .byte   0x1e
    .byte   0x9d
    .byte   0xca
    .byte   0x29
    .set L$set$25,Ldebug_line0-Lsection__debug_line
    .long L$set$25  # DW_AT_stmt_list
    .byte   0x2     # uleb128 0x2; (DIE (0x25) DW_TAG_namespace)
    .ascii "thread\0"       # DW_AT_name
            # DW_AT_declaration
    .long   0x37    # DW_AT_sibling
    .byte   0x3     # uleb128 0x3; (DIE (0x31) DW_TAG_class_type)
    .set L$set$26,LASF0-Lsection__debug_str
    .long L$set$26  # DW_AT_name: "Executor"
            # DW_AT_declaration
    .byte   0       # end of children of DIE 0x25
    .byte   0x4     # uleb128 0x4; (DIE (0x37) DW_TAG_class_type)
    .byte   0x1     # DW_AT_byte_size
    .byte   0x1     # DW_AT_decl_file
(/opt/gcc/work/gcc/testsuite/g++.dg/debug/dwarf2/nested-3.C)
    .byte   0x6     # DW_AT_decl_line
    .long   0x31    # DW_AT_specification
    .long   0x54    # DW_AT_sibling
    .byte   0x5     # uleb128 0x5; (DIE (0x43) DW_TAG_subprogram)
            # DW_AT_external
    .set L$set$27,LASF1-Lsection__debug_str
    .long L$set$27  # DW_AT_name: "CurrentExecutor"
    .byte   0x1     # DW_AT_decl_file
(/opt/gcc/work/gcc/testsuite/g++.dg/debug/dwarf2/nested-3.C)
    .byte   0x8     # DW_AT_decl_line
    .set L$set$28,LASF2-Lsection__debug_str
    .long L$set$28  # DW_AT_linkage_name:
"_ZN6thread8Executor15CurrentExecutorEv"
    .long   0x54    # DW_AT_type
    .byte   0x1     # DW_AT_accessibility
            # DW_AT_declaration
    .byte   0       # end of children of DIE 0x37
    .byte   0x6     # uleb128 0x6; (DIE (0x54) DW_TAG_pointer_type)
    .byte   0x8     # DW_AT_byte_size
    .long   0x37    # DW_AT_type
    .byte   0       # end of children of DIE 0x17
    .section __DWARF,__debug_info,regular,debug

Since there are extra lines on x86_64-apple-darwin10 between the two "end of
children of DIE" lines, the regexp cannot work. In addition the nesting seems
quite different of the expected one.

In top of that, it is my understanding that darwin does not support dwarf-4 and
is restricted to -gstrict-dwarf (all my knowledge comes from pr41405). So the
test should probably skipped on darwin(?).

Reply via email to