1# RUN: llvm-mc %s -filetype obj -triple i386-pc-linux -o %t.o 2# RUN: llvm-dwarfdump -v -debug-info -debug-line -debug-addr -debug-rnglists -debug-ranges %t.o | FileCheck --implicit-check-not=DW_TAG --implicit-check-not=DW_AT %s 3 4# Test that llvm - dwarfdump strips addresses relating to dead code(using the 5# DWARFv6 - proposed tombstone constant & nearest equivalent for debug_ranges) 6# Testing the tombstone use in debug_info (addr/addrx), debug_ranges, 7# debug_rnglists, debug_ranges, and debug_line. 8 9# CHECK-DAG: .debug_info contents: 10# CHECK: DW_TAG_compile_unit 11# CHECK: DW_AT_ranges [DW_FORM_sec_offset] (0x00000000 12# CHECK-NEXT: [0x00000042, 0x00000048)) 13# CHECK: DW_TAG_subprogram 14# CHECK: DW_AT_low_pc [DW_FORM_addr] (0xffffffff (dead code)) 15# CHECK: DW_AT_high_pc [DW_FORM_data4] (0x00000006) 16# CHECK: DW_TAG_subprogram 17# CHECK: DW_AT_low_pc [DW_FORM_addr] (0x00000042) 18# CHECK: DW_AT_high_pc [DW_FORM_data4] (0x00000006) 19# CHECK: DW_TAG_compile_unit 20# CHECK: DW_AT_addr_base 21# CHECK: DW_AT_ranges [DW_FORM_sec_offset] (0x0000000c 22# CHECK-NEXT: [0x00000042, 0x00000048) 23# CHECK-NEXT: [0x00000042, 0x00000048) 24# CHECK-NEXT: [0x00000042, 0x00000048) 25# CHECK-NEXT: [0x00000042, 0x00000042) 26# CHECK-NEXT: [0x00000042, 0x00000048) 27# CHECK-NEXT: [0x00000042, 0x00000048)) 28# CHECK: DW_TAG_subprogram 29# CHECK: DW_AT_low_pc [DW_FORM_addrx] (indexed (00000000) address = 0xffffffff (dead code)) 30# CHECK: DW_AT_high_pc [DW_FORM_data4] (0x00000006) 31# CHECK: DW_TAG_subprogram 32# CHECK: DW_AT_low_pc [DW_FORM_addrx] (indexed (00000001) address = 0x00000042) 33# CHECK: DW_AT_high_pc [DW_FORM_data4] (0x00000006) 34# CHECK: DW_TAG_compile_unit 35# CHECK: DW_AT_ranges [DW_FORM_sec_offset] (0x00000018 36# CHECK-NEXT: [0x0000000000000042, 0x0000000000000048)) 37# CHECK: DW_TAG_subprogram 38# CHECK: DW_AT_low_pc [DW_FORM_addr] (0xffffffffffffffff (dead code)) 39# CHECK: DW_AT_high_pc [DW_FORM_data4] (0x00000006) 40# CHECK: DW_TAG_subprogram 41# CHECK: DW_AT_low_pc [DW_FORM_addr] (0x0000000000000042) 42# CHECK: DW_AT_high_pc [DW_FORM_data4] (0x00000006) 43# CHECK: DW_TAG_compile_unit 44# CHECK: DW_AT_addr_base 45 46 47# CHECK: DW_AT_ranges 48# CHECK-NEXT: [0x0000000000000042, 0x0000000000000048) 49# CHECK-NEXT: [0x0000000000000042, 0x0000000000000048) 50# CHECK-NEXT: [0x0000000000000042, 0x0000000000000048) 51# CHECK-NEXT: [0x0000000000000042, 0x0000000000000042) 52# CHECK-NEXT: [0x0000000000000042, 0x0000000000000048) 53# CHECK-NEXT: [0x0000000000000042, 0x0000000000000048)) 54# CHECK: DW_TAG_subprogram 55# CHECK: DW_AT_low_pc [DW_FORM_addrx] (indexed (00000000) address = 0xffffffffffffffff (dead code)) 56# CHECK: DW_AT_high_pc [DW_FORM_data4] (0x00000006) 57# CHECK: DW_TAG_subprogram 58# CHECK: DW_AT_low_pc [DW_FORM_addrx] (indexed (00000001) address = 0x0000000000000042) 59# CHECK: DW_AT_high_pc [DW_FORM_data4] (0x00000006) 60 61# CHECK-DAG: .debug_line contents: 62# CHECK: Address Line 63# CHECK-NEXT: -------------- 64# CHECK-NEXT: DW_LNE_set_address (0xffffffff) 65# CHECK-NEXT: DW_LNS_copy 66# CHECK-NEXT: DW_LNS_advance_pc (addr += 1, op-index += 0) 67# CHECK-NEXT: DW_LNE_end_sequence 68# CHECK-NEXT: DW_LNE_set_address (0x00000042) 69# CHECK-NEXT: DW_LNS_copy 70# CHECK-NEXT: 0x0000000000000042 1 71# CHECK-NEXT: DW_LNS_advance_pc (addr += 1, op-index += 0) 72# CHECK-NEXT: DW_LNE_end_sequence 73# CHECK: Address Line 74# CHECK-NEXT: -------------- 75# CHECK-NEXT: DW_LNE_set_address (0xffffffffffffffff) 76# CHECK-NEXT: DW_LNS_copy 77# CHECK-NEXT: DW_LNS_advance_pc (addr += 1, op-index += 0) 78# CHECK-NEXT: DW_LNE_end_sequence 79# CHECK-NEXT: DW_LNE_set_address (0x0000000000000042) 80# CHECK-NEXT: DW_LNS_copy 81# CHECK-NEXT: 0x0000000000000042 1 82# CHECK-NEXT: DW_LNS_advance_pc (addr += 1, op-index += 0) 83# CHECK-NEXT: DW_LNE_end_sequence 84 85# Dumping of the debug_addr, ranges, and rnglists sections don't do anything 86# different with tombstoned addresses, but dump them just for 87# documentation/comparison with the tombstone-filtered renderings in the 88# debug_info section above 89 90# CHECK-DAG: .debug_addr contents: 91# CHECK-NEXT: addr_size = 0x04 92# CHECK-NEXT: Addrs: [ 93# CHECK-NEXT: 0xffffffff 94# CHECK-NEXT: 0x00000042 95# CHECK-NEXT: ] 96# CHECK-NEXT: addr_size = 0x08 97# CHECK-NEXT: Addrs: [ 98# CHECK-NEXT: 0xffffffffffffffff 99# CHECK-NEXT: 0x0000000000000042 100# CHECK-NEXT: ] 101 102# CHECK-DAG: .debug_ranges contents: 103# CHECK-NEXT: fffffffe fffffffe 104# CHECK-NEXT: 00000042 00000048 105# CHECK-NEXT: <End of list> 106# FIXME: Would be nice if we didn't assume all the contributions were of the 107# same address size, instead dumping them based on the address size of 108# the unit that references them. Maybe optimistically guessing at any 109# unreferenced chunks. (this would be more like libdwarf/dwarfdump). 110# But for now, these 64bit address ranges are mangled/being rendered 111# here as though they were a 32 bit address range. 112# CHECK-NEXT: fffffffe ffffffff 113# CHECK-NEXT: fffffffe ffffffff 114# CHECK-NEXT: 00000042 00000000 115# CHECK-NEXT: 00000048 00000000 116# CHECK-NEXT: <End of list> 117 118# CHECK-DAG: .debug_rnglists contents: 119# CHECK-NEXT: addr_size = 0x04 120# CHECK-NEXT: ranges: 121# CHECK-NEXT: [DW_RLE_start_length ]: 0xffffffff, 0x00000006 122# CHECK-NEXT: [DW_RLE_start_length ]: 0x00000042, 0x00000006 123# CHECK-NEXT: [DW_RLE_startx_length]: 0x00000000, 0x00000006 124# CHECK-NEXT: [DW_RLE_startx_length]: 0x00000001, 0x00000006 125# CHECK-NEXT: [DW_RLE_start_end ]: [0xffffffff, 0xffffffff) 126# CHECK-NEXT: [DW_RLE_start_end ]: [0x00000042, 0x00000048) 127# CHECK-NEXT: [DW_RLE_startx_endx ]: 0x00000000, 0x00000000 128# CHECK-NEXT: [DW_RLE_startx_endx ]: 0x00000001, 0x00000001 129# CHECK-NEXT: [DW_RLE_base_address ]: 0x00000040 130# CHECK-NEXT: [DW_RLE_offset_pair ]: 0x00000002, 0x00000008 => [0x00000042, 0x00000048) 131# CHECK-NEXT: [DW_RLE_base_address ]: 0xffffffff 132# CHECK-NEXT: [DW_RLE_offset_pair ]: 0x00000002, 0x00000008 => dead code 133# CHECK-NEXT: [DW_RLE_base_addressx]: 0x00000000 134# FIXME: Don't print "computed" values that aren't really computed/instead 135# still refer to the index instead of the resulting address 136# CHECK-NEXT: [DW_RLE_offset_pair ]: 0x00000000, 0x00000006 => [0x00000000, 0x00000006) 137# CHECK-NEXT: [DW_RLE_base_addressx]: 0x00000001 138# CHECK-NEXT: [DW_RLE_offset_pair ]: 0x00000000, 0x00000006 => [0x00000001, 0x00000007) 139# CHECK-NEXT: [DW_RLE_end_of_list ] 140# CHECK-NEXT: addr_size = 0x08 141# CHECK-NEXT: ranges: 142# CHECK-NEXT: [DW_RLE_start_length ]: 0xffffffffffffffff, 0x0000000000000006 143# CHECK-NEXT: [DW_RLE_start_length ]: 0x0000000000000042, 0x0000000000000006 144# CHECK-NEXT: [DW_RLE_startx_length]: 0x0000000000000000, 0x0000000000000006 145# CHECK-NEXT: [DW_RLE_startx_length]: 0x0000000000000001, 0x0000000000000006 146# CHECK-NEXT: [DW_RLE_start_end ]: [0xffffffffffffffff, 0xffffffffffffffff) 147# CHECK-NEXT: [DW_RLE_start_end ]: [0x0000000000000042, 0x0000000000000048) 148# CHECK-NEXT: [DW_RLE_startx_endx ]: 0x0000000000000000, 0x0000000000000000 149# CHECK-NEXT: [DW_RLE_startx_endx ]: 0x0000000000000001, 0x0000000000000001 150# CHECK-NEXT: [DW_RLE_base_address ]: 0x0000000000000040 151# CHECK-NEXT: [DW_RLE_offset_pair ]: 0x0000000000000002, 0x0000000000000008 => [0x0000000000000042, 0x0000000000000048) 152# CHECK-NEXT: [DW_RLE_base_address ]: 0xffffffffffffffff 153# CHECK-NEXT: [DW_RLE_offset_pair ]: 0x0000000000000002, 0x0000000000000008 => dead code 154# CHECK-NEXT: [DW_RLE_base_addressx]: 0x0000000000000000 155# CHECK-NEXT: [DW_RLE_offset_pair ]: 0x0000000000000000, 0x0000000000000006 => [0x0000000000000000, 0x0000000000000006) 156# CHECK-NEXT: [DW_RLE_base_addressx]: 0x0000000000000001 157# CHECK-NEXT: [DW_RLE_offset_pair ]: 0x0000000000000000, 0x0000000000000006 => [0x0000000000000001, 0x0000000000000007) 158# CHECK-NEXT: [DW_RLE_end_of_list ] 159 160 .section .debug_abbrev,"",@progbits 161.Ldebug_abbrev4: 162 .byte 1 # Abbreviation Code 163 .byte 17 # DW_TAG_compile_unit 164 .byte 1 # DW_CHILDREN_yes 165 .byte 85 # DW_AT_ranges 166 .byte 23 # DW_FORM_sec_offset 167 .byte 0 # EOM(1) 168 .byte 0 # EOM(2) 169 .byte 2 # Abbreviation Code 170 .byte 46 # DW_TAG_subprogram 171 .byte 0 # DW_CHILDREN_no 172 .byte 17 # DW_AT_low_pc 173 .byte 1 # DW_FORM_addr 174 .byte 18 # DW_AT_high_pc 175 .byte 6 # DW_FORM_data4 176 .byte 0 # EOM(1) 177 .byte 0 # EOM(2) 178 .byte 0 # EOM(3) 179.Ldebug_abbrev5: 180 .byte 1 # Abbreviation Code 181 .byte 17 # DW_TAG_compile_unit 182 .byte 1 # DW_CHILDREN_yes 183 .byte 115 # DW_AT_addr_base 184 .byte 23 # DW_FORM_sec_offset 185 .byte 85 # DW_AT_ranges 186 .byte 23 # DW_FORM_sec_offset 187 .byte 0 # EOM(1) 188 .byte 0 # EOM(2) 189 .byte 2 # Abbreviation Code 190 .byte 46 # DW_TAG_subprogram 191 .byte 0 # DW_CHILDREN_no 192 .byte 17 # DW_AT_low_pc 193 .byte 27 # DW_FORM_addrx 194 .byte 18 # DW_AT_high_pc 195 .byte 6 # DW_FORM_data4 196 .byte 0 # EOM(1) 197 .byte 0 # EOM(2) 198 .byte 0 # EOM(3) 199 200 .section .debug_info,"",@progbits 201 .long .Ldebug_info4_end-.Ldebug_info4_begin # Length of Unit 202.Ldebug_info4_begin: 203 .short 4 # DWARF version number 204 .long .Ldebug_abbrev4 # Offset Into Abbrev. Section 205 .byte 4 # Address Size (in bytes) 206 .byte 1 # Abbrev [1] 0xb:0x4a DW_TAG_compile_unit 207 .long .Ldebug_ranges # DW_AT_ranges 208 .byte 2 # Abbrev [2] 0x2a:0x15 DW_TAG_subprogram 209 .long 0xffffffff # DW_AT_low_pc 210 .long 0x6 # DW_AT_high_pc 211 .byte 2 # Abbrev [2] 0x3f:0x15 DW_TAG_subprogram 212 .long 0x42 # DW_AT_low_pc 213 .long 0x6 # DW_AT_high_pc 214 .byte 0 # End Of Children Mark 215.Ldebug_info4_end: 216 .long .Ldebug_info5_end-.Ldebug_info5_begin # Length of Unit 217.Ldebug_info5_begin: 218 .short 5 # DWARF version number 219 .byte 1 # DWARF Unit Type 220 .byte 4 # Address Size (in bytes) 221 .long .Ldebug_abbrev5 # Offset Into Abbrev. Section 222 .byte 1 # Abbrev [1] 0xb:0x4a DW_TAG_compile_unit 223 .long .Ldebug_addr_base # DW_AT_addr_base 224 .long .Ldebug_rnglists # DW_AT_ranges 225 .byte 2 # Abbrev [2] 0x2a:0x15 DW_TAG_subprogram 226 .uleb128 0 # DW_AT_low_pc 227 .long 0x6 # DW_AT_high_pc 228 .byte 2 # Abbrev [2] 0x3f:0x15 DW_TAG_subprogram 229 .uleb128 1 # DW_AT_low_pc 230 .long 0x6 # DW_AT_high_pc 231 .byte 0 # End Of Children Mark 232.Ldebug_info5_end: 233 .long .Ldebug_info4_64_end-.Ldebug_info4_64_begin # Length of Unit 234.Ldebug_info4_64_begin: 235 .short 4 # DWARF version number 236 .long .Ldebug_abbrev4 # Offset Into Abbrev. Section 237 .byte 8 # Address Size (in bytes) 238 .byte 1 # Abbrev [1] 0xb:0x4a DW_TAG_compile_unit 239 .long .Ldebug_ranges_64 # DW_AT_ranges 240 .byte 2 # Abbrev [2] 0x2a:0x15 DW_TAG_subprogram 241 .quad 0xffffffffffffffff # DW_AT_low_pc 242 .long 0x6 # DW_AT_high_pc 243 .byte 2 # Abbrev [2] 0x3f:0x15 DW_TAG_subprogram 244 .quad 0x42 # DW_AT_low_pc 245 .long 0x6 # DW_AT_high_pc 246 .byte 0 # End Of Children Mark 247.Ldebug_info4_64_end: 248 .long .Ldebug_info5_64_end-.Ldebug_info5_64_begin # Length of Unit 249.Ldebug_info5_64_begin: 250 .short 5 # DWARF version number 251 .byte 1 # DWARF Unit Type 252 .byte 8 # Address Size (in bytes) 253 .long .Ldebug_abbrev5 # Offset Into Abbrev. Section 254 .byte 1 # Abbrev [1] 0xb:0x4a DW_TAG_compile_unit 255 .long .Ldebug_addr_64_base # DW_AT_addr_base 256 .long .Ldebug_rnglists_64 # DW_AT_ranges 257 .byte 2 # Abbrev [2] 0x2a:0x15 DW_TAG_subprogram 258 .uleb128 0 # DW_AT_low_pc 259 .long 0x6 # DW_AT_high_pc 260 .byte 2 # Abbrev [2] 0x3f:0x15 DW_TAG_subprogram 261 .uleb128 1 # DW_AT_low_pc 262 .long 0x6 # DW_AT_high_pc 263 .byte 0 # End Of Children Mark 264.Ldebug_info5_64_end: 265 266 .section .debug_ranges,"",@progbits 267.Ldebug_ranges: 268 .long 0xfffffffe 269 .long 0xfffffffe 270 .long 0x42 271 .long 0x48 272 .long 0 273 .long 0 274.Ldebug_ranges_64: 275 .quad 0xfffffffffffffffe 276 .quad 0xfffffffffffffffe 277 .quad 0x42 278 .quad 0x48 279 .quad 0 280 .quad 0 281 282 .section .debug_rnglists,"",@progbits 283 .long .Ldebug_rnglists_end-.Ldebug_rnglists_begin # Length 284.Ldebug_rnglists_begin: 285 .short 5 # Version 286 .byte 4 # Address size 287 .byte 0 # Segment selector size 288 .long 0 # Offset entry count 289.Ldebug_rnglists: 290 .byte 7 # DW_RLE_start_length 291 .long 0xffffffff # start address 292 .uleb128 0x6 # length 293 .byte 7 # DW_RLE_start_length 294 .long 0x42 # start address 295 .uleb128 0x6 # length 296 .byte 3 # DW_RLE_startx_length 297 .uleb128 0 # start index 298 .uleb128 0x6 # length 299 .byte 3 # DW_RLE_startx_length 300 .uleb128 1 # start index 301 .uleb128 0x6 # length 302 .byte 6 # DW_RLE_start_end 303 .long 0xffffffff # start address 304 .long 0xffffffff # end address 305 .byte 6 # DW_RLE_start_end 306 .long 0x42 # start address 307 .long 0x48 # length 308 .byte 2 # DW_RLE_startx_endx 309 .uleb128 0 # start index 310 .uleb128 0 # end index 311 .byte 2 # DW_RLE_startx_endx 312 .uleb128 1 # start index 313 .uleb128 1 # end index 314 .byte 5 # DW_RLE_base_address 315 .long 0x40 # address 316 .byte 4 # DW_RLE_offset_pair 317 .uleb128 2 # start offset 318 .uleb128 8 # end offset 319 .byte 5 # DW_RLE_base_address 320 .long 0xffffffff # address 321 .byte 4 # DW_RLE_offset_pair 322 .uleb128 2 # start offset 323 .uleb128 8 # end offset 324 .byte 1 # DW_RLE_base_addressx 325 .uleb128 0 # address 326 .byte 4 # DW_RLE_offset_pair 327 .uleb128 0 # start offset 328 .uleb128 6 # end offset 329 .byte 1 # DW_RLE_base_addressx 330 .uleb128 1 # address 331 .byte 4 # DW_RLE_offset_pair 332 .uleb128 0 # start offset 333 .uleb128 6 # end offset 334 .byte 0 # DW_RLE_end_of_list 335.Ldebug_rnglists_end: 336 .long .Ldebug_rnglists_64_end-.Ldebug_rnglists_64_begin # Length 337.Ldebug_rnglists_64_begin: 338 .short 5 # Version 339 .byte 8 # Address size 340 .byte 0 # Segment selector size 341 .long 0 # Offset entry count 342.Ldebug_rnglists_64: 343 .byte 7 # DW_RLE_start_length 344 .quad 0xffffffffffffffff # start address 345 .uleb128 0x6 # length 346 .byte 7 # DW_RLE_start_length 347 .quad 0x42 # start address 348 .uleb128 0x6 # length 349 .byte 3 # DW_RLE_startx_length 350 .uleb128 0 # start index 351 .uleb128 0x6 # length 352 .byte 3 # DW_RLE_startx_length 353 .uleb128 1 # start index 354 .uleb128 0x6 # length 355 .byte 6 # DW_RLE_start_end 356 .quad 0xffffffffffffffff # start address 357 .quad 0xffffffffffffffff # end address 358 .byte 6 # DW_RLE_start_end 359 .quad 0x42 # start address 360 .quad 0x48 # length 361 .byte 2 # DW_RLE_startx_endx 362 .uleb128 0 # start index 363 .uleb128 0 # end index 364 .byte 2 # DW_RLE_startx_endx 365 .uleb128 1 # start index 366 .uleb128 1 # end index 367 .byte 5 # DW_RLE_base_address 368 .quad 0x40 # address 369 .byte 4 # DW_RLE_offset_pair 370 .uleb128 2 # start offset 371 .uleb128 8 # end offset 372 .byte 5 # DW_RLE_base_address 373 .quad 0xffffffffffffffff # address 374 .byte 4 # DW_RLE_offset_pair 375 .uleb128 2 # start offset 376 .uleb128 8 # end offset 377 .byte 1 # DW_RLE_base_addressx 378 .uleb128 0 # address 379 .byte 4 # DW_RLE_offset_pair 380 .uleb128 0 # start offset 381 .uleb128 6 # end offset 382 .byte 1 # DW_RLE_base_addressx 383 .uleb128 1 # address 384 .byte 4 # DW_RLE_offset_pair 385 .uleb128 0 # start offset 386 .uleb128 6 # end offset 387 .byte 0 # DW_RLE_end_of_list 388.Ldebug_rnglists_64_end: 389 390 .section .debug_addr,"",@progbits 391 .long .Ldebug_addr_end-.Ldebug_addr_begin # Length of contribution 392.Ldebug_addr_begin: 393 .short 5 # DWARF version number 394 .byte 4 # Address size 395 .byte 0 # Segment selector size 396.Ldebug_addr_base: 397 .long 0xffffffff 398 .long 0x42 399.Ldebug_addr_end: 400 .long .Ldebug_addr_64_end-.Ldebug_addr_64_begin # Length of contribution 401.Ldebug_addr_64_begin: 402 .short 5 # DWARF version number 403 .byte 8 # Address size 404 .byte 0 # Segment selector size 405.Ldebug_addr_64_base: 406 .quad 0xffffffffffffffff 407 .quad 0x42 408.Ldebug_addr_64_end: 409 410 .section .debug_line,"",@progbits 411.Ldebug_line5: 412 .long .Ldebug_line5_end-.Ldebug_line5_begin # Length of Unit (DWARF-32 format) 413.Ldebug_line5_begin: 414 .short 5 # DWARF version number 415 .byte 4 # Address Size 416 .byte 0 # Segment Selector Size 417 .long .Ldebug_line5_header_end-.Ldebug_line5_header_begin # Length of Prologue 418.Ldebug_line5_header_begin: 419 .byte 1 # Minimum Instruction Length 420 .byte 1 # Maximum Operations per Instruction 421 .byte 1 # Default is_stmt 422 .byte -5 # Line Base 423 .byte 14 # Line Range 424 .byte 13 # Opcode Base 425 .byte 0 # Standard Opcode Lengths 426 .byte 1 427 .byte 1 428 .byte 1 429 .byte 1 430 .byte 0 431 .byte 0 432 .byte 0 433 .byte 1 434 .byte 0 435 .byte 0 436 .byte 1 437 # Directory table format 438 .byte 1 # One element per directory entry 439 .byte 1 # DW_LNCT_path 440 .byte 0x08 # DW_FORM_string 441 # Directory table entries 442 .byte 1 # Two directory entries 443 .asciz "dir1" 444 # File table format 445 .byte 2 # Four elements per file entry 446 .byte 2 # DW_LNCT_directory_index 447 .byte 0x0b # DW_FORM_data1 448 .byte 1 # DW_LNCT_path 449 .byte 0x08 # DW_FORM_string 450 # File table entries 451 .byte 1 # Two file entries 452 .byte 1 453 .asciz "file1" 454.Ldebug_line5_header_end: 455 .byte 0 # Extended opcode 456 .byte 5 # Size 5 457 .byte 2 # Opcode: DW_LNE_set_address 458 .long 0xffffffff # address 459 .byte 1 # DW_LNS_copy 460 .byte 2 # DW_LNS_advance_pc 461 .uleb128 1 # instruction increment 462 .byte 0 # Extended opcode 463 .byte 1 # Size 1 464 .byte 1 # Opcode: DW_LNE_end_sequence 465 .byte 0 # Extended opcode 466 .byte 5 # Size 5 467 .byte 2 # Opcode: DW_LNE_set_address 468 .long 0x42 # address 469 .byte 1 # DW_LNS_copy 470 .byte 2 # DW_LNS_advance_pc 471 .uleb128 1 # instruction increment 472 .byte 0 # Extended opcode 473 .byte 1 # Size 1 474 .byte 1 # Opcode: DW_LNE_end_sequence 475.Ldebug_line5_end: 476 477.Ldebug_line5_64: 478 .long .Ldebug_line5_64_end-.Ldebug_line5_64_begin # Length of Unit (DWARF-32 format) 479.Ldebug_line5_64_begin: 480 .short 5 # DWARF version number 481 .byte 8 # Address Size 482 .byte 0 # Segment Selector Size 483 .long .Ldebug_line5_64_header_end-.Ldebug_line5_64_header_begin # Length of Prologue 484.Ldebug_line5_64_header_begin: 485 .byte 1 # Minimum Instruction Length 486 .byte 1 # Maximum Operations per Instruction 487 .byte 1 # Default is_stmt 488 .byte -5 # Line Base 489 .byte 14 # Line Range 490 .byte 13 # Opcode Base 491 .byte 0 # Standard Opcode Lengths 492 .byte 1 493 .byte 1 494 .byte 1 495 .byte 1 496 .byte 0 497 .byte 0 498 .byte 0 499 .byte 1 500 .byte 0 501 .byte 0 502 .byte 1 503 # Directory table format 504 .byte 1 # One element per directory entry 505 .byte 1 # DW_LNCT_path 506 .byte 0x08 # DW_FORM_string 507 # Directory table entries 508 .byte 1 # Two directory entries 509 .asciz "dir1" 510 # File table format 511 .byte 2 # Four elements per file entry 512 .byte 2 # DW_LNCT_directory_index 513 .byte 0x0b # DW_FORM_data1 514 .byte 1 # DW_LNCT_path 515 .byte 0x08 # DW_FORM_string 516 # File table entries 517 .byte 1 # Two file entries 518 .byte 1 519 .asciz "file1" 520.Ldebug_line5_64_header_end: 521 .byte 0 # Extended opcode 522 .byte 9 # Size 9 523 .byte 2 # Opcode: DW_LNE_set_address 524 .quad 0xffffffffffffffff # address 525 .byte 1 # DW_LNS_copy 526 .byte 2 # DW_LNS_advance_pc 527 .uleb128 1 # instruction increment 528 .byte 0 # Extended opcode 529 .byte 1 # Size 1 530 .byte 1 # Opcode: DW_LNE_end_sequence 531 .byte 0 # Extended opcode 532 .byte 9 # Size 9 533 .byte 2 # Opcode: DW_LNE_set_address 534 .quad 0x42 # address 535 .byte 1 # DW_LNS_copy 536 .byte 2 # DW_LNS_advance_pc 537 .uleb128 1 # instruction increment 538 .byte 0 # Extended opcode 539 .byte 1 # Size 1 540 .byte 1 # Opcode: DW_LNE_end_sequence 541.Ldebug_line5_64_end: 542 543