default:
break;
}
- // In DWARF3 DW_FORM_data4 and DW_FORM_data8 served also as a section offset.
- // Don't check for DWARF version here, as some producers may still do this
- // by mistake. Also accept DW_FORM_[line_]strp since these are
- // .debug_[line_]str section offsets.
- return (Form == DW_FORM_data4 || Form == DW_FORM_data8 ||
- Form == DW_FORM_strp || Form == DW_FORM_line_strp) &&
- FC == FC_SectionOffset;
+
+ if (FC == FC_SectionOffset) {
+ if (Form == DW_FORM_strp || Form == DW_FORM_line_strp)
+ return true;
+ // In DWARF3 DW_FORM_data4 and DW_FORM_data8 served also as a section
+ // offset. If we don't have a DWARFUnit, default to the old behavior.
+ if (Form == DW_FORM_data4 || Form == DW_FORM_data8)
+ return !U || U->getVersion() <= 3;
+ }
+
+ return false;
}
bool DWARFFormValue::extractValue(const DWARFDataExtractor &Data,
--- /dev/null
+# Source:
+# struct e {
+# char f[16384];
+# char g;
+# };
+# e foo() {
+# auto E = new e;
+# return *E;
+# }
+# Compile with:
+# clang -O2 -gdwarf-2 -S a.cpp -o a2.s
+
+# RUN: llvm-mc %s -filetype obj -triple x86_64-apple-darwin -o %t.o
+# RUN: llvm-dwarfdump -debug-info -name g %t.o | FileCheck %s
+
+# CHECK: DW_TAG_member
+# CHECK: DW_AT_name ("g")
+# CHECK: DW_AT_data_member_location (DW_OP_plus_uconst 0x4000)
+
+ .section __TEXT,__text,regular,pure_instructions
+ .macosx_version_min 10, 14
+ .globl __Z3foov ## -- Begin function _Z3foov
+ .p2align 4, 0x90
+__Z3foov: ## @_Z3foov
+Lfunc_begin0:
+ .file 1 "/private/tmp" "a.cpp"
+ .loc 1 5 0 ## a.cpp:5:0
+ .cfi_startproc
+## %bb.0: ## %entry
+ pushq %rbp
+ .cfi_def_cfa_offset 16
+ .cfi_offset %rbp, -16
+ movq %rsp, %rbp
+ .cfi_def_cfa_register %rbp
+ pushq %rbx
+ pushq %rax
+ .cfi_offset %rbx, -24
+ movq %rdi, %rbx
+Ltmp0:
+ .loc 1 6 12 prologue_end ## a.cpp:6:12
+ movl $16385, %edi ## imm = 0x4001
+ callq __Znwm
+Ltmp1:
+ ##DEBUG_VALUE: foo:E <- $rax
+ .loc 1 7 10 ## a.cpp:7:10
+ movl $16385, %edx ## imm = 0x4001
+ movq %rbx, %rdi
+ movq %rax, %rsi
+ callq _memcpy
+Ltmp2:
+ .loc 1 8 1 ## a.cpp:8:1
+ movq %rbx, %rax
+ addq $8, %rsp
+ popq %rbx
+ popq %rbp
+ retq
+Ltmp3:
+Lfunc_end0:
+ .cfi_endproc
+ ## -- End function
+ .section __DWARF,__debug_str,regular,debug
+Linfo_string:
+ .asciz "clang version 9.0.0 (git@github.com:llvm/llvm-project.git 10de39548976ae224709acdc1c337e33cf12f3c0)" ## string offset=0
+ .asciz "a.cpp" ## string offset=100
+ .asciz "/private/tmp" ## string offset=106
+ .asciz "foo" ## string offset=119
+ .asciz "_Z3foov" ## string offset=123
+ .asciz "e" ## string offset=131
+ .asciz "f" ## string offset=133
+ .asciz "char" ## string offset=135
+ .asciz "__ARRAY_SIZE_TYPE__" ## string offset=140
+ .asciz "g" ## string offset=160
+ .asciz "E" ## string offset=162
+ .section __DWARF,__debug_loc,regular,debug
+Lsection_debug_loc:
+Ldebug_loc0:
+.set Lset0, Ltmp1-Lfunc_begin0
+ .quad Lset0
+.set Lset1, Ltmp2-Lfunc_begin0
+ .quad Lset1
+ .short 1 ## Loc expr size
+ .byte 80 ## DW_OP_reg0
+ .quad 0
+ .quad 0
+ .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 6 ## DW_FORM_data4
+ .byte 27 ## DW_AT_comp_dir
+ .byte 14 ## DW_FORM_strp
+ .ascii "\264B" ## DW_AT_GNU_pubnames
+ .byte 12 ## DW_FORM_flag
+ .ascii "\341\177" ## DW_AT_APPLE_optimized
+ .byte 12 ## DW_FORM_flag
+ .byte 17 ## DW_AT_low_pc
+ .byte 1 ## DW_FORM_addr
+ .byte 18 ## DW_AT_high_pc
+ .byte 1 ## DW_FORM_addr
+ .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 1 ## DW_FORM_addr
+ .byte 64 ## DW_AT_frame_base
+ .byte 10 ## DW_FORM_block1
+ .ascii "\207@" ## DW_AT_MIPS_linkage_name
+ .byte 14 ## DW_FORM_strp
+ .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 63 ## DW_AT_external
+ .byte 12 ## DW_FORM_flag
+ .ascii "\341\177" ## DW_AT_APPLE_optimized
+ .byte 12 ## DW_FORM_flag
+ .byte 0 ## EOM(1)
+ .byte 0 ## EOM(2)
+ .byte 3 ## Abbreviation Code
+ .byte 52 ## DW_TAG_variable
+ .byte 0 ## DW_CHILDREN_no
+ .byte 2 ## DW_AT_location
+ .byte 6 ## DW_FORM_data4
+ .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 19 ## DW_TAG_structure_type
+ .byte 1 ## DW_CHILDREN_yes
+ .byte 54 ## DW_AT_calling_convention
+ .byte 11 ## DW_FORM_data1
+ .byte 3 ## DW_AT_name
+ .byte 14 ## DW_FORM_strp
+ .byte 11 ## DW_AT_byte_size
+ .byte 5 ## DW_FORM_data2
+ .byte 58 ## DW_AT_decl_file
+ .byte 11 ## DW_FORM_data1
+ .byte 59 ## DW_AT_decl_line
+ .byte 11 ## DW_FORM_data1
+ .byte 0 ## EOM(1)
+ .byte 0 ## EOM(2)
+ .byte 5 ## Abbreviation Code
+ .byte 13 ## DW_TAG_member
+ .byte 0 ## DW_CHILDREN_no
+ .byte 3 ## DW_AT_name
+ .byte 14 ## DW_FORM_strp
+ .byte 73 ## DW_AT_type
+ .byte 19 ## DW_FORM_ref4
+ .byte 58 ## DW_AT_decl_file
+ .byte 11 ## DW_FORM_data1
+ .byte 59 ## DW_AT_decl_line
+ .byte 11 ## DW_FORM_data1
+ .byte 56 ## DW_AT_data_member_location
+ .byte 10 ## DW_FORM_block1
+ .byte 0 ## EOM(1)
+ .byte 0 ## EOM(2)
+ .byte 6 ## Abbreviation Code
+ .byte 1 ## DW_TAG_array_type
+ .byte 1 ## DW_CHILDREN_yes
+ .byte 73 ## DW_AT_type
+ .byte 19 ## DW_FORM_ref4
+ .byte 0 ## EOM(1)
+ .byte 0 ## EOM(2)
+ .byte 7 ## Abbreviation Code
+ .byte 33 ## DW_TAG_subrange_type
+ .byte 0 ## DW_CHILDREN_no
+ .byte 73 ## DW_AT_type
+ .byte 19 ## DW_FORM_ref4
+ .byte 55 ## DW_AT_count
+ .byte 5 ## DW_FORM_data2
+ .byte 0 ## EOM(1)
+ .byte 0 ## EOM(2)
+ .byte 8 ## 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 9 ## Abbreviation Code
+ .byte 36 ## DW_TAG_base_type
+ .byte 0 ## DW_CHILDREN_no
+ .byte 3 ## DW_AT_name
+ .byte 14 ## DW_FORM_strp
+ .byte 11 ## DW_AT_byte_size
+ .byte 11 ## DW_FORM_data1
+ .byte 62 ## DW_AT_encoding
+ .byte 11 ## DW_FORM_data1
+ .byte 0 ## EOM(1)
+ .byte 0 ## EOM(2)
+ .byte 10 ## Abbreviation Code
+ .byte 15 ## DW_TAG_pointer_type
+ .byte 0 ## DW_CHILDREN_no
+ .byte 73 ## DW_AT_type
+ .byte 19 ## DW_FORM_ref4
+ .byte 0 ## EOM(1)
+ .byte 0 ## EOM(2)
+ .byte 0 ## EOM(3)
+ .section __DWARF,__debug_info,regular,debug
+Lsection_info:
+Lcu_begin0:
+.set Lset2, Ldebug_info_end0-Ldebug_info_start0 ## Length of Unit
+ .long Lset2
+Ldebug_info_start0:
+ .short 2 ## DWARF version number
+.set Lset3, Lsection_abbrev-Lsection_abbrev ## Offset Into Abbrev. Section
+ .long Lset3
+ .byte 8 ## Address Size (in bytes)
+ .byte 1 ## Abbrev [1] 0xb:0xa2 DW_TAG_compile_unit
+ .long 0 ## DW_AT_producer
+ .short 4 ## DW_AT_language
+ .long 100 ## DW_AT_name
+.set Lset4, Lline_table_start0-Lsection_line ## DW_AT_stmt_list
+ .long Lset4
+ .long 106 ## DW_AT_comp_dir
+ .byte 1 ## DW_AT_GNU_pubnames
+ .byte 1 ## DW_AT_APPLE_optimized
+ .quad Lfunc_begin0 ## DW_AT_low_pc
+ .quad Lfunc_end0 ## DW_AT_high_pc
+ .byte 2 ## Abbrev [2] 0x30:0x33 DW_TAG_subprogram
+ .quad Lfunc_begin0 ## DW_AT_low_pc
+ .quad Lfunc_end0 ## DW_AT_high_pc
+ .byte 1 ## DW_AT_frame_base
+ .byte 86
+ .long 123 ## DW_AT_MIPS_linkage_name
+ .long 119 ## DW_AT_name
+ .byte 1 ## DW_AT_decl_file
+ .byte 5 ## DW_AT_decl_line
+ .long 99 ## DW_AT_type
+ .byte 1 ## DW_AT_external
+ .byte 1 ## DW_AT_APPLE_optimized
+ .byte 3 ## Abbrev [3] 0x53:0xf DW_TAG_variable
+.set Lset5, Ldebug_loc0-Lsection_debug_loc ## DW_AT_location
+ .long Lset5
+ .long 162 ## DW_AT_name
+ .byte 1 ## DW_AT_decl_file
+ .byte 6 ## DW_AT_decl_line
+ .long 167 ## DW_AT_type
+ .byte 0 ## End Of Children Mark
+ .byte 4 ## Abbrev [4] 0x63:0x29 DW_TAG_structure_type
+ .byte 5 ## DW_AT_calling_convention
+ .long 131 ## DW_AT_name
+ .short 16385 ## DW_AT_byte_size
+ .byte 1 ## DW_AT_decl_file
+ .byte 1 ## DW_AT_decl_line
+ .byte 5 ## Abbrev [5] 0x6d:0xe DW_TAG_member
+ .long 133 ## DW_AT_name
+ .long 140 ## DW_AT_type
+ .byte 1 ## DW_AT_decl_file
+ .byte 2 ## DW_AT_decl_line
+ .byte 2 ## DW_AT_data_member_location
+ .byte 35
+ .byte 0
+ .byte 5 ## Abbrev [5] 0x7b:0x10 DW_TAG_member
+ .long 160 ## DW_AT_name
+ .long 153 ## DW_AT_type
+ .byte 1 ## DW_AT_decl_file
+ .byte 3 ## DW_AT_decl_line
+ .byte 4 ## DW_AT_data_member_location
+ .byte 35
+ .ascii "\200\200\001"
+ .byte 0 ## End Of Children Mark
+ .byte 6 ## Abbrev [6] 0x8c:0xd DW_TAG_array_type
+ .long 153 ## DW_AT_type
+ .byte 7 ## Abbrev [7] 0x91:0x7 DW_TAG_subrange_type
+ .long 160 ## DW_AT_type
+ .short 16384 ## DW_AT_count
+ .byte 0 ## End Of Children Mark
+ .byte 8 ## Abbrev [8] 0x99:0x7 DW_TAG_base_type
+ .long 135 ## DW_AT_name
+ .byte 6 ## DW_AT_encoding
+ .byte 1 ## DW_AT_byte_size
+ .byte 9 ## Abbrev [9] 0xa0:0x7 DW_TAG_base_type
+ .long 140 ## DW_AT_name
+ .byte 8 ## DW_AT_byte_size
+ .byte 7 ## DW_AT_encoding
+ .byte 10 ## Abbrev [10] 0xa7:0x5 DW_TAG_pointer_type
+ .long 99 ## DW_AT_type
+ .byte 0 ## End Of Children Mark
+Ldebug_info_end0:
+ .section __DWARF,__debug_macinfo,regular,debug
+Ldebug_macinfo:
+ .byte 0 ## End Of Macro List Mark
+
+.subsections_via_symbols
+ .section __DWARF,__debug_line,regular,debug
+Lsection_line:
+Lline_table_start0:
--- /dev/null
+# Source:
+# struct e {
+# enum {} f[16384];
+# short g;
+# };
+# e foo() {
+# auto E = new e;
+# return *E;
+# }
+# Compile with:
+# clang -O2 -gdwarf-4 -S a.cpp -o a4.s
+
+# RUN: llvm-mc %s -filetype obj -triple x86_64-apple-darwin -o %t.o
+# RUN: llvm-dwarfdump -debug-info -name g %t.o | FileCheck %s
+
+# CHECK: DW_TAG_member
+# CHECK: DW_AT_name ("g")
+# CHECK: DW_AT_data_member_location (0x4000)
+
+ .section __TEXT,__text,regular,pure_instructions
+ .macosx_version_min 10, 14
+ .globl __Z3foov ## -- Begin function _Z3foov
+ .p2align 4, 0x90
+__Z3foov: ## @_Z3foov
+Lfunc_begin0:
+ .file 1 "/private/tmp" "a.cpp"
+ .loc 1 5 0 ## a.cpp:5:0
+ .cfi_startproc
+## %bb.0: ## %entry
+ pushq %rbp
+ .cfi_def_cfa_offset 16
+ .cfi_offset %rbp, -16
+ movq %rsp, %rbp
+ .cfi_def_cfa_register %rbp
+ pushq %rbx
+ pushq %rax
+ .cfi_offset %rbx, -24
+ movq %rdi, %rbx
+Ltmp0:
+ .loc 1 6 12 prologue_end ## a.cpp:6:12
+ movl $16385, %edi ## imm = 0x4001
+ callq __Znwm
+Ltmp1:
+ ##DEBUG_VALUE: foo:E <- $rax
+ .loc 1 7 10 ## a.cpp:7:10
+ movl $16385, %edx ## imm = 0x4001
+ movq %rbx, %rdi
+ movq %rax, %rsi
+ callq _memcpy
+Ltmp2:
+ .loc 1 8 1 ## a.cpp:8:1
+ movq %rbx, %rax
+ addq $8, %rsp
+ popq %rbx
+ popq %rbp
+ retq
+Ltmp3:
+Lfunc_end0:
+ .cfi_endproc
+ ## -- End function
+ .section __DWARF,__debug_str,regular,debug
+Linfo_string:
+ .asciz "clang version 9.0.0 (git@github.com:llvm/llvm-project.git 10de39548976ae224709acdc1c337e33cf12f3c0)" ## string offset=0
+ .asciz "a.cpp" ## string offset=100
+ .asciz "/private/tmp" ## string offset=106
+ .asciz "foo" ## string offset=119
+ .asciz "_Z3foov" ## string offset=123
+ .asciz "e" ## string offset=131
+ .asciz "f" ## string offset=133
+ .asciz "char" ## string offset=135
+ .asciz "__ARRAY_SIZE_TYPE__" ## string offset=140
+ .asciz "g" ## string offset=160
+ .asciz "E" ## string offset=162
+ .section __DWARF,__debug_loc,regular,debug
+Lsection_debug_loc:
+Ldebug_loc0:
+.set Lset0, Ltmp1-Lfunc_begin0
+ .quad Lset0
+.set Lset1, Ltmp2-Lfunc_begin0
+ .quad Lset1
+ .short 1 ## Loc expr size
+ .byte 80 ## DW_OP_reg0
+ .quad 0
+ .quad 0
+ .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
+ .ascii "\264B" ## DW_AT_GNU_pubnames
+ .byte 25 ## DW_FORM_flag_present
+ .ascii "\341\177" ## DW_AT_APPLE_optimized
+ .byte 25 ## DW_FORM_flag_present
+ .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 122 ## DW_AT_call_all_calls
+ .byte 25 ## DW_FORM_flag_present
+ .byte 110 ## DW_AT_linkage_name
+ .byte 14 ## DW_FORM_strp
+ .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 63 ## DW_AT_external
+ .byte 25 ## DW_FORM_flag_present
+ .ascii "\341\177" ## DW_AT_APPLE_optimized
+ .byte 25 ## DW_FORM_flag_present
+ .byte 0 ## EOM(1)
+ .byte 0 ## EOM(2)
+ .byte 3 ## Abbreviation Code
+ .byte 52 ## DW_TAG_variable
+ .byte 0 ## DW_CHILDREN_no
+ .byte 2 ## DW_AT_location
+ .byte 23 ## DW_FORM_sec_offset
+ .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 19 ## DW_TAG_structure_type
+ .byte 1 ## DW_CHILDREN_yes
+ .byte 54 ## DW_AT_calling_convention
+ .byte 11 ## DW_FORM_data1
+ .byte 3 ## DW_AT_name
+ .byte 14 ## DW_FORM_strp
+ .byte 11 ## DW_AT_byte_size
+ .byte 5 ## DW_FORM_data2
+ .byte 58 ## DW_AT_decl_file
+ .byte 11 ## DW_FORM_data1
+ .byte 59 ## DW_AT_decl_line
+ .byte 11 ## DW_FORM_data1
+ .byte 0 ## EOM(1)
+ .byte 0 ## EOM(2)
+ .byte 5 ## Abbreviation Code
+ .byte 13 ## DW_TAG_member
+ .byte 0 ## DW_CHILDREN_no
+ .byte 3 ## DW_AT_name
+ .byte 14 ## DW_FORM_strp
+ .byte 73 ## DW_AT_type
+ .byte 19 ## DW_FORM_ref4
+ .byte 58 ## DW_AT_decl_file
+ .byte 11 ## DW_FORM_data1
+ .byte 59 ## DW_AT_decl_line
+ .byte 11 ## DW_FORM_data1
+ .byte 56 ## DW_AT_data_member_location
+ .byte 11 ## DW_FORM_data1
+ .byte 0 ## EOM(1)
+ .byte 0 ## EOM(2)
+ .byte 6 ## Abbreviation Code
+ .byte 13 ## DW_TAG_member
+ .byte 0 ## DW_CHILDREN_no
+ .byte 3 ## DW_AT_name
+ .byte 14 ## DW_FORM_strp
+ .byte 73 ## DW_AT_type
+ .byte 19 ## DW_FORM_ref4
+ .byte 58 ## DW_AT_decl_file
+ .byte 11 ## DW_FORM_data1
+ .byte 59 ## DW_AT_decl_line
+ .byte 11 ## DW_FORM_data1
+ .byte 56 ## DW_AT_data_member_location
+ .byte 5 ## DW_FORM_data2
+ .byte 0 ## EOM(1)
+ .byte 0 ## EOM(2)
+ .byte 7 ## Abbreviation Code
+ .byte 1 ## DW_TAG_array_type
+ .byte 1 ## DW_CHILDREN_yes
+ .byte 73 ## DW_AT_type
+ .byte 19 ## DW_FORM_ref4
+ .byte 0 ## EOM(1)
+ .byte 0 ## EOM(2)
+ .byte 8 ## Abbreviation Code
+ .byte 33 ## DW_TAG_subrange_type
+ .byte 0 ## DW_CHILDREN_no
+ .byte 73 ## DW_AT_type
+ .byte 19 ## DW_FORM_ref4
+ .byte 55 ## DW_AT_count
+ .byte 5 ## DW_FORM_data2
+ .byte 0 ## EOM(1)
+ .byte 0 ## EOM(2)
+ .byte 9 ## 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 10 ## Abbreviation Code
+ .byte 36 ## DW_TAG_base_type
+ .byte 0 ## DW_CHILDREN_no
+ .byte 3 ## DW_AT_name
+ .byte 14 ## DW_FORM_strp
+ .byte 11 ## DW_AT_byte_size
+ .byte 11 ## DW_FORM_data1
+ .byte 62 ## DW_AT_encoding
+ .byte 11 ## DW_FORM_data1
+ .byte 0 ## EOM(1)
+ .byte 0 ## EOM(2)
+ .byte 11 ## Abbreviation Code
+ .byte 15 ## DW_TAG_pointer_type
+ .byte 0 ## DW_CHILDREN_no
+ .byte 73 ## DW_AT_type
+ .byte 19 ## DW_FORM_ref4
+ .byte 0 ## EOM(1)
+ .byte 0 ## EOM(2)
+ .byte 0 ## EOM(3)
+ .section __DWARF,__debug_info,regular,debug
+Lsection_info:
+Lcu_begin0:
+.set Lset2, Ldebug_info_end0-Ldebug_info_start0 ## Length of Unit
+ .long Lset2
+Ldebug_info_start0:
+ .short 4 ## DWARF version number
+.set Lset3, Lsection_abbrev-Lsection_abbrev ## Offset Into Abbrev. Section
+ .long Lset3
+ .byte 8 ## Address Size (in bytes)
+ .byte 1 ## Abbrev [1] 0xb:0x91 DW_TAG_compile_unit
+ .long 0 ## DW_AT_producer
+ .short 4 ## DW_AT_language
+ .long 100 ## DW_AT_name
+.set Lset4, Lline_table_start0-Lsection_line ## DW_AT_stmt_list
+ .long Lset4
+ .long 106 ## DW_AT_comp_dir
+ ## DW_AT_GNU_pubnames
+ ## DW_AT_APPLE_optimized
+ .quad Lfunc_begin0 ## DW_AT_low_pc
+.set Lset5, Lfunc_end0-Lfunc_begin0 ## DW_AT_high_pc
+ .long Lset5
+ .byte 2 ## Abbrev [2] 0x2a:0x2d DW_TAG_subprogram
+ .quad Lfunc_begin0 ## DW_AT_low_pc
+.set Lset6, Lfunc_end0-Lfunc_begin0 ## DW_AT_high_pc
+ .long Lset6
+ .byte 1 ## DW_AT_frame_base
+ .byte 86
+ ## DW_AT_call_all_calls
+ .long 123 ## DW_AT_linkage_name
+ .long 119 ## DW_AT_name
+ .byte 1 ## DW_AT_decl_file
+ .byte 5 ## DW_AT_decl_line
+ .long 87 ## DW_AT_type
+ ## DW_AT_external
+ ## DW_AT_APPLE_optimized
+ .byte 3 ## Abbrev [3] 0x47:0xf DW_TAG_variable
+.set Lset7, Ldebug_loc0-Lsection_debug_loc ## DW_AT_location
+ .long Lset7
+ .long 162 ## DW_AT_name
+ .byte 1 ## DW_AT_decl_file
+ .byte 6 ## DW_AT_decl_line
+ .long 150 ## DW_AT_type
+ .byte 0 ## End Of Children Mark
+ .byte 4 ## Abbrev [4] 0x57:0x24 DW_TAG_structure_type
+ .byte 5 ## DW_AT_calling_convention
+ .long 131 ## DW_AT_name
+ .short 16385 ## DW_AT_byte_size
+ .byte 1 ## DW_AT_decl_file
+ .byte 1 ## DW_AT_decl_line
+ .byte 5 ## Abbrev [5] 0x61:0xc DW_TAG_member
+ .long 133 ## DW_AT_name
+ .long 123 ## DW_AT_type
+ .byte 1 ## DW_AT_decl_file
+ .byte 2 ## DW_AT_decl_line
+ .byte 0 ## DW_AT_data_member_location
+ .byte 6 ## Abbrev [6] 0x6d:0xd DW_TAG_member
+ .long 160 ## DW_AT_name
+ .long 136 ## DW_AT_type
+ .byte 1 ## DW_AT_decl_file
+ .byte 3 ## DW_AT_decl_line
+ .short 16384 ## DW_AT_data_member_location
+ .byte 0 ## End Of Children Mark
+ .byte 7 ## Abbrev [7] 0x7b:0xd DW_TAG_array_type
+ .long 136 ## DW_AT_type
+ .byte 8 ## Abbrev [8] 0x80:0x7 DW_TAG_subrange_type
+ .long 143 ## DW_AT_type
+ .short 16384 ## DW_AT_count
+ .byte 0 ## End Of Children Mark
+ .byte 9 ## Abbrev [9] 0x88:0x7 DW_TAG_base_type
+ .long 135 ## DW_AT_name
+ .byte 6 ## DW_AT_encoding
+ .byte 1 ## DW_AT_byte_size
+ .byte 10 ## Abbrev [10] 0x8f:0x7 DW_TAG_base_type
+ .long 140 ## DW_AT_name
+ .byte 8 ## DW_AT_byte_size
+ .byte 7 ## DW_AT_encoding
+ .byte 11 ## Abbrev [11] 0x96:0x5 DW_TAG_pointer_type
+ .long 87 ## DW_AT_type
+ .byte 0 ## End Of Children Mark
+Ldebug_info_end0:
+ .section __DWARF,__debug_macinfo,regular,debug
+Ldebug_macinfo:
+ .byte 0 ## End Of Macro List Mark
+
+.subsections_via_symbols
+ .section __DWARF,__debug_line,regular,debug
+Lsection_line:
+Lline_table_start0: