xref: /llvm-project/llvm/test/DebugInfo/X86/dwarfdump-debug-loclists.test (revision def677194c43c04fcd9a45434a83f65cae1dc76a)
14c7dd9cfSGeorge Rimar# RUN: llvm-mc %s -filetype obj -triple x86_64-pc-linux -o %t.o
24c7dd9cfSGeorge Rimar# RUN: llvm-dwarfdump -v %t.o | FileCheck %s
34c7dd9cfSGeorge Rimar
44c7dd9cfSGeorge Rimar# CHECK:      .debug_info
54c7dd9cfSGeorge Rimar# CHECK:       DW_AT_name{{.*}}"stub"
64c7dd9cfSGeorge Rimar# CHECK:       DW_AT_location [DW_FORM_sec_offset]   (0x0000000c
720923209SGeorge Rimar# CHECK-NEXT:    [0x0000000000000010, 0x0000000000000020): DW_OP_breg5 RDI+0
820923209SGeorge Rimar# CHECK-NEXT:    [0x0000000000000530, 0x0000000000000540): DW_OP_breg6 RBP-8, DW_OP_deref
920923209SGeorge Rimar# CHECK-NEXT:    [0x0000000000000700, 0x0000000000000710): DW_OP_breg5 RDI+0
104c7dd9cfSGeorge Rimar
114c7dd9cfSGeorge Rimar# CHECK:      .debug_loclists contents:
12*def67719SIgor Kudrin# CHECK-NEXT: 0x00000000: locations list header: length = 0x0000002c, format = DWARF32, version = 0x0005, addr_size = 0x08, seg_size = 0x00, offset_entry_count = 0x00000000
13411497c6SDavid Blaikie# CHECK-NEXT: 0x0000000c:
14eafe0cf5SPavel Labath# CHECK-NEXT:   DW_LLE_offset_pair  (0x0000000000000000, 0x0000000000000010): DW_OP_breg5 RDI+0
15f358c3d3SDavid Blaikie# CHECK-NEXT:   DW_LLE_base_address (0x0000000000000500)
16f358c3d3SDavid Blaikie# CHECK-NEXT:   DW_LLE_offset_pair  (0x0000000000000030, 0x0000000000000040)
17f358c3d3SDavid Blaikie# CHECK-NEXT:                   => [0x0000000000000530, 0x0000000000000540): DW_OP_breg6 RBP-8, DW_OP_deref
18f358c3d3SDavid Blaikie# CHECK-NEXT:   DW_LLE_start_length (0x0000000000000700, 0x0000000000000010)
19f358c3d3SDavid Blaikie# CHECK-NEXT:                   => [0x0000000000000700, 0x0000000000000710): DW_OP_breg5 RDI+0
20f358c3d3SDavid Blaikie# CHECK-NEXT:   DW_LLE_end_of_list  ()
214c7dd9cfSGeorge Rimar
224c7dd9cfSGeorge Rimar.section  .debug_str,"MS",@progbits,1
234c7dd9cfSGeorge Rimar  .asciz  "stub"
244c7dd9cfSGeorge Rimar
254c7dd9cfSGeorge Rimar.section  .debug_str_offsets,"",@progbits
264c7dd9cfSGeorge Rimar  .long  68
274c7dd9cfSGeorge Rimar  .short  5
284c7dd9cfSGeorge Rimar  .short  0
294c7dd9cfSGeorge Rimar.Lstr_offsets_base0:
304c7dd9cfSGeorge Rimar  .zero 64
314c7dd9cfSGeorge Rimar
324c7dd9cfSGeorge Rimar.section  .debug_loclists,"",@progbits
334c7dd9cfSGeorge Rimar  .long  .Ldebug_loclist_table_end0-.Ldebug_loclist_table_start0
344c7dd9cfSGeorge Rimar.Ldebug_loclist_table_start0:
354c7dd9cfSGeorge Rimar .short 5                        # Version.
364c7dd9cfSGeorge Rimar .byte 8                         # Address size.
374c7dd9cfSGeorge Rimar .byte 0                         # Segmen selector size.
384c7dd9cfSGeorge Rimar .long 0                         # Offset entry count.
394c7dd9cfSGeorge Rimar.Lloclists_table_base0:
404c7dd9cfSGeorge Rimar.Ldebug_loc0:
414c7dd9cfSGeorge Rimar  .byte  4                       # DW_LLE_offset_pair
424c7dd9cfSGeorge Rimar  .uleb128 0x0                   #   starting offset
434c7dd9cfSGeorge Rimar  .uleb128 0x10                  #   ending offset
4458513b77SWolfgang Pieb  .byte  2                       # Loc expr size
454c7dd9cfSGeorge Rimar  .byte  117                     # DW_OP_breg5
464c7dd9cfSGeorge Rimar  .byte  0                       # 0
474c7dd9cfSGeorge Rimar
484c7dd9cfSGeorge Rimar  .byte  6                       # DW_LLE_base_address
494c7dd9cfSGeorge Rimar  .quad  0x500                   # Some address
504c7dd9cfSGeorge Rimar
514c7dd9cfSGeorge Rimar  .byte  4                       # DW_LLE_offset_pair
524c7dd9cfSGeorge Rimar  .uleb128 0x30                  #   starting offset
534c7dd9cfSGeorge Rimar  .uleb128 0x40                  #   ending offset
5458513b77SWolfgang Pieb  .byte  3                       # Loc expr size
554c7dd9cfSGeorge Rimar  .byte  118                     # DW_OP_breg6
564c7dd9cfSGeorge Rimar  .byte  120                     # -8
574c7dd9cfSGeorge Rimar  .byte  6                       # DW_OP_deref
584c7dd9cfSGeorge Rimar
594c7dd9cfSGeorge Rimar  .byte  8                       # DW_LLE_start_length
604c7dd9cfSGeorge Rimar  .quad  0x700                   # Some address
614c7dd9cfSGeorge Rimar  .uleb128 0x10                  #   length
6258513b77SWolfgang Pieb  .byte  2                       # Loc expr size
634c7dd9cfSGeorge Rimar  .byte  117                     # DW_OP_breg5
644c7dd9cfSGeorge Rimar  .byte  0                       # 0
654c7dd9cfSGeorge Rimar
664c7dd9cfSGeorge Rimar  .byte  0                       # DW_LLE_end_of_list
674c7dd9cfSGeorge Rimar
684c7dd9cfSGeorge Rimar.Ldebug_loclist_table_end0:
694c7dd9cfSGeorge Rimar
704c7dd9cfSGeorge Rimar.section  .debug_abbrev,"",@progbits
714c7dd9cfSGeorge Rimar  .byte  1                       # Abbreviation Code
724c7dd9cfSGeorge Rimar  .byte  17                      # DW_TAG_compile_unit
734c7dd9cfSGeorge Rimar  .byte  1                       # DW_CHILDREN_yes
744c7dd9cfSGeorge Rimar  .byte  37                      # DW_AT_producer
754c7dd9cfSGeorge Rimar  .byte  37                      # DW_FORM_strx1
764c7dd9cfSGeorge Rimar  .byte  19                      # DW_AT_language
774c7dd9cfSGeorge Rimar  .byte  5                       # DW_FORM_data2
784c7dd9cfSGeorge Rimar  .byte  3                       # DW_AT_name
794c7dd9cfSGeorge Rimar  .byte  37                      # DW_FORM_strx1
804c7dd9cfSGeorge Rimar  .byte  114                     # DW_AT_str_offsets_base
814c7dd9cfSGeorge Rimar  .byte  23                      # DW_FORM_sec_offset
824c7dd9cfSGeorge Rimar  .byte  16                      # DW_AT_stmt_list
834c7dd9cfSGeorge Rimar  .byte  23                      # DW_FORM_sec_offset
844c7dd9cfSGeorge Rimar  .byte  27                      # DW_AT_comp_dir
854c7dd9cfSGeorge Rimar  .byte  37                      # DW_FORM_strx1
864c7dd9cfSGeorge Rimar  .byte  17                      # DW_AT_low_pc
874c7dd9cfSGeorge Rimar  .byte  1                       # DW_FORM_addr
884c7dd9cfSGeorge Rimar  .byte  18                      # DW_AT_high_pc
894c7dd9cfSGeorge Rimar  .byte  6                       # DW_FORM_data4
904c7dd9cfSGeorge Rimar  .ascii  "\214\001"             # DW_AT_loclists_base
914c7dd9cfSGeorge Rimar  .byte  23                      # DW_FORM_sec_offset
924c7dd9cfSGeorge Rimar  .byte  0                       # EOM(1)
934c7dd9cfSGeorge Rimar  .byte  0                       # EOM(2)
944c7dd9cfSGeorge Rimar  .byte  2                       # Abbreviation Code
954c7dd9cfSGeorge Rimar  .byte  46                      # DW_TAG_subprogram
964c7dd9cfSGeorge Rimar  .byte  1                       # DW_CHILDREN_yes
974c7dd9cfSGeorge Rimar  .byte  17                      # DW_AT_low_pc
984c7dd9cfSGeorge Rimar  .byte  1                       # DW_FORM_addr
994c7dd9cfSGeorge Rimar  .byte  18                      # DW_AT_high_pc
1004c7dd9cfSGeorge Rimar  .byte  6                       # DW_FORM_data4
1014c7dd9cfSGeorge Rimar  .byte  64                      # DW_AT_frame_base
1024c7dd9cfSGeorge Rimar  .byte  24                      # DW_FORM_exprloc
1034c7dd9cfSGeorge Rimar  .byte  110                     # DW_AT_linkage_name
1044c7dd9cfSGeorge Rimar  .byte  37                      # DW_FORM_strx1
1054c7dd9cfSGeorge Rimar  .byte  3                       # DW_AT_name
1064c7dd9cfSGeorge Rimar  .byte  37                      # DW_FORM_strx1
1074c7dd9cfSGeorge Rimar  .byte  58                      # DW_AT_decl_file
1084c7dd9cfSGeorge Rimar  .byte  11                      # DW_FORM_data1
1094c7dd9cfSGeorge Rimar  .byte  59                      # DW_AT_decl_line
1104c7dd9cfSGeorge Rimar  .byte  11                      # DW_FORM_data1
1114c7dd9cfSGeorge Rimar  .byte  63                      # DW_AT_external
1124c7dd9cfSGeorge Rimar  .byte  25                      # DW_FORM_flag_present
1134c7dd9cfSGeorge Rimar  .byte  0                       # EOM(1)
1144c7dd9cfSGeorge Rimar  .byte  0                       # EOM(2)
1154c7dd9cfSGeorge Rimar  .byte  3                       # Abbreviation Code
1164c7dd9cfSGeorge Rimar  .byte  52                      # DW_TAG_variable
1174c7dd9cfSGeorge Rimar  .byte  0                       # DW_CHILDREN_no
1184c7dd9cfSGeorge Rimar  .byte  2                       # DW_AT_location
1194c7dd9cfSGeorge Rimar  .byte  23                      # DW_FORM_sec_offset
1204c7dd9cfSGeorge Rimar  .byte  3                       # DW_AT_name
1214c7dd9cfSGeorge Rimar  .byte  37                      # DW_FORM_strx1
1224c7dd9cfSGeorge Rimar  .byte  58                      # DW_AT_decl_file
1234c7dd9cfSGeorge Rimar  .byte  11                      # DW_FORM_data1
1244c7dd9cfSGeorge Rimar  .byte  59                      # DW_AT_decl_line
1254c7dd9cfSGeorge Rimar  .byte  11                      # DW_FORM_data1
1264c7dd9cfSGeorge Rimar  .byte  73                      # DW_AT_type
1274c7dd9cfSGeorge Rimar  .byte  19                      # DW_FORM_ref4
1284c7dd9cfSGeorge Rimar  .byte  0                       # EOM(1)
1294c7dd9cfSGeorge Rimar  .byte  0                       # EOM(2)
1304c7dd9cfSGeorge Rimar  .byte  0                       # EOM(3)
1314c7dd9cfSGeorge Rimar
1324c7dd9cfSGeorge Rimar.section  .debug_info,"",@progbits
1334c7dd9cfSGeorge Rimar.Lcu_begin0:
1344c7dd9cfSGeorge Rimar  .long  70                      # Length of Unit
1354c7dd9cfSGeorge Rimar  .short  5                      # DWARF version number
1364c7dd9cfSGeorge Rimar  .byte  1                       # DWARF Unit Type
1374c7dd9cfSGeorge Rimar  .byte  8                       # Address Size (in bytes)
1384c7dd9cfSGeorge Rimar  .long  .debug_abbrev           # Offset Into Abbrev. Section
1394c7dd9cfSGeorge Rimar  .byte  1                       # Abbrev [1] 0xc:0xef DW_TAG_compile_unit
1404c7dd9cfSGeorge Rimar  .byte  0                       # DW_AT_producer
1414c7dd9cfSGeorge Rimar  .short  4                      # DW_AT_language
1424c7dd9cfSGeorge Rimar  .byte  1                       # DW_AT_name
1434c7dd9cfSGeorge Rimar  .long  .Lstr_offsets_base0     # DW_AT_str_offsets_base
1444c7dd9cfSGeorge Rimar  .long  .Lline_table_start0     # DW_AT_stmt_list
1454c7dd9cfSGeorge Rimar  .byte  2                       # DW_AT_comp_dir
1464c7dd9cfSGeorge Rimar  .quad  0x10                    # DW_AT_low_pc
1474c7dd9cfSGeorge Rimar  .long  0                       # DW_AT_high_pc
1484c7dd9cfSGeorge Rimar  .long  .Lloclists_table_base0  # DW_AT_loclists_base
1494c7dd9cfSGeorge Rimar  .byte  2                       # Abbrev [2] 0x2a:0x20 DW_TAG_subprogram
1504c7dd9cfSGeorge Rimar  .quad  0                       # DW_AT_low_pc
1514c7dd9cfSGeorge Rimar  .long  0                       # DW_AT_high_pc
1524c7dd9cfSGeorge Rimar  .byte  1                       # DW_AT_frame_base
1534c7dd9cfSGeorge Rimar  .byte  86
1544c7dd9cfSGeorge Rimar  .byte  11                      # DW_AT_linkage_name
1554c7dd9cfSGeorge Rimar  .byte  12                      # DW_AT_name
1564c7dd9cfSGeorge Rimar  .byte  1                       # DW_AT_decl_file
1574c7dd9cfSGeorge Rimar  .byte  6                       # DW_AT_decl_line
1584c7dd9cfSGeorge Rimar                                 # DW_AT_external
1594c7dd9cfSGeorge Rimar  .byte 3                        # Abbrev [3] 0x40:0xb DW_TAG_variable
1604c7dd9cfSGeorge Rimar  .long .Ldebug_loc0             # DW_AT_location
1614c7dd9cfSGeorge Rimar  .byte 7                        # DW_AT_name
1624c7dd9cfSGeorge Rimar  .byte 1                        # DW_AT_decl_file
1634c7dd9cfSGeorge Rimar  .byte 6                        # DW_AT_decl_line
1644c7dd9cfSGeorge Rimar  .long 76                       # DW_AT_type
1654c7dd9cfSGeorge Rimar  .byte 0                        # End Of Children Mark
1664c7dd9cfSGeorge Rimar  .byte 0                        # End Of Children Mark
1674c7dd9cfSGeorge Rimar  .byte  0                       # End Of Children Mark
1684c7dd9cfSGeorge Rimar
1694c7dd9cfSGeorge Rimar.section .debug_line,"",@progbits
1704c7dd9cfSGeorge Rimar.Lline_table_start0:
1714c7dd9cfSGeorge Rimar
172