1// REQUIRES: aarch64-registered-target 2 3// RUN: llvm-mc -filetype=obj -triple=aarch64-linux-android -o %t.o %s 4// RUN: echo 'FRAME %t.o 4' | llvm-symbolizer | FileCheck %s 5 6// Built from the following source with 7// clang -target aarch64-linux-android -O3 -g -S 8// 9// class A { 10// static void f(); 11// }; 12// 13// void use(int*); 14// void A::f() {int x; use(&x);} 15 16// CHECK: {{^f$}} 17// CHECK-NEXT: {{^x$}} 18// CHECK-NEXT: {{.*}}dbg.cc:6 19// CHECK-NEXT: -4 4 ?? 20 21 .text 22 .file "dbg.cc" 23 .globl _ZN1A1fEv // -- Begin function _ZN1A1fEv 24 .p2align 2 25 .type _ZN1A1fEv,@function 26_ZN1A1fEv: // @_ZN1A1fEv 27.Lfunc_begin0: 28 .file 1 "/tmp" "dbg.cc" 29 .loc 1 6 0 // /tmp/dbg.cc:6:0 30 .cfi_startproc 31// %bb.0: // %entry 32 sub sp, sp, #32 // =32 33 stp x29, x30, [sp, #16] // 16-byte Folded Spill 34 add x29, sp, #16 // =16 35 .cfi_def_cfa w29, 16 36 .cfi_offset w30, -8 37 .cfi_offset w29, -16 38.Ltmp0: 39 //DEBUG_VALUE: f:x <- [DW_OP_constu 4, DW_OP_minus, DW_OP_deref] $fp 40 .loc 1 6 21 prologue_end // /tmp/dbg.cc:6:21 41 sub x0, x29, #4 // =4 42 bl _Z3usePi 43.Ltmp1: 44 .loc 1 6 29 is_stmt 0 // /tmp/dbg.cc:6:29 45 ldp x29, x30, [sp, #16] // 16-byte Folded Reload 46 add sp, sp, #32 // =32 47 ret 48.Ltmp2: 49.Lfunc_end0: 50 .size _ZN1A1fEv, .Lfunc_end0-_ZN1A1fEv 51 .cfi_endproc 52 // -- End function 53 .section .debug_str,"MS",@progbits,1 54.Linfo_string0: 55 .asciz "clang version 10.0.0 (git@github.com:llvm/llvm-project.git 092ef9c6cf4678d2b8df7738110ecd405fe1fe3d)" // string offset=0 56.Linfo_string1: 57 .asciz "/tmp/dbg.cc" // string offset=101 58.Linfo_string2: 59 .asciz "/code/build-llvm-cmake" // string offset=113 60.Linfo_string3: 61 .asciz "_ZN1A1fEv" // string offset=136 62.Linfo_string4: 63 .asciz "f" // string offset=146 64.Linfo_string5: 65 .asciz "A" // string offset=148 66.Linfo_string6: 67 .asciz "_Z3usePi" // string offset=150 68.Linfo_string7: 69 .asciz "use" // string offset=159 70.Linfo_string8: 71 .asciz "int" // string offset=163 72.Linfo_string9: 73 .asciz "x" // string offset=167 74 .section .debug_abbrev,"",@progbits 75 .byte 1 // Abbreviation Code 76 .byte 17 // DW_TAG_compile_unit 77 .byte 1 // DW_CHILDREN_yes 78 .byte 37 // DW_AT_producer 79 .byte 14 // DW_FORM_strp 80 .byte 19 // DW_AT_language 81 .byte 5 // DW_FORM_data2 82 .byte 3 // DW_AT_name 83 .byte 14 // DW_FORM_strp 84 .byte 16 // DW_AT_stmt_list 85 .byte 23 // DW_FORM_sec_offset 86 .byte 27 // DW_AT_comp_dir 87 .byte 14 // DW_FORM_strp 88 .byte 17 // DW_AT_low_pc 89 .byte 1 // DW_FORM_addr 90 .byte 18 // DW_AT_high_pc 91 .byte 6 // DW_FORM_data4 92 .byte 0 // EOM(1) 93 .byte 0 // EOM(2) 94 .byte 2 // Abbreviation Code 95 .byte 2 // DW_TAG_class_type 96 .byte 1 // DW_CHILDREN_yes 97 .byte 54 // DW_AT_calling_convention 98 .byte 11 // DW_FORM_data1 99 .byte 3 // DW_AT_name 100 .byte 14 // DW_FORM_strp 101 .byte 11 // DW_AT_byte_size 102 .byte 11 // DW_FORM_data1 103 .byte 58 // DW_AT_decl_file 104 .byte 11 // DW_FORM_data1 105 .byte 59 // DW_AT_decl_line 106 .byte 11 // DW_FORM_data1 107 .byte 0 // EOM(1) 108 .byte 0 // EOM(2) 109 .byte 3 // Abbreviation Code 110 .byte 46 // DW_TAG_subprogram 111 .byte 0 // DW_CHILDREN_no 112 .byte 110 // DW_AT_linkage_name 113 .byte 14 // DW_FORM_strp 114 .byte 3 // DW_AT_name 115 .byte 14 // DW_FORM_strp 116 .byte 58 // DW_AT_decl_file 117 .byte 11 // DW_FORM_data1 118 .byte 59 // DW_AT_decl_line 119 .byte 11 // DW_FORM_data1 120 .byte 60 // DW_AT_declaration 121 .byte 25 // DW_FORM_flag_present 122 .byte 63 // DW_AT_external 123 .byte 25 // DW_FORM_flag_present 124 .byte 0 // EOM(1) 125 .byte 0 // EOM(2) 126 .byte 4 // Abbreviation Code 127 .byte 46 // DW_TAG_subprogram 128 .byte 1 // DW_CHILDREN_yes 129 .byte 17 // DW_AT_low_pc 130 .byte 1 // DW_FORM_addr 131 .byte 18 // DW_AT_high_pc 132 .byte 6 // DW_FORM_data4 133 .byte 64 // DW_AT_frame_base 134 .byte 24 // DW_FORM_exprloc 135 .ascii "\227B" // DW_AT_GNU_all_call_sites 136 .byte 25 // DW_FORM_flag_present 137 .byte 59 // DW_AT_decl_line 138 .byte 11 // DW_FORM_data1 139 .byte 71 // DW_AT_specification 140 .byte 19 // DW_FORM_ref4 141 .byte 0 // EOM(1) 142 .byte 0 // EOM(2) 143 .byte 5 // Abbreviation Code 144 .byte 52 // DW_TAG_variable 145 .byte 0 // DW_CHILDREN_no 146 .byte 2 // DW_AT_location 147 .byte 24 // DW_FORM_exprloc 148 .byte 3 // DW_AT_name 149 .byte 14 // DW_FORM_strp 150 .byte 58 // DW_AT_decl_file 151 .byte 11 // DW_FORM_data1 152 .byte 59 // DW_AT_decl_line 153 .byte 11 // DW_FORM_data1 154 .byte 73 // DW_AT_type 155 .byte 19 // DW_FORM_ref4 156 .byte 0 // EOM(1) 157 .byte 0 // EOM(2) 158 .byte 6 // Abbreviation Code 159 .ascii "\211\202\001" // DW_TAG_GNU_call_site 160 .byte 0 // DW_CHILDREN_no 161 .byte 49 // DW_AT_abstract_origin 162 .byte 19 // DW_FORM_ref4 163 .byte 17 // DW_AT_low_pc 164 .byte 1 // DW_FORM_addr 165 .byte 0 // EOM(1) 166 .byte 0 // EOM(2) 167 .byte 7 // Abbreviation Code 168 .byte 46 // DW_TAG_subprogram 169 .byte 1 // DW_CHILDREN_yes 170 .byte 110 // DW_AT_linkage_name 171 .byte 14 // DW_FORM_strp 172 .byte 3 // DW_AT_name 173 .byte 14 // DW_FORM_strp 174 .byte 58 // DW_AT_decl_file 175 .byte 11 // DW_FORM_data1 176 .byte 59 // DW_AT_decl_line 177 .byte 11 // DW_FORM_data1 178 .byte 60 // DW_AT_declaration 179 .byte 25 // DW_FORM_flag_present 180 .byte 63 // DW_AT_external 181 .byte 25 // DW_FORM_flag_present 182 .byte 0 // EOM(1) 183 .byte 0 // EOM(2) 184 .byte 8 // Abbreviation Code 185 .byte 5 // DW_TAG_formal_parameter 186 .byte 0 // DW_CHILDREN_no 187 .byte 73 // DW_AT_type 188 .byte 19 // DW_FORM_ref4 189 .byte 0 // EOM(1) 190 .byte 0 // EOM(2) 191 .byte 9 // Abbreviation Code 192 .byte 15 // DW_TAG_pointer_type 193 .byte 0 // DW_CHILDREN_no 194 .byte 73 // DW_AT_type 195 .byte 19 // DW_FORM_ref4 196 .byte 0 // EOM(1) 197 .byte 0 // EOM(2) 198 .byte 10 // Abbreviation Code 199 .byte 36 // DW_TAG_base_type 200 .byte 0 // DW_CHILDREN_no 201 .byte 3 // DW_AT_name 202 .byte 14 // DW_FORM_strp 203 .byte 62 // DW_AT_encoding 204 .byte 11 // DW_FORM_data1 205 .byte 11 // DW_AT_byte_size 206 .byte 11 // DW_FORM_data1 207 .byte 0 // EOM(1) 208 .byte 0 // EOM(2) 209 .byte 0 // EOM(3) 210 .section .debug_info,"",@progbits 211.Lcu_begin0: 212 .word .Ldebug_info_end0-.Ldebug_info_start0 // Length of Unit 213.Ldebug_info_start0: 214 .hword 4 // DWARF version number 215 .word .debug_abbrev // Offset Into Abbrev. Section 216 .byte 8 // Address Size (in bytes) 217 .byte 1 // Abbrev [1] 0xb:0x82 DW_TAG_compile_unit 218 .word .Linfo_string0 // DW_AT_producer 219 .hword 33 // DW_AT_language 220 .word .Linfo_string1 // DW_AT_name 221 .word .Lline_table_start0 // DW_AT_stmt_list 222 .word .Linfo_string2 // DW_AT_comp_dir 223 .xword .Lfunc_begin0 // DW_AT_low_pc 224 .word .Lfunc_end0-.Lfunc_begin0 // DW_AT_high_pc 225 .byte 2 // Abbrev [2] 0x2a:0x15 DW_TAG_class_type 226 .byte 5 // DW_AT_calling_convention 227 .word .Linfo_string5 // DW_AT_name 228 .byte 1 // DW_AT_byte_size 229 .byte 1 // DW_AT_decl_file 230 .byte 1 // DW_AT_decl_line 231 .byte 3 // Abbrev [3] 0x33:0xb DW_TAG_subprogram 232 .word .Linfo_string3 // DW_AT_linkage_name 233 .word .Linfo_string4 // DW_AT_name 234 .byte 1 // DW_AT_decl_file 235 .byte 2 // DW_AT_decl_line 236 // DW_AT_declaration 237 // DW_AT_external 238 .byte 0 // End Of Children Mark 239 .byte 4 // Abbrev [4] 0x3f:0x30 DW_TAG_subprogram 240 .xword .Lfunc_begin0 // DW_AT_low_pc 241 .word .Lfunc_end0-.Lfunc_begin0 // DW_AT_high_pc 242 .byte 1 // DW_AT_frame_base 243 .byte 109 244 // DW_AT_GNU_all_call_sites 245 .byte 6 // DW_AT_decl_line 246 .word 51 // DW_AT_specification 247 .byte 5 // Abbrev [5] 0x53:0xe DW_TAG_variable 248 .byte 2 // DW_AT_location 249 .byte 145 250 .byte 124 251 .word .Linfo_string9 // DW_AT_name 252 .byte 1 // DW_AT_decl_file 253 .byte 6 // DW_AT_decl_line 254 .word 133 // DW_AT_type 255 .byte 6 // Abbrev [6] 0x61:0xd DW_TAG_GNU_call_site 256 .word 111 // DW_AT_abstract_origin 257 .xword .Ltmp1 // DW_AT_low_pc 258 .byte 0 // End Of Children Mark 259 .byte 7 // Abbrev [7] 0x6f:0x11 DW_TAG_subprogram 260 .word .Linfo_string6 // DW_AT_linkage_name 261 .word .Linfo_string7 // DW_AT_name 262 .byte 1 // DW_AT_decl_file 263 .byte 5 // DW_AT_decl_line 264 // DW_AT_declaration 265 // DW_AT_external 266 .byte 8 // Abbrev [8] 0x7a:0x5 DW_TAG_formal_parameter 267 .word 128 // DW_AT_type 268 .byte 0 // End Of Children Mark 269 .byte 9 // Abbrev [9] 0x80:0x5 DW_TAG_pointer_type 270 .word 133 // DW_AT_type 271 .byte 10 // Abbrev [10] 0x85:0x7 DW_TAG_base_type 272 .word .Linfo_string8 // DW_AT_name 273 .byte 5 // DW_AT_encoding 274 .byte 4 // DW_AT_byte_size 275 .byte 0 // End Of Children Mark 276.Ldebug_info_end0: 277 .ident "clang version 10.0.0 (git@github.com:llvm/llvm-project.git 092ef9c6cf4678d2b8df7738110ecd405fe1fe3d)" 278 .section ".note.GNU-stack","",@progbits 279 .section .debug_line,"",@progbits 280.Lline_table_start0: 281