xref: /llvm-project/llvm/test/tools/llvm-dwarfdump/X86/debug_expr_convert.s (revision 76dda218a06e491200c920d945f7decd3b671066)
1*76dda218SMarkus Lavin# RUN: llvm-mc %s -filetype obj -triple x86_64-pc-linux -o %t.o
2*76dda218SMarkus Lavin# RUN: llvm-dwarfdump %t.o | FileCheck %s
3*76dda218SMarkus Lavin# RUN: not llvm-dwarfdump -verify %t.o
4*76dda218SMarkus Lavin
5*76dda218SMarkus Lavin# CHECK: DW_AT_location  (DW_OP_addr 0x{{[0-9a-f]+}}, DW_OP_convert <invalid base_type ref: 0x{{[0-9a-f]+}}>, DW_OP_convert (0x{{[0-9a-f]+}}) "DW_ATE_signed_32")
6*76dda218SMarkus Lavin
7*76dda218SMarkus Lavin	.text
8*76dda218SMarkus Lavin	.file	"dbg.g.c"
9*76dda218SMarkus Lavin	.file	1 "/tmp/dbg.g.c"
10*76dda218SMarkus Lavin	.type	global,@object          # @global
11*76dda218SMarkus Lavin	.data
12*76dda218SMarkus Lavin	.globl	global
13*76dda218SMarkus Lavin	.p2align	2
14*76dda218SMarkus Lavinglobal:
15*76dda218SMarkus Lavin	.long	255                     # 0xff
16*76dda218SMarkus Lavin	.size	global, 4
17*76dda218SMarkus Lavin
18*76dda218SMarkus Lavin	.section	.debug_str,"MS",@progbits,1
19*76dda218SMarkus Lavin.Linfo_string0:
20*76dda218SMarkus Lavin	.asciz	"clang version 9.0.0 (trunk 354265) (llvm/trunk 354264)" # string offset=0
21*76dda218SMarkus Lavin.Linfo_string1:
22*76dda218SMarkus Lavin	.asciz	"dbg.g.c"               # string offset=55
23*76dda218SMarkus Lavin.Linfo_string2:
24*76dda218SMarkus Lavin	.asciz	"/tmp"                  # string offset=63
25*76dda218SMarkus Lavin.Linfo_string3:
26*76dda218SMarkus Lavin	.asciz	"global"                # string offset=68
27*76dda218SMarkus Lavin.Linfo_string4:
28*76dda218SMarkus Lavin	.asciz	"int"                   # string offset=75
29*76dda218SMarkus Lavin.Linfo_string5:
30*76dda218SMarkus Lavin	.asciz	"DW_ATE_signed_32"      # string offset=79
31*76dda218SMarkus Lavin.Linfo_string6:
32*76dda218SMarkus Lavin	.asciz	"DW_ATE_signed_8"       # string offset=96
33*76dda218SMarkus Lavin	.section	.debug_abbrev,"",@progbits
34*76dda218SMarkus Lavin	.byte	1                       # Abbreviation Code
35*76dda218SMarkus Lavin	.byte	17                      # DW_TAG_compile_unit
36*76dda218SMarkus Lavin	.byte	1                       # DW_CHILDREN_yes
37*76dda218SMarkus Lavin	.byte	37                      # DW_AT_producer
38*76dda218SMarkus Lavin	.byte	14                      # DW_FORM_strp
39*76dda218SMarkus Lavin	.byte	19                      # DW_AT_language
40*76dda218SMarkus Lavin	.byte	5                       # DW_FORM_data2
41*76dda218SMarkus Lavin	.byte	3                       # DW_AT_name
42*76dda218SMarkus Lavin	.byte	14                      # DW_FORM_strp
43*76dda218SMarkus Lavin	.byte	16                      # DW_AT_stmt_list
44*76dda218SMarkus Lavin	.byte	23                      # DW_FORM_sec_offset
45*76dda218SMarkus Lavin	.byte	27                      # DW_AT_comp_dir
46*76dda218SMarkus Lavin	.byte	14                      # DW_FORM_strp
47*76dda218SMarkus Lavin	.byte	0                       # EOM(1)
48*76dda218SMarkus Lavin	.byte	0                       # EOM(2)
49*76dda218SMarkus Lavin	.byte	2                       # Abbreviation Code
50*76dda218SMarkus Lavin	.byte	36                      # DW_TAG_base_type
51*76dda218SMarkus Lavin	.byte	0                       # DW_CHILDREN_no
52*76dda218SMarkus Lavin	.byte	3                       # DW_AT_name
53*76dda218SMarkus Lavin	.byte	14                      # DW_FORM_strp
54*76dda218SMarkus Lavin	.byte	62                      # DW_AT_encoding
55*76dda218SMarkus Lavin	.byte	11                      # DW_FORM_data1
56*76dda218SMarkus Lavin	.byte	11                      # DW_AT_byte_size
57*76dda218SMarkus Lavin	.byte	11                      # DW_FORM_data1
58*76dda218SMarkus Lavin	.byte	0                       # EOM(1)
59*76dda218SMarkus Lavin	.byte	0                       # EOM(2)
60*76dda218SMarkus Lavin	.byte	3                       # Abbreviation Code
61*76dda218SMarkus Lavin	.byte	52                      # DW_TAG_variable
62*76dda218SMarkus Lavin	.byte	0                       # DW_CHILDREN_no
63*76dda218SMarkus Lavin	.byte	3                       # DW_AT_name
64*76dda218SMarkus Lavin	.byte	14                      # DW_FORM_strp
65*76dda218SMarkus Lavin	.byte	73                      # DW_AT_type
66*76dda218SMarkus Lavin	.byte	19                      # DW_FORM_ref4
67*76dda218SMarkus Lavin	.byte	63                      # DW_AT_external
68*76dda218SMarkus Lavin	.byte	25                      # DW_FORM_flag_present
69*76dda218SMarkus Lavin	.byte	58                      # DW_AT_decl_file
70*76dda218SMarkus Lavin	.byte	11                      # DW_FORM_data1
71*76dda218SMarkus Lavin	.byte	59                      # DW_AT_decl_line
72*76dda218SMarkus Lavin	.byte	11                      # DW_FORM_data1
73*76dda218SMarkus Lavin	.byte	2                       # DW_AT_location
74*76dda218SMarkus Lavin	.byte	24                      # DW_FORM_exprloc
75*76dda218SMarkus Lavin	.byte	0                       # EOM(1)
76*76dda218SMarkus Lavin	.byte	0                       # EOM(2)
77*76dda218SMarkus Lavin	.byte	0                       # EOM(3)
78*76dda218SMarkus Lavin	.section	.debug_info,"",@progbits
79*76dda218SMarkus Lavin.Lcu_begin0:
80*76dda218SMarkus Lavin	.long	.Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit
81*76dda218SMarkus Lavin.Ldebug_info_start0:
82*76dda218SMarkus Lavin	.short	4                       # DWARF version number
83*76dda218SMarkus Lavin	.long	.debug_abbrev           # Offset Into Abbrev. Section
84*76dda218SMarkus Lavin	.byte	8                       # Address Size (in bytes)
85*76dda218SMarkus Lavin	.byte	1                       # Abbrev [1] 0xb:0x48 DW_TAG_compile_unit
86*76dda218SMarkus Lavin	.long	.Linfo_string0          # DW_AT_producer
87*76dda218SMarkus Lavin	.short	12                      # DW_AT_language
88*76dda218SMarkus Lavin	.long	.Linfo_string1          # DW_AT_name
89*76dda218SMarkus Lavin	.long	.Lline_table_start0     # DW_AT_stmt_list
90*76dda218SMarkus Lavin	.long	.Linfo_string2          # DW_AT_comp_dir
91*76dda218SMarkus Lavin	.byte	2                       # Abbrev [2] 0x1e:0x7 DW_TAG_base_type
92*76dda218SMarkus Lavin	.long	.Linfo_string6          # DW_AT_name
93*76dda218SMarkus Lavin	.byte	5                       # DW_AT_encoding
94*76dda218SMarkus Lavin	.byte	1                       # DW_AT_byte_size
95*76dda218SMarkus Lavin	.byte	2                       # Abbrev [2] 0x25:0x7 DW_TAG_base_type
96*76dda218SMarkus Lavin	.long	.Linfo_string5          # DW_AT_name
97*76dda218SMarkus Lavin	.byte	5                       # DW_AT_encoding
98*76dda218SMarkus Lavin	.byte	4                       # DW_AT_byte_size
99*76dda218SMarkus Lavin	.byte	3                       # Abbrev [3] 0x2c:0x1f DW_TAG_variable
100*76dda218SMarkus Lavin	.long	.Linfo_string3          # DW_AT_name
101*76dda218SMarkus Lavin	.long	75                      # DW_AT_type
102*76dda218SMarkus Lavin                                        # DW_AT_external
103*76dda218SMarkus Lavin	.byte	1                       # DW_AT_decl_file
104*76dda218SMarkus Lavin	.byte	1                       # DW_AT_decl_line
105*76dda218SMarkus Lavin	.byte	19                      # DW_AT_location
106*76dda218SMarkus Lavin	.byte	3
107*76dda218SMarkus Lavin	.quad	global
108*76dda218SMarkus Lavin	.byte	168
109*76dda218SMarkus Lavin	.asciz	"\235\200\200"  ### This offset is off by one to test the invalid base_type ref printout
110*76dda218SMarkus Lavin	.byte	168
111*76dda218SMarkus Lavin	.asciz	"\245\200\200"
112*76dda218SMarkus Lavin	.byte	2                       # Abbrev [2] 0x4b:0x7 DW_TAG_base_type
113*76dda218SMarkus Lavin	.long	.Linfo_string4          # DW_AT_name
114*76dda218SMarkus Lavin	.byte	5                       # DW_AT_encoding
115*76dda218SMarkus Lavin	.byte	4                       # DW_AT_byte_size
116*76dda218SMarkus Lavin	.byte	0                       # End Of Children Mark
117*76dda218SMarkus Lavin.Ldebug_info_end0:
118*76dda218SMarkus Lavin	.section	.debug_macinfo,"",@progbits
119*76dda218SMarkus Lavin	.byte	0                       # End Of Macro List Mark
120*76dda218SMarkus Lavin
121*76dda218SMarkus Lavin	.ident	"clang version 9.0.0 (trunk 354265) (llvm/trunk 354264)"
122*76dda218SMarkus Lavin	.section	".note.GNU-stack","",@progbits
123*76dda218SMarkus Lavin	.section	.debug_line,"",@progbits
124*76dda218SMarkus Lavin.Lline_table_start0:
125