1## Check that the --debug-vars option works for simple register locations, when 2## using DWARF5 debug info, with multiple functions in one section. 3 4## Generated with this compile command, with the source code in Inputs/debug.c: 5## clang --target=arm--none-eabi -march=armv7-a -c debug.c -O1 -gdwarf-3 -S -o - 6 7# RUN: llvm-mc -triple armv8a--none-eabi < %s -filetype=obj --dwarf-version=5 | \ 8# RUN: llvm-objdump - -d --debug-vars --no-show-raw-insn | \ 9# RUN: FileCheck %s 10 11# CHECK: Disassembly of section .text: 12# CHECK-EMPTY: 13# CHECK-NEXT: 00000000 <foo>: 14# CHECK-NEXT: ┠─ a = R0 15# CHECK-NEXT: ┃ ┠─ b = R1 16# CHECK-NEXT: ┃ ┃ ┠─ c = R2 17# CHECK-NEXT: ┃ ┃ ┃ ┌─ x = R0 18# CHECK-NEXT: 0: add r0, r1, r0 ┻ ┃ ┃ ╈ 19# CHECK-NEXT: ┌─ y = R0 20# CHECK-NEXT: 4: add r0, r0, r2 ╈ ┃ ┃ ┻ 21# CHECK-NEXT: 8: bx lr ┻ ┻ ┻ 22# CHECK-EMPTY: 23# CHECK-NEXT: 0000000c <bar>: 24# CHECK-NEXT: ┠─ a = R0 25# CHECK-NEXT: c: add r0, r0, #1 ┃ 26# CHECK-NEXT: 10: bx lr ┻ 27 28 .text 29 .syntax unified 30 .eabi_attribute 67, "2.09" 31 .eabi_attribute 6, 10 32 .eabi_attribute 7, 65 33 .eabi_attribute 8, 1 34 .eabi_attribute 9, 2 35 .fpu neon 36 .eabi_attribute 34, 0 37 .eabi_attribute 17, 1 38 .eabi_attribute 20, 1 39 .eabi_attribute 21, 1 40 .eabi_attribute 23, 3 41 .eabi_attribute 24, 1 42 .eabi_attribute 25, 1 43 .eabi_attribute 38, 1 44 .eabi_attribute 18, 4 45 .eabi_attribute 26, 2 46 .eabi_attribute 14, 0 47 .file "debug.c" 48 .globl foo 49 .p2align 2 50 .type foo,%function 51 .code 32 52foo: 53.Lfunc_begin0: 54 .file 0 "/work/scratch" "/work/llvm/src/llvm/test/tools/llvm-objdump/ARM/Inputs/debug.c" md5 0x07374f01ab24ec7c07db73bc13bd778e 55 .file 1 "/work" "llvm/src/llvm/test/tools/llvm-objdump/ARM/Inputs/debug.c" md5 0x07374f01ab24ec7c07db73bc13bd778e 56 .loc 1 1 0 57 .fnstart 58 .cfi_sections .debug_frame 59 .cfi_startproc 60 .loc 1 2 13 prologue_end 61 add r0, r1, r0 62.Ltmp0: 63 .loc 1 3 13 64 add r0, r0, r2 65.Ltmp1: 66 .loc 1 4 3 67 bx lr 68.Ltmp2: 69.Lfunc_end0: 70 .size foo, .Lfunc_end0-foo 71 .cfi_endproc 72 .cantunwind 73 .fnend 74 75 .globl bar 76 .p2align 2 77 .type bar,%function 78 .code 32 79bar: 80.Lfunc_begin1: 81 .loc 1 7 0 82 .fnstart 83 .cfi_startproc 84 .loc 1 8 4 prologue_end 85 add r0, r0, #1 86.Ltmp3: 87 .loc 1 9 3 88 bx lr 89.Ltmp4: 90.Lfunc_end1: 91 .size bar, .Lfunc_end1-bar 92 .cfi_endproc 93 .cantunwind 94 .fnend 95 96 .section .debug_str_offsets,"",%progbits 97 .long 48 98 .short 5 99 .short 0 100.Lstr_offsets_base0: 101 .section .debug_str,"MS",%progbits,1 102.Linfo_string0: 103 .asciz "clang version 10.0.0 (git@github.com:llvm/llvm-project.git e73f78acd34360f7450b81167d9dc858ccddc262)" 104.Linfo_string1: 105 .asciz "/work/llvm/src/llvm/test/tools/llvm-objdump/ARM/Inputs/debug.c" 106.Linfo_string2: 107 .asciz "/work/scratch" 108.Linfo_string3: 109 .asciz "foo" 110.Linfo_string4: 111 .asciz "int" 112.Linfo_string5: 113 .asciz "bar" 114.Linfo_string6: 115 .asciz "a" 116.Linfo_string7: 117 .asciz "b" 118.Linfo_string8: 119 .asciz "c" 120.Linfo_string9: 121 .asciz "x" 122.Linfo_string10: 123 .asciz "y" 124 .section .debug_str_offsets,"",%progbits 125 .long .Linfo_string0 126 .long .Linfo_string1 127 .long .Linfo_string2 128 .long .Linfo_string3 129 .long .Linfo_string4 130 .long .Linfo_string5 131 .long .Linfo_string6 132 .long .Linfo_string7 133 .long .Linfo_string8 134 .long .Linfo_string9 135 .long .Linfo_string10 136 .section .debug_loclists,"",%progbits 137 .long .Ldebug_loclist_table_end0-.Ldebug_loclist_table_start0 138.Ldebug_loclist_table_start0: 139 .short 5 140 .byte 4 141 .byte 0 142 .long 3 143.Lloclists_table_base0: 144 .long .Ldebug_loc0-.Lloclists_table_base0 145 .long .Ldebug_loc1-.Lloclists_table_base0 146 .long .Ldebug_loc2-.Lloclists_table_base0 147.Ldebug_loc0: 148 .byte 4 149 .uleb128 .Lfunc_begin0-.Lfunc_begin0 150 .uleb128 .Ltmp0-.Lfunc_begin0 151 .byte 1 152 .byte 80 153 .byte 0 154.Ldebug_loc1: 155 .byte 4 156 .uleb128 .Ltmp0-.Lfunc_begin0 157 .uleb128 .Ltmp1-.Lfunc_begin0 158 .byte 1 159 .byte 80 160 .byte 0 161.Ldebug_loc2: 162 .byte 4 163 .uleb128 .Ltmp1-.Lfunc_begin0 164 .uleb128 .Lfunc_end0-.Lfunc_begin0 165 .byte 1 166 .byte 80 167 .byte 0 168.Ldebug_loclist_table_end0: 169 .section .debug_abbrev,"",%progbits 170 .byte 1 171 .byte 17 172 .byte 1 173 .byte 37 174 .byte 37 175 .byte 19 176 .byte 5 177 .byte 3 178 .byte 37 179 .byte 114 180 .byte 23 181 .byte 16 182 .byte 23 183 .byte 27 184 .byte 37 185 .byte 17 186 .byte 27 187 .byte 18 188 .byte 6 189 .byte 115 190 .byte 23 191 .ascii "\214\001" 192 .byte 23 193 .byte 0 194 .byte 0 195 .byte 2 196 .byte 46 197 .byte 1 198 .byte 17 199 .byte 27 200 .byte 18 201 .byte 6 202 .byte 64 203 .byte 24 204 .byte 122 205 .byte 25 206 .byte 3 207 .byte 37 208 .byte 58 209 .byte 11 210 .byte 59 211 .byte 11 212 .byte 39 213 .byte 25 214 .byte 73 215 .byte 19 216 .byte 63 217 .byte 25 218 .byte 0 219 .byte 0 220 .byte 3 221 .byte 5 222 .byte 0 223 .byte 2 224 .byte 34 225 .byte 3 226 .byte 37 227 .byte 58 228 .byte 11 229 .byte 59 230 .byte 11 231 .byte 73 232 .byte 19 233 .byte 0 234 .byte 0 235 .byte 4 236 .byte 5 237 .byte 0 238 .byte 2 239 .byte 24 240 .byte 3 241 .byte 37 242 .byte 58 243 .byte 11 244 .byte 59 245 .byte 11 246 .byte 73 247 .byte 19 248 .byte 0 249 .byte 0 250 .byte 5 251 .byte 52 252 .byte 0 253 .byte 2 254 .byte 34 255 .byte 3 256 .byte 37 257 .byte 58 258 .byte 11 259 .byte 59 260 .byte 11 261 .byte 73 262 .byte 19 263 .byte 0 264 .byte 0 265 .byte 6 266 .byte 36 267 .byte 0 268 .byte 3 269 .byte 37 270 .byte 62 271 .byte 11 272 .byte 11 273 .byte 11 274 .byte 0 275 .byte 0 276 .byte 0 277 .section .debug_info,"",%progbits 278.Lcu_begin0: 279 .long .Ldebug_info_end0-.Ldebug_info_start0 280.Ldebug_info_start0: 281 .short 5 282 .byte 1 283 .byte 4 284 .long .debug_abbrev 285 .byte 1 286 .byte 0 287 .short 12 288 .byte 1 289 .long .Lstr_offsets_base0 290 .long .Lline_table_start0 291 .byte 2 292 .byte 0 293 .long .Lfunc_end1-.Lfunc_begin0 294 .long .Laddr_table_base0 295 .long .Lloclists_table_base0 296 .byte 2 297 .byte 0 298 .long .Lfunc_end0-.Lfunc_begin0 299 .byte 1 300 .byte 91 301 302 .byte 3 303 .byte 1 304 .byte 1 305 306 .long 128 307 308 .byte 3 309 .byte 0 310 .byte 6 311 .byte 1 312 .byte 1 313 .long 128 314 .byte 4 315 .byte 1 316 .byte 81 317 .byte 7 318 .byte 1 319 .byte 1 320 .long 128 321 .byte 4 322 .byte 1 323 .byte 82 324 .byte 8 325 .byte 1 326 .byte 1 327 .long 128 328 .byte 5 329 .byte 1 330 .byte 9 331 .byte 1 332 .byte 2 333 .long 128 334 .byte 5 335 .byte 2 336 .byte 10 337 .byte 1 338 .byte 3 339 .long 128 340 .byte 0 341 .byte 2 342 .byte 1 343 .long .Lfunc_end1-.Lfunc_begin1 344 .byte 1 345 .byte 91 346 347 .byte 5 348 .byte 1 349 .byte 7 350 351 .long 128 352 353 .byte 4 354 .byte 1 355 .byte 80 356 .byte 6 357 .byte 1 358 .byte 7 359 .long 128 360 .byte 0 361 .byte 6 362 .byte 4 363 .byte 5 364 .byte 4 365 .byte 0 366.Ldebug_info_end0: 367 .section .debug_addr,"",%progbits 368 .long .Ldebug_addr_end0-.Ldebug_addr_start0 369.Ldebug_addr_start0: 370 .short 5 371 .byte 4 372 .byte 0 373.Laddr_table_base0: 374 .long .Lfunc_begin0 375 .long .Lfunc_begin1 376.Ldebug_addr_end0: 377 .ident "clang version 10.0.0 (git@github.com:llvm/llvm-project.git e73f78acd34360f7450b81167d9dc858ccddc262)" 378 .section ".note.GNU-stack","",%progbits 379 .addrsig 380 .eabi_attribute 30, 1 381 .section .debug_line,"",%progbits 382.Lline_table_start0: 383