[GHC] #15207: bad dwarf frame in stgRun.c when compiled with with gcc on mac and assembled by as/gcc/clang (aka apple clang assembler)

GHC ghc-devs at haskell.org
Thu May 31 18:57:32 UTC 2018


#15207: bad dwarf frame in stgRun.c when compiled with with gcc on mac and
assembled by as/gcc/clang (aka apple clang assembler)
-------------------------------------+-------------------------------------
        Reporter:  carter            |                Owner:  (none)
            Type:  bug               |               Status:  new
        Priority:  normal            |            Milestone:  8.6.1
       Component:  Runtime System    |              Version:  8.4.3
      Resolution:                    |             Keywords:
Operating System:  MacOS X           |         Architecture:
                                     |  Unknown/Multiple
 Type of failure:  None/Unknown      |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by carter):

 here you go

 {{{

         .section        __TEXT,__text,regular,pure_instructions
         .macosx_version_min 10, 13
         .globl  _hello                  ## -- Begin function hello
         .p2align        4, 0x90
 _hello:                                 ## @hello
 Lfunc_begin0:
         .file   1 "test.c"
         .loc    1 3 0                   ## test.c:3:0
         .cfi_startproc
 ## BB#0:
         pushq   %rbp
 Lcfi0:
         .cfi_def_cfa_offset 16
 Lcfi1:
         .cfi_offset %rbp, -16
         movq    %rsp, %rbp
 Lcfi2:
         .cfi_def_cfa_register %rbp
         subq    $32, %rsp
         leaq    L_.str(%rip), %rax
         movl    $42, %esi
         movl    $12, %edx
         movl    %edi, -4(%rbp)
         movsd   %xmm0, -16(%rbp)
 Ltmp0:
         .loc    1 4 5 prologue_end      ## test.c:4:5
         movq    %rax, %rdi
         movb    $0, %al
         callq   _printf
         .loc    1 5 12                  ## test.c:5:12
         cvtsi2sdl       -4(%rbp), %xmm0
         .loc    1 5 13 is_stmt 0        ## test.c:5:13
         mulsd   -16(%rbp), %xmm0
         .loc    1 5 12                  ## test.c:5:12
         cvttsd2si       %xmm0, %edx
         .loc    1 5 5                   ## test.c:5:5
         movl    %eax, -20(%rbp)         ## 4-byte Spill
         movl    %edx, %eax
         addq    $32, %rsp
         popq    %rbp
         retq
 Ltmp1:
 Lfunc_end0:
         .cfi_endproc
                                         ## -- End function
         .section        __TEXT,__cstring,cstring_literals
 L_.str:                                 ## @.str
         .asciz  "hello %d %d"

         .section        __DWARF,__debug_str,regular,debug
 Linfo_string:
         .asciz  "Apple LLVM version 9.1.0 (clang-902.0.39.1)" ## string
 offset=0
         .asciz  "test.c"                ## string offset=44
         .asciz  "/Users/carter/WorkSpace/projects/active/ghc-head-may2018
 -clang-sad" ## string offset=51
         .asciz  "hello"                 ## string offset=118
         .asciz  "int"                   ## string offset=124
         .asciz  "a"                     ## string offset=128
         .asciz  "b"                     ## string offset=130
         .asciz  "double"                ## string offset=132
         .section        __DWARF,__debug_abbrev,regular,debug
 Lsection_abbrev:
         .byte   1                       ## Abbreviation Code
         .byte   17                      ## DW_TAG_compile_unit
         .byte   1                       ## DW_CHILDREN_yes
         .byte   37                      ## DW_AT_producer
         .byte   14                      ## DW_FORM_strp
         .byte   19                      ## DW_AT_language
         .byte   5                       ## DW_FORM_data2
         .byte   3                       ## DW_AT_name
         .byte   14                      ## DW_FORM_strp
         .byte   16                      ## DW_AT_stmt_list
         .byte   23                      ## DW_FORM_sec_offset
         .byte   27                      ## DW_AT_comp_dir
         .byte   14                      ## DW_FORM_strp
         .byte   17                      ## DW_AT_low_pc
         .byte   1                       ## DW_FORM_addr
         .byte   18                      ## DW_AT_high_pc
         .byte   6                       ## DW_FORM_data4
         .byte   0                       ## EOM(1)
         .byte   0                       ## EOM(2)
         .byte   2                       ## Abbreviation Code
         .byte   46                      ## DW_TAG_subprogram
         .byte   1                       ## DW_CHILDREN_yes
         .byte   17                      ## DW_AT_low_pc
         .byte   1                       ## DW_FORM_addr
         .byte   18                      ## DW_AT_high_pc
         .byte   6                       ## DW_FORM_data4
         .byte   64                      ## DW_AT_frame_base
         .byte   24                      ## DW_FORM_exprloc
         .byte   3                       ## DW_AT_name
         .byte   14                      ## DW_FORM_strp
         .byte   58                      ## DW_AT_decl_file
         .byte   11                      ## DW_FORM_data1
         .byte   59                      ## DW_AT_decl_line
         .byte   11                      ## DW_FORM_data1
         .byte   39                      ## DW_AT_prototyped
         .byte   25                      ## DW_FORM_flag_present
         .byte   73                      ## DW_AT_type
         .byte   19                      ## DW_FORM_ref4
         .byte   63                      ## DW_AT_external
         .byte   25                      ## DW_FORM_flag_present
         .byte   0                       ## EOM(1)
         .byte   0                       ## EOM(2)
         .byte   3                       ## Abbreviation Code
         .byte   5                       ## DW_TAG_formal_parameter
         .byte   0                       ## DW_CHILDREN_no
         .byte   2                       ## DW_AT_location
         .byte   24                      ## DW_FORM_exprloc
         .byte   3                       ## DW_AT_name
         .byte   14                      ## DW_FORM_strp
         .byte   58                      ## DW_AT_decl_file
         .byte   11                      ## DW_FORM_data1
         .byte   59                      ## DW_AT_decl_line
         .byte   11                      ## DW_FORM_data1
         .byte   73                      ## DW_AT_type
         .byte   19                      ## DW_FORM_ref4
         .byte   0                       ## EOM(1)
         .byte   0                       ## EOM(2)
         .byte   4                       ## Abbreviation Code
         .byte   36                      ## DW_TAG_base_type
         .byte   0                       ## DW_CHILDREN_no
         .byte   3                       ## DW_AT_name
         .byte   14                      ## DW_FORM_strp
         .byte   62                      ## DW_AT_encoding
         .byte   11                      ## DW_FORM_data1
         .byte   11                      ## DW_AT_byte_size
         .byte   11                      ## DW_FORM_data1
         .byte   0                       ## EOM(1)
         .byte   0                       ## EOM(2)
         .byte   0                       ## EOM(3)
         .section        __DWARF,__debug_info,regular,debug
 Lsection_info:
 Lcu_begin0:
         .long   107                     ## Length of Unit
         .short  4                       ## DWARF version number
 Lset0 = Lsection_abbrev-Lsection_abbrev ## Offset Into Abbrev. Section
         .long   Lset0
         .byte   8                       ## Address Size (in bytes)
         .byte   1                       ## Abbrev [1] 0xb:0x64
 DW_TAG_compile_unit
         .long   0                       ## DW_AT_producer
         .short  12                      ## DW_AT_language
         .long   44                      ## DW_AT_name
 Lset1 = Lline_table_start0-Lsection_line ## DW_AT_stmt_list
         .long   Lset1
         .long   51                      ## DW_AT_comp_dir
         .quad   Lfunc_begin0            ## DW_AT_low_pc
 Lset2 = Lfunc_end0-Lfunc_begin0         ## DW_AT_high_pc
         .long   Lset2
         .byte   2                       ## Abbrev [2] 0x2a:0x36
 DW_TAG_subprogram
         .quad   Lfunc_begin0            ## DW_AT_low_pc
 Lset3 = Lfunc_end0-Lfunc_begin0         ## DW_AT_high_pc
         .long   Lset3
         .byte   1                       ## DW_AT_frame_base
         .byte   86
         .long   118                     ## DW_AT_name
         .byte   1                       ## DW_AT_decl_file
         .byte   3                       ## DW_AT_decl_line
                                         ## DW_AT_prototyped
         .long   96                      ## DW_AT_type
                                         ## DW_AT_external
         .byte   3                       ## Abbrev [3] 0x43:0xe
 DW_TAG_formal_parameter
         .byte   2                       ## DW_AT_location
         .byte   145
         .byte   124
         .long   128                     ## DW_AT_name
         .byte   1                       ## DW_AT_decl_file
         .byte   3                       ## DW_AT_decl_line
         .long   96                      ## DW_AT_type
         .byte   3                       ## Abbrev [3] 0x51:0xe
 DW_TAG_formal_parameter
         .byte   2                       ## DW_AT_location
         .byte   145
         .byte   112
         .long   130                     ## DW_AT_name
         .byte   1                       ## DW_AT_decl_file
         .byte   3                       ## DW_AT_decl_line
         .long   103                     ## DW_AT_type
         .byte   0                       ## End Of Children Mark
         .byte   4                       ## Abbrev [4] 0x60:0x7
 DW_TAG_base_type
         .long   124                     ## DW_AT_name
         .byte   5                       ## DW_AT_encoding
         .byte   4                       ## DW_AT_byte_size
         .byte   4                       ## Abbrev [4] 0x67:0x7
 DW_TAG_base_type
         .long   132                     ## DW_AT_name
         .byte   4                       ## DW_AT_encoding
         .byte   8                       ## DW_AT_byte_size
         .byte   0                       ## End Of Children Mark
         .section        __DWARF,__debug_ranges,regular,debug
 Ldebug_range:
         .section        __DWARF,__debug_macinfo,regular,debug
 Ldebug_macinfo:
 Lcu_macro_begin0:
         .byte   0                       ## End Of Macro List Mark
         .section        __DWARF,__apple_names,regular,debug
 Lnames_begin:
         .long   1212240712              ## Header Magic
         .short  1                       ## Header Version
         .short  0                       ## Header Hash Function
         .long   1                       ## Header Bucket Count
         .long   1                       ## Header Hash Count
         .long   12                      ## Header Data Length
         .long   0                       ## HeaderData Die Offset Base
         .long   1                       ## HeaderData Atom Count
         .short  1                       ## DW_ATOM_die_offset
         .short  6                       ## DW_FORM_data4
         .long   0                       ## Bucket 0
         .long   261238937               ## Hash in Bucket 0
         .long   LNames0-Lnames_begin    ## Offset in Bucket 0
 LNames0:
         .long   118                     ## hello
         .long   1                       ## Num DIEs
         .long   42
         .long   0
         .section        __DWARF,__apple_objc,regular,debug
 Lobjc_begin:
         .long   1212240712              ## Header Magic
         .short  1                       ## Header Version
         .short  0                       ## Header Hash Function
         .long   1                       ## Header Bucket Count
         .long   0                       ## Header Hash Count
         .long   12                      ## Header Data Length
         .long   0                       ## HeaderData Die Offset Base
         .long   1                       ## HeaderData Atom Count
         .short  1                       ## DW_ATOM_die_offset
         .short  6                       ## DW_FORM_data4
         .long   -1                      ## Bucket 0
         .section        __DWARF,__apple_namespac,regular,debug
 Lnamespac_begin:
         .long   1212240712              ## Header Magic
         .short  1                       ## Header Version
         .short  0                       ## Header Hash Function
         .long   1                       ## Header Bucket Count
         .long   0                       ## Header Hash Count
         .long   12                      ## Header Data Length
         .long   0                       ## HeaderData Die Offset Base
         .long   1                       ## HeaderData Atom Count
         .short  1                       ## DW_ATOM_die_offset
         .short  6                       ## DW_FORM_data4
         .long   -1                      ## Bucket 0
         .section        __DWARF,__apple_types,regular,debug
 Ltypes_begin:
         .long   1212240712              ## Header Magic
         .short  1                       ## Header Version
         .short  0                       ## Header Hash Function
         .long   2                       ## Header Bucket Count
         .long   2                       ## Header Hash Count
         .long   20                      ## Header Data Length
         .long   0                       ## HeaderData Die Offset Base
         .long   3                       ## HeaderData Atom Count
         .short  1                       ## DW_ATOM_die_offset
         .short  6                       ## DW_FORM_data4
         .short  3                       ## DW_ATOM_die_tag
         .short  5                       ## DW_FORM_data2
         .short  4                       ## DW_ATOM_type_flags
         .short  11                      ## DW_FORM_data1
         .long   0                       ## Bucket 0
         .long   -1                      ## Bucket 1
         .long   193495088               ## Hash in Bucket 0
         .long   -113419488              ## Hash in Bucket 0
         .long   Ltypes0-Ltypes_begin    ## Offset in Bucket 0
         .long   Ltypes1-Ltypes_begin    ## Offset in Bucket 0
 Ltypes0:
         .long   124                     ## int
         .long   1                       ## Num DIEs
         .long   96
         .short  36
         .byte   0
         .long   0
 Ltypes1:
         .long   132                     ## double
         .long   1                       ## Num DIEs
         .long   103
         .short  36
         .byte   0
         .long   0

 .subsections_via_symbols
         .section        __DWARF,__debug_line,regular,debug
 Lsection_line:
 Lline_table_start0:

 }}}

-- 
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/15207#comment:7>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list