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