xref: /llvm-project/lldb/test/Shell/SymbolFile/DWARF/x86/limit-debug-info.s (revision d875838e8b45cb0da5070298d0c1a2d1ee78ce7e)
1# REQUIRES: lld
2# RUN: llvm-mc --triple=x86_64-pc-windows --filetype=obj --defsym DLL=0 %s >%t.dll.o
3# RUN: llvm-mc --triple=x86_64-pc-windows --filetype=obj --defsym EXE=0 %s >%t.exe.o
4# RUN: lld-link /OUT:%t.dll %t.dll.o /SUBSYSTEM:console /dll /noentry /debug
5# RUN: lld-link /OUT:%t.exe %t.exe.o /SUBSYSTEM:console /debug /force
6# RUN: %lldb %t.exe -o "target modules add %t.dll" -o "expression var" \
7# RUN:   -o exit 2>&1 | FileCheck %s
8
9# CHECK: (lldb) expression var
10# CHECK: (A) $0 = (member = 47)
11
12        .section        .debug_abbrev,"dr"
13.Lsection_abbrev:
14        .byte   1                       # Abbreviation Code
15        .byte   17                      # DW_TAG_compile_unit
16        .byte   1                       # DW_CHILDREN_yes
17        .byte   37                      # DW_AT_producer
18        .byte   8                       # DW_FORM_string
19        .byte   0                       # EOM(1)
20        .byte   0                       # EOM(2)
21        .byte   2                       # Abbreviation Code
22        .byte   52                      # DW_TAG_variable
23        .byte   0                       # DW_CHILDREN_no
24        .byte   3                       # DW_AT_name
25        .byte   8                       # DW_FORM_string
26        .byte   73                      # DW_AT_type
27        .byte   19                      # DW_FORM_ref4
28        .byte   2                       # DW_AT_location
29        .byte   24                      # DW_FORM_exprloc
30        .byte   0                       # EOM(1)
31        .byte   0                       # EOM(2)
32        .byte   3                       # Abbreviation Code
33        .byte   19                      # DW_TAG_structure_type
34        .byte   1                       # DW_CHILDREN_yes
35        .byte   3                       # DW_AT_name
36        .byte   8                       # DW_FORM_string
37        .byte   11                      # DW_AT_byte_size
38        .byte   11                      # DW_FORM_data1
39        .byte   0                       # EOM(1)
40        .byte   0                       # EOM(2)
41        .byte   4                       # Abbreviation Code
42        .byte   13                      # DW_TAG_member
43        .byte   0                       # DW_CHILDREN_no
44        .byte   3                       # DW_AT_name
45        .byte   8                       # DW_FORM_string
46        .byte   73                      # DW_AT_type
47        .byte   19                      # DW_FORM_ref4
48        .byte   56                      # DW_AT_data_member_location
49        .byte   11                      # DW_FORM_data1
50        .byte   0                       # EOM(1)
51        .byte   0                       # EOM(2)
52        .byte   5                       # Abbreviation Code
53        .byte   36                      # DW_TAG_base_type
54        .byte   0                       # DW_CHILDREN_no
55        .byte   3                       # DW_AT_name
56        .byte   8                       # DW_FORM_string
57        .byte   62                      # DW_AT_encoding
58        .byte   11                      # DW_FORM_data1
59        .byte   11                      # DW_AT_byte_size
60        .byte   11                      # DW_FORM_data1
61        .byte   0                       # EOM(1)
62        .byte   0                       # EOM(2)
63        .byte   6                       # Abbreviation Code
64        .byte   19                      # DW_TAG_structure_type
65        .byte   0                       # DW_CHILDREN_no
66        .byte   3                       # DW_AT_name
67        .byte   8                       # DW_FORM_string
68        .byte   60                      # DW_AT_declaration
69        .byte   25                      # DW_FORM_flag_present
70        .byte   0                       # EOM(1)
71        .byte   0                       # EOM(2)
72        .byte   0                       # EOM(3)
73
74.ifdef DLL
75        .section        .debug_info,"dr"
76.Lsection_info:
77.Lcu_begin0:
78        .long   .Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit
79.Ldebug_info_start0:
80        .short  4                       # DWARF version number
81        .secrel32       .Lsection_abbrev # Offset Into Abbrev. Section
82        .byte   8                       # Address Size (in bytes)
83        .byte   1                       # Abbrev [1] 0xb:0x4a DW_TAG_compile_unit
84        .asciz  "Hand-written DWARF"    # DW_AT_producer
85        .byte   3                       # Abbrev [3] 0x37:0x16 DW_TAG_structure_type
86        .asciz  "A"                     # DW_AT_name
87        .byte   4                       # DW_AT_byte_size
88        .byte   4                       # Abbrev [4] 0x40:0xc DW_TAG_member
89        .asciz  "member"                # DW_AT_name
90        .long   .Lint-.Lsection_info    # DW_AT_type
91        .byte   0                       # DW_AT_data_member_location
92        .byte   0                       # End Of Children Mark
93.Lint:
94        .byte   5                       # Abbrev [5] 0x4d:0x7 DW_TAG_base_type
95        .asciz  "int"                   # DW_AT_name
96        .byte   5                       # DW_AT_encoding
97        .byte   4                       # DW_AT_byte_size
98        .byte   0                       # End Of Children Mark
99.Ldebug_info_end0:
100.endif
101
102.ifdef EXE
103        .data
104        .globl  var
105        .p2align        2
106var:
107        .long   47
108
109        .section        .debug_info,"dr"
110.Lsection_info:
111.Lcu_begin0:
112        .long   .Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit
113.Ldebug_info_start0:
114        .short  4                       # DWARF version number
115        .secrel32       .Lsection_abbrev # Offset Into Abbrev. Section
116        .byte   8                       # Address Size (in bytes)
117        .byte   1                       # Abbrev [1] 0xb:0x4a DW_TAG_compile_unit
118        .asciz  "Hand-written DWARF"    # DW_AT_producer
119        .byte   2                       # Abbrev [2] 0x1e:0x19 DW_TAG_variable
120        .asciz  "var"                   # DW_AT_name
121        .long   .LA-.Lsection_info      # DW_AT_type
122        .byte   9                       # DW_AT_location
123        .byte   3
124        .quad   var
125.LA:
126        .byte   6                       # Abbrev [6] 0x37:0x16 DW_TAG_structure_type
127        .asciz  "A"                     # DW_AT_name
128                                        # DW_AT_declaration
129        .byte   0                       # End Of Children Mark
130.Ldebug_info_end0:
131.endif
132