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