1# Source: 2# struct e { 3# char f[16384]; 4# char g; 5# }; 6# e foo() { 7# auto E = new e; 8# return *E; 9# } 10# Compile with: 11# clang -O2 -gdwarf-2 -S a.cpp -o a2.s 12 13# RUN: llvm-mc %s -filetype obj -triple x86_64-apple-darwin -o %t.o 14# RUN: llvm-dwarfdump -debug-info -name g %t.o | FileCheck %s 15 16# CHECK: DW_TAG_member 17# CHECK: DW_AT_name ("g") 18# CHECK: DW_AT_data_member_location (DW_OP_plus_uconst 0x4000) 19 20 .section __TEXT,__text,regular,pure_instructions 21 .macosx_version_min 10, 14 22 .globl __Z3foov ## -- Begin function _Z3foov 23 .p2align 4, 0x90 24__Z3foov: ## @_Z3foov 25Lfunc_begin0: 26 .file 1 "/private/tmp" "a.cpp" 27 .loc 1 5 0 ## a.cpp:5:0 28 .cfi_startproc 29## %bb.0: ## %entry 30 pushq %rbp 31 .cfi_def_cfa_offset 16 32 .cfi_offset %rbp, -16 33 movq %rsp, %rbp 34 .cfi_def_cfa_register %rbp 35 pushq %rbx 36 pushq %rax 37 .cfi_offset %rbx, -24 38 movq %rdi, %rbx 39Ltmp0: 40 .loc 1 6 12 prologue_end ## a.cpp:6:12 41 movl $16385, %edi ## imm = 0x4001 42 callq __Znwm 43Ltmp1: 44 ##DEBUG_VALUE: foo:E <- $rax 45 .loc 1 7 10 ## a.cpp:7:10 46 movl $16385, %edx ## imm = 0x4001 47 movq %rbx, %rdi 48 movq %rax, %rsi 49 callq _memcpy 50Ltmp2: 51 .loc 1 8 1 ## a.cpp:8:1 52 movq %rbx, %rax 53 addq $8, %rsp 54 popq %rbx 55 popq %rbp 56 retq 57Ltmp3: 58Lfunc_end0: 59 .cfi_endproc 60 ## -- End function 61 .section __DWARF,__debug_str,regular,debug 62Linfo_string: 63 .asciz "clang version 9.0.0 (git@github.com:llvm/llvm-project.git 10de39548976ae224709acdc1c337e33cf12f3c0)" ## string offset=0 64 .asciz "a.cpp" ## string offset=100 65 .asciz "/private/tmp" ## string offset=106 66 .asciz "foo" ## string offset=119 67 .asciz "_Z3foov" ## string offset=123 68 .asciz "e" ## string offset=131 69 .asciz "f" ## string offset=133 70 .asciz "char" ## string offset=135 71 .asciz "__ARRAY_SIZE_TYPE__" ## string offset=140 72 .asciz "g" ## string offset=160 73 .asciz "E" ## string offset=162 74 .section __DWARF,__debug_loc,regular,debug 75Lsection_debug_loc: 76Ldebug_loc0: 77.set Lset0, Ltmp1-Lfunc_begin0 78 .quad Lset0 79.set Lset1, Ltmp2-Lfunc_begin0 80 .quad Lset1 81 .short 1 ## Loc expr size 82 .byte 80 ## DW_OP_reg0 83 .quad 0 84 .quad 0 85 .section __DWARF,__debug_abbrev,regular,debug 86Lsection_abbrev: 87 .byte 1 ## Abbreviation Code 88 .byte 17 ## DW_TAG_compile_unit 89 .byte 1 ## DW_CHILDREN_yes 90 .byte 37 ## DW_AT_producer 91 .byte 14 ## DW_FORM_strp 92 .byte 19 ## DW_AT_language 93 .byte 5 ## DW_FORM_data2 94 .byte 3 ## DW_AT_name 95 .byte 14 ## DW_FORM_strp 96 .byte 16 ## DW_AT_stmt_list 97 .byte 6 ## DW_FORM_data4 98 .byte 27 ## DW_AT_comp_dir 99 .byte 14 ## DW_FORM_strp 100 .ascii "\264B" ## DW_AT_GNU_pubnames 101 .byte 12 ## DW_FORM_flag 102 .ascii "\341\177" ## DW_AT_APPLE_optimized 103 .byte 12 ## DW_FORM_flag 104 .byte 17 ## DW_AT_low_pc 105 .byte 1 ## DW_FORM_addr 106 .byte 18 ## DW_AT_high_pc 107 .byte 1 ## DW_FORM_addr 108 .byte 0 ## EOM(1) 109 .byte 0 ## EOM(2) 110 .byte 2 ## Abbreviation Code 111 .byte 46 ## DW_TAG_subprogram 112 .byte 1 ## DW_CHILDREN_yes 113 .byte 17 ## DW_AT_low_pc 114 .byte 1 ## DW_FORM_addr 115 .byte 18 ## DW_AT_high_pc 116 .byte 1 ## DW_FORM_addr 117 .byte 64 ## DW_AT_frame_base 118 .byte 10 ## DW_FORM_block1 119 .ascii "\207@" ## DW_AT_MIPS_linkage_name 120 .byte 14 ## DW_FORM_strp 121 .byte 3 ## DW_AT_name 122 .byte 14 ## DW_FORM_strp 123 .byte 58 ## DW_AT_decl_file 124 .byte 11 ## DW_FORM_data1 125 .byte 59 ## DW_AT_decl_line 126 .byte 11 ## DW_FORM_data1 127 .byte 73 ## DW_AT_type 128 .byte 19 ## DW_FORM_ref4 129 .byte 63 ## DW_AT_external 130 .byte 12 ## DW_FORM_flag 131 .ascii "\341\177" ## DW_AT_APPLE_optimized 132 .byte 12 ## DW_FORM_flag 133 .byte 0 ## EOM(1) 134 .byte 0 ## EOM(2) 135 .byte 3 ## Abbreviation Code 136 .byte 52 ## DW_TAG_variable 137 .byte 0 ## DW_CHILDREN_no 138 .byte 2 ## DW_AT_location 139 .byte 6 ## DW_FORM_data4 140 .byte 3 ## DW_AT_name 141 .byte 14 ## DW_FORM_strp 142 .byte 58 ## DW_AT_decl_file 143 .byte 11 ## DW_FORM_data1 144 .byte 59 ## DW_AT_decl_line 145 .byte 11 ## DW_FORM_data1 146 .byte 73 ## DW_AT_type 147 .byte 19 ## DW_FORM_ref4 148 .byte 0 ## EOM(1) 149 .byte 0 ## EOM(2) 150 .byte 4 ## Abbreviation Code 151 .byte 19 ## DW_TAG_structure_type 152 .byte 1 ## DW_CHILDREN_yes 153 .byte 54 ## DW_AT_calling_convention 154 .byte 11 ## DW_FORM_data1 155 .byte 3 ## DW_AT_name 156 .byte 14 ## DW_FORM_strp 157 .byte 11 ## DW_AT_byte_size 158 .byte 5 ## DW_FORM_data2 159 .byte 58 ## DW_AT_decl_file 160 .byte 11 ## DW_FORM_data1 161 .byte 59 ## DW_AT_decl_line 162 .byte 11 ## DW_FORM_data1 163 .byte 0 ## EOM(1) 164 .byte 0 ## EOM(2) 165 .byte 5 ## Abbreviation Code 166 .byte 13 ## DW_TAG_member 167 .byte 0 ## DW_CHILDREN_no 168 .byte 3 ## DW_AT_name 169 .byte 14 ## DW_FORM_strp 170 .byte 73 ## DW_AT_type 171 .byte 19 ## DW_FORM_ref4 172 .byte 58 ## DW_AT_decl_file 173 .byte 11 ## DW_FORM_data1 174 .byte 59 ## DW_AT_decl_line 175 .byte 11 ## DW_FORM_data1 176 .byte 56 ## DW_AT_data_member_location 177 .byte 10 ## DW_FORM_block1 178 .byte 0 ## EOM(1) 179 .byte 0 ## EOM(2) 180 .byte 6 ## Abbreviation Code 181 .byte 1 ## DW_TAG_array_type 182 .byte 1 ## DW_CHILDREN_yes 183 .byte 73 ## DW_AT_type 184 .byte 19 ## DW_FORM_ref4 185 .byte 0 ## EOM(1) 186 .byte 0 ## EOM(2) 187 .byte 7 ## Abbreviation Code 188 .byte 33 ## DW_TAG_subrange_type 189 .byte 0 ## DW_CHILDREN_no 190 .byte 73 ## DW_AT_type 191 .byte 19 ## DW_FORM_ref4 192 .byte 55 ## DW_AT_count 193 .byte 5 ## DW_FORM_data2 194 .byte 0 ## EOM(1) 195 .byte 0 ## EOM(2) 196 .byte 8 ## Abbreviation Code 197 .byte 36 ## DW_TAG_base_type 198 .byte 0 ## DW_CHILDREN_no 199 .byte 3 ## DW_AT_name 200 .byte 14 ## DW_FORM_strp 201 .byte 62 ## DW_AT_encoding 202 .byte 11 ## DW_FORM_data1 203 .byte 11 ## DW_AT_byte_size 204 .byte 11 ## DW_FORM_data1 205 .byte 0 ## EOM(1) 206 .byte 0 ## EOM(2) 207 .byte 9 ## Abbreviation Code 208 .byte 36 ## DW_TAG_base_type 209 .byte 0 ## DW_CHILDREN_no 210 .byte 3 ## DW_AT_name 211 .byte 14 ## DW_FORM_strp 212 .byte 11 ## DW_AT_byte_size 213 .byte 11 ## DW_FORM_data1 214 .byte 62 ## DW_AT_encoding 215 .byte 11 ## DW_FORM_data1 216 .byte 0 ## EOM(1) 217 .byte 0 ## EOM(2) 218 .byte 10 ## Abbreviation Code 219 .byte 15 ## DW_TAG_pointer_type 220 .byte 0 ## DW_CHILDREN_no 221 .byte 73 ## DW_AT_type 222 .byte 19 ## DW_FORM_ref4 223 .byte 0 ## EOM(1) 224 .byte 0 ## EOM(2) 225 .byte 0 ## EOM(3) 226 .section __DWARF,__debug_info,regular,debug 227Lsection_info: 228Lcu_begin0: 229.set Lset2, Ldebug_info_end0-Ldebug_info_start0 ## Length of Unit 230 .long Lset2 231Ldebug_info_start0: 232 .short 2 ## DWARF version number 233.set Lset3, Lsection_abbrev-Lsection_abbrev ## Offset Into Abbrev. Section 234 .long Lset3 235 .byte 8 ## Address Size (in bytes) 236 .byte 1 ## Abbrev [1] 0xb:0xa2 DW_TAG_compile_unit 237 .long 0 ## DW_AT_producer 238 .short 4 ## DW_AT_language 239 .long 100 ## DW_AT_name 240.set Lset4, Lline_table_start0-Lsection_line ## DW_AT_stmt_list 241 .long Lset4 242 .long 106 ## DW_AT_comp_dir 243 .byte 1 ## DW_AT_GNU_pubnames 244 .byte 1 ## DW_AT_APPLE_optimized 245 .quad Lfunc_begin0 ## DW_AT_low_pc 246 .quad Lfunc_end0 ## DW_AT_high_pc 247 .byte 2 ## Abbrev [2] 0x30:0x33 DW_TAG_subprogram 248 .quad Lfunc_begin0 ## DW_AT_low_pc 249 .quad Lfunc_end0 ## DW_AT_high_pc 250 .byte 1 ## DW_AT_frame_base 251 .byte 86 252 .long 123 ## DW_AT_MIPS_linkage_name 253 .long 119 ## DW_AT_name 254 .byte 1 ## DW_AT_decl_file 255 .byte 5 ## DW_AT_decl_line 256 .long 99 ## DW_AT_type 257 .byte 1 ## DW_AT_external 258 .byte 1 ## DW_AT_APPLE_optimized 259 .byte 3 ## Abbrev [3] 0x53:0xf DW_TAG_variable 260.set Lset5, Ldebug_loc0-Lsection_debug_loc ## DW_AT_location 261 .long Lset5 262 .long 162 ## DW_AT_name 263 .byte 1 ## DW_AT_decl_file 264 .byte 6 ## DW_AT_decl_line 265 .long 167 ## DW_AT_type 266 .byte 0 ## End Of Children Mark 267 .byte 4 ## Abbrev [4] 0x63:0x29 DW_TAG_structure_type 268 .byte 5 ## DW_AT_calling_convention 269 .long 131 ## DW_AT_name 270 .short 16385 ## DW_AT_byte_size 271 .byte 1 ## DW_AT_decl_file 272 .byte 1 ## DW_AT_decl_line 273 .byte 5 ## Abbrev [5] 0x6d:0xe DW_TAG_member 274 .long 133 ## DW_AT_name 275 .long 140 ## DW_AT_type 276 .byte 1 ## DW_AT_decl_file 277 .byte 2 ## DW_AT_decl_line 278 .byte 2 ## DW_AT_data_member_location 279 .byte 35 280 .byte 0 281 .byte 5 ## Abbrev [5] 0x7b:0x10 DW_TAG_member 282 .long 160 ## DW_AT_name 283 .long 153 ## DW_AT_type 284 .byte 1 ## DW_AT_decl_file 285 .byte 3 ## DW_AT_decl_line 286 .byte 4 ## DW_AT_data_member_location 287 .byte 35 288 .ascii "\200\200\001" 289 .byte 0 ## End Of Children Mark 290 .byte 6 ## Abbrev [6] 0x8c:0xd DW_TAG_array_type 291 .long 153 ## DW_AT_type 292 .byte 7 ## Abbrev [7] 0x91:0x7 DW_TAG_subrange_type 293 .long 160 ## DW_AT_type 294 .short 16384 ## DW_AT_count 295 .byte 0 ## End Of Children Mark 296 .byte 8 ## Abbrev [8] 0x99:0x7 DW_TAG_base_type 297 .long 135 ## DW_AT_name 298 .byte 6 ## DW_AT_encoding 299 .byte 1 ## DW_AT_byte_size 300 .byte 9 ## Abbrev [9] 0xa0:0x7 DW_TAG_base_type 301 .long 140 ## DW_AT_name 302 .byte 8 ## DW_AT_byte_size 303 .byte 7 ## DW_AT_encoding 304 .byte 10 ## Abbrev [10] 0xa7:0x5 DW_TAG_pointer_type 305 .long 99 ## DW_AT_type 306 .byte 0 ## End Of Children Mark 307Ldebug_info_end0: 308 .section __DWARF,__debug_macinfo,regular,debug 309Ldebug_macinfo: 310 .byte 0 ## End Of Macro List Mark 311 312.subsections_via_symbols 313 .section __DWARF,__debug_line,regular,debug 314Lsection_line: 315Lline_table_start0: 316