xref: /llvm-project/lldb/test/Shell/SymbolFile/DWARF/x86/debug_ranges.s (revision 8a64d80a959bf2844df33f9112e456f33de7b468)
1# RUN: llvm-mc -triple=x86_64-pc-linux -filetype=obj %s > %t
2# RUN: %lldb %t -o "image lookup -v -s lookup_ranges" -o exit | FileCheck %s
3
4# CHECK:  Function: id = {0x0000002b}, name = "ranges", range = [0x0000000000000000-0x0000000000000004)
5# CHECK:    Blocks: id = {0x0000002b}, range = [0x00000000-0x00000004)
6# CHECK-NEXT:       id = {0x0000003f}, ranges = [0x00000001-0x00000002)[0x00000003-0x00000004)
7
8        .text
9        .p2align 12
10ranges:
11        nop
12.Lblock1_begin:
13lookup_ranges:
14        nop
15.Lblock1_end:
16        nop
17.Lblock2_begin:
18        nop
19.Lblock2_end:
20.Lranges_end:
21
22        .section        .debug_abbrev,"",@progbits
23        .byte   1                       # Abbreviation Code
24        .byte   17                      # DW_TAG_compile_unit
25        .byte   1                       # DW_CHILDREN_yes
26        .byte   37                      # DW_AT_producer
27        .byte   8                       # DW_FORM_string
28        .byte   17                      # DW_AT_low_pc
29        .byte   1                       # DW_FORM_addr
30        .byte   18                      # DW_AT_high_pc
31        .byte   6                       # DW_FORM_data4
32        .byte   0                       # EOM(1)
33        .byte   0                       # EOM(2)
34        .byte   2                       # Abbreviation Code
35        .byte   46                      # DW_TAG_subprogram
36        .byte   1                       # DW_CHILDREN_yes
37        .byte   17                      # DW_AT_low_pc
38        .byte   1                       # DW_FORM_addr
39        .byte   18                      # DW_AT_high_pc
40        .byte   6                       # DW_FORM_data4
41        .byte   3                       # DW_AT_name
42        .byte   8                       # DW_FORM_string
43        .byte   0                       # EOM(1)
44        .byte   0                       # EOM(2)
45        .byte   5                       # Abbreviation Code
46        .byte   11                      # DW_TAG_lexical_block
47        .byte   0                       # DW_CHILDREN_no
48        .byte   85                      # DW_AT_ranges
49        .byte   23                      # DW_FORM_sec_offset
50        .byte   0                       # EOM(1)
51        .byte   0                       # EOM(2)
52        .byte   0                       # EOM(3)
53
54        .section        .debug_info,"",@progbits
55.Lcu_begin0:
56        .long   .Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit
57.Ldebug_info_start0:
58        .short  4                       # DWARF version number
59        .long   .debug_abbrev           # Offset Into Abbrev. Section
60        .byte   8                       # Address Size (in bytes)
61        .byte   1                       # Abbrev [1] 0xb:0x7b DW_TAG_compile_unit
62        .asciz  "Hand-written DWARF"    # DW_AT_producer
63        .quad   ranges                  # DW_AT_low_pc
64        .long   .Lranges_end-ranges     # DW_AT_high_pc
65        .byte   2                       # Abbrev [2] 0x2a:0x4d DW_TAG_subprogram
66        .quad   ranges                  # DW_AT_low_pc
67        .long   .Lranges_end-ranges     # DW_AT_high_pc
68        .asciz  "ranges"                # DW_AT_name
69        .byte   5                       # Abbrev [5] 0x61:0x15 DW_TAG_lexical_block
70        .long   .Ldebug_ranges0         # DW_AT_ranges
71        .byte   0                       # End Of Children Mark
72        .byte   0                       # End Of Children Mark
73.Ldebug_info_end0:
74
75        .section        .debug_ranges,"",@progbits
76.Ldebug_ranges0:
77        .quad   .Lblock1_begin-ranges
78        .quad   .Lblock1_end-ranges
79        .quad   .Lblock2_begin-ranges
80        .quad   .Lblock2_end-ranges
81        .quad   0
82        .quad   0
83