xref: /llvm-project/lldb/test/Shell/SymbolFile/DWARF/x86/dwarf5-implicit-const.s (revision 8a64d80a959bf2844df33f9112e456f33de7b468)
1*8a64d80aSDavid Spickett# Test handling of DWARF5 DW_FORM_implicit_const as used by GCC.
2*8a64d80aSDavid Spickett
3*8a64d80aSDavid Spickett# RUN: llvm-mc -filetype=obj -o %t -triple x86_64-pc-linux %s
4*8a64d80aSDavid Spickett# RUN: %lldb %t -o "expression -T -- variable_implicit_const" \
5*8a64d80aSDavid Spickett# RUN:   -o exit | FileCheck %s
6*8a64d80aSDavid Spickett
7*8a64d80aSDavid Spickett# Failing case was:
8*8a64d80aSDavid Spickett# error: need to add support for DW_TAG_base_type 'int' encoded with DW_ATE = 0x5, bit_size = 0
9*8a64d80aSDavid Spickett# CHECK: (int) $0 = 0
10*8a64d80aSDavid Spickett
11*8a64d80aSDavid Spickett	.bss
12*8a64d80aSDavid Spickett	.globl	variable_implicit_const
13*8a64d80aSDavid Spickett	.type	variable_implicit_const, @object
14*8a64d80aSDavid Spickett	.size	variable_implicit_const, 4
15*8a64d80aSDavid Spickettvariable_implicit_const:
16*8a64d80aSDavid Spickett	.long	0
17*8a64d80aSDavid Spickett.Lvariable_implicit_const_end:
18*8a64d80aSDavid Spickett	.section	.debug_info,"",@progbits
19*8a64d80aSDavid Spickett.Ldebug_info0:
20*8a64d80aSDavid Spickett	.long	.Ldebug_info0_end - .Ldebug_info0_start	# Length of Compilation Unit Info
21*8a64d80aSDavid Spickett.Ldebug_info0_start:
22*8a64d80aSDavid Spickett	.value	0x5	# DWARF version number
23*8a64d80aSDavid Spickett	.byte	0x1	# DW_UT_compile
24*8a64d80aSDavid Spickett	.byte	0x8	# Pointer Size (in bytes)
25*8a64d80aSDavid Spickett	.long	.Ldebug_abbrev0	# Offset Into Abbrev. Section
26*8a64d80aSDavid Spickett	.uleb128 0x1	# (DIE DW_TAG_compile_unit)
27*8a64d80aSDavid Spickett			# DW_AT_producer
28*8a64d80aSDavid Spickett	.string	"GNU C17 11.0.0 20210210 (Red Hat 11.0.0-0) -mtune=generic -march=x86-64 -g"
29*8a64d80aSDavid Spickett	.byte	0x1d	# DW_AT_language
30*8a64d80aSDavid Spickett			# DW_AT_name
31*8a64d80aSDavid Spickett	.string	"var4.c"
32*8a64d80aSDavid Spickett	.uleb128 0x2	# (DIE DW_TAG_variable)
33*8a64d80aSDavid Spickett			# DW_AT_name
34*8a64d80aSDavid Spickett	.string	"variable_implicit_const"
35*8a64d80aSDavid Spickett	.long	.Ltype_int - .Ldebug_info0	# DW_AT_type
36*8a64d80aSDavid Spickett			# DW_AT_external
37*8a64d80aSDavid Spickett	.uleb128 0x9	# DW_AT_location
38*8a64d80aSDavid Spickett	.byte	0x3	# DW_OP_addr
39*8a64d80aSDavid Spickett	.quad	variable_implicit_const
40*8a64d80aSDavid Spickett.Ltype_int:
41*8a64d80aSDavid Spickett	.uleb128 0x3	# (DIE DW_TAG_base_type)
42*8a64d80aSDavid Spickett			# DW_AT_byte_size
43*8a64d80aSDavid Spickett	.byte	0x5	# DW_AT_encoding
44*8a64d80aSDavid Spickett	.ascii "int\0"	# DW_AT_name
45*8a64d80aSDavid Spickett	.byte	0	# end of children of DIE DW_TAG_compile_unit
46*8a64d80aSDavid Spickett.Ldebug_info0_end:
47*8a64d80aSDavid Spickett	.section	.debug_abbrev,"",@progbits
48*8a64d80aSDavid Spickett.Ldebug_abbrev0:
49*8a64d80aSDavid Spickett	.uleb128 0x1	# (abbrev code)
50*8a64d80aSDavid Spickett	.uleb128 0x11	# (TAG: DW_TAG_compile_unit)
51*8a64d80aSDavid Spickett	.byte	0x1	# DW_children_yes
52*8a64d80aSDavid Spickett	.uleb128 0x25	# (DW_AT_producer)
53*8a64d80aSDavid Spickett	.uleb128 0x8	# (DW_FORM_string)
54*8a64d80aSDavid Spickett	.uleb128 0x13	# (DW_AT_language)
55*8a64d80aSDavid Spickett	.uleb128 0xb	# (DW_FORM_data1)
56*8a64d80aSDavid Spickett	.uleb128 0x3	# (DW_AT_name)
57*8a64d80aSDavid Spickett	.uleb128 0x8	# (DW_FORM_string)
58*8a64d80aSDavid Spickett	.byte	0
59*8a64d80aSDavid Spickett	.byte	0
60*8a64d80aSDavid Spickett	.uleb128 0x2	# (abbrev code)
61*8a64d80aSDavid Spickett	.uleb128 0x34	# (TAG: DW_TAG_variable)
62*8a64d80aSDavid Spickett	.byte	0	# DW_children_no
63*8a64d80aSDavid Spickett	.uleb128 0x3	# (DW_AT_name)
64*8a64d80aSDavid Spickett	.uleb128 0x8	# (DW_FORM_string)
65*8a64d80aSDavid Spickett	.uleb128 0x49	# (DW_AT_type)
66*8a64d80aSDavid Spickett	.uleb128 0x13	# (DW_FORM_ref4)
67*8a64d80aSDavid Spickett	.uleb128 0x3f	# (DW_AT_external)
68*8a64d80aSDavid Spickett	.uleb128 0x19	# (DW_FORM_flag_present)
69*8a64d80aSDavid Spickett	.uleb128 0x2	# (DW_AT_location)
70*8a64d80aSDavid Spickett	.uleb128 0x18	# (DW_FORM_exprloc)
71*8a64d80aSDavid Spickett	.byte	0
72*8a64d80aSDavid Spickett	.byte	0
73*8a64d80aSDavid Spickett	.uleb128 0x3	# (abbrev code)
74*8a64d80aSDavid Spickett	.uleb128 0x24	# (TAG: DW_TAG_base_type)
75*8a64d80aSDavid Spickett	.byte	0	# DW_children_no
76*8a64d80aSDavid Spickett	.uleb128 0xb	# (DW_AT_byte_size)
77*8a64d80aSDavid Spickett	.uleb128 0x21	# (DW_FORM_implicit_const)
78*8a64d80aSDavid Spickett	.sleb128 .Lvariable_implicit_const_end - variable_implicit_const
79*8a64d80aSDavid Spickett	.uleb128 0x3e	# (DW_AT_encoding)
80*8a64d80aSDavid Spickett	.uleb128 0xb	# (DW_FORM_data1)
81*8a64d80aSDavid Spickett	.uleb128 0x3	# (DW_AT_name)
82*8a64d80aSDavid Spickett	.uleb128 0x8	# (DW_FORM_string)
83*8a64d80aSDavid Spickett	.byte	0
84*8a64d80aSDavid Spickett	.byte	0
85*8a64d80aSDavid Spickett	.byte	0
86