xref: /llvm-project/lldb/test/Shell/SymbolFile/DWARF/x86/find-inline-method.s (revision 8a64d80a959bf2844df33f9112e456f33de7b468)
1*8a64d80aSDavid Spickett# REQUIRES: lld
2*8a64d80aSDavid Spickett
3*8a64d80aSDavid Spickett# RUN: llvm-mc -triple x86_64-pc-linux %s -filetype=obj > %t.o
4*8a64d80aSDavid Spickett# RUN: ld.lld %t.o -o %t -z separate-code
5*8a64d80aSDavid Spickett# RUN: lldb-test symbols --find=function --name=inl --function-flags=method %t \
6*8a64d80aSDavid Spickett# RUN:   | FileCheck %s
7*8a64d80aSDavid Spickett
8*8a64d80aSDavid Spickett# CHECK: Function: {{.*}} mangled = "_Z8externali"
9*8a64d80aSDavid Spickett# CHECK: Blocks: {{.*}} range = [0x00201000-0x00201002)
10*8a64d80aSDavid Spickett# CHECK-NEXT: range = [0x00201000-0x00201002), name = "inl", mangled = _ZN1S3inlEi
11*8a64d80aSDavid Spickett
12*8a64d80aSDavid Spickett
13*8a64d80aSDavid Spickett# Generated via:
14*8a64d80aSDavid Spickett#   clang -O2 -g -S
15*8a64d80aSDavid Spickett
16*8a64d80aSDavid Spickett# from file:
17*8a64d80aSDavid Spickett#   int forward(int);
18*8a64d80aSDavid Spickett#   struct S {
19*8a64d80aSDavid Spickett#     static int inl(int a) { return forward(a); }
20*8a64d80aSDavid Spickett#   };
21*8a64d80aSDavid Spickett#   int external(int a) { return S::inl(a); }
22*8a64d80aSDavid Spickett
23*8a64d80aSDavid Spickett# and then simplified.
24*8a64d80aSDavid Spickett
25*8a64d80aSDavid Spickett	.text
26*8a64d80aSDavid Spickett_Z8externali:
27*8a64d80aSDavid Spickett.Lfunc_begin0:
28*8a64d80aSDavid Spickett	jmp	_Z7forwardi
29*8a64d80aSDavid Spickett.Lfunc_end0:
30*8a64d80aSDavid Spickett
31*8a64d80aSDavid Spickett.globl _start
32*8a64d80aSDavid Spickett_start:
33*8a64d80aSDavid Spickett_Z7forwardi:
34*8a64d80aSDavid Spickett        ret
35*8a64d80aSDavid Spickett
36*8a64d80aSDavid Spickett	.section	.debug_str,"MS",@progbits,1
37*8a64d80aSDavid Spickett.Linfo_string0:
38*8a64d80aSDavid Spickett	.asciz	"clang version 7.0.0 (trunk 332830) (llvm/trunk 332835) with manual modifications"
39*8a64d80aSDavid Spickett.Linfo_string3:
40*8a64d80aSDavid Spickett	.asciz	"_ZN1S3inlEi"
41*8a64d80aSDavid Spickett.Linfo_string4:
42*8a64d80aSDavid Spickett	.asciz	"inl"
43*8a64d80aSDavid Spickett.Linfo_string6:
44*8a64d80aSDavid Spickett	.asciz	"S"
45*8a64d80aSDavid Spickett.Linfo_string8:
46*8a64d80aSDavid Spickett	.asciz	"_Z8externali"
47*8a64d80aSDavid Spickett.Linfo_string9:
48*8a64d80aSDavid Spickett	.asciz	"external"
49*8a64d80aSDavid Spickett	.section	.debug_abbrev,"",@progbits
50*8a64d80aSDavid Spickett	.byte	1                       # Abbreviation Code
51*8a64d80aSDavid Spickett	.byte	17                      # DW_TAG_compile_unit
52*8a64d80aSDavid Spickett	.byte	1                       # DW_CHILDREN_yes
53*8a64d80aSDavid Spickett	.byte	37                      # DW_AT_producer
54*8a64d80aSDavid Spickett	.byte	14                      # DW_FORM_strp
55*8a64d80aSDavid Spickett	.byte	19                      # DW_AT_language
56*8a64d80aSDavid Spickett	.byte	5                       # DW_FORM_data2
57*8a64d80aSDavid Spickett	.byte	17                      # DW_AT_low_pc
58*8a64d80aSDavid Spickett	.byte	1                       # DW_FORM_addr
59*8a64d80aSDavid Spickett	.byte	18                      # DW_AT_high_pc
60*8a64d80aSDavid Spickett	.byte	6                       # DW_FORM_data4
61*8a64d80aSDavid Spickett	.byte	0                       # EOM(1)
62*8a64d80aSDavid Spickett	.byte	0                       # EOM(2)
63*8a64d80aSDavid Spickett	.byte	2                       # Abbreviation Code
64*8a64d80aSDavid Spickett	.byte	19                      # DW_TAG_structure_type
65*8a64d80aSDavid Spickett	.byte	1                       # DW_CHILDREN_yes
66*8a64d80aSDavid Spickett	.byte	3                       # DW_AT_name
67*8a64d80aSDavid Spickett	.byte	14                      # DW_FORM_strp
68*8a64d80aSDavid Spickett	.byte	11                      # DW_AT_byte_size
69*8a64d80aSDavid Spickett	.byte	11                      # DW_FORM_data1
70*8a64d80aSDavid Spickett	.byte	0                       # EOM(1)
71*8a64d80aSDavid Spickett	.byte	0                       # EOM(2)
72*8a64d80aSDavid Spickett	.byte	3                       # Abbreviation Code
73*8a64d80aSDavid Spickett	.byte	46                      # DW_TAG_subprogram
74*8a64d80aSDavid Spickett	.byte	0                       # DW_CHILDREN_no
75*8a64d80aSDavid Spickett	.byte	110                     # DW_AT_linkage_name
76*8a64d80aSDavid Spickett	.byte	14                      # DW_FORM_strp
77*8a64d80aSDavid Spickett	.byte	3                       # DW_AT_name
78*8a64d80aSDavid Spickett	.byte	14                      # DW_FORM_strp
79*8a64d80aSDavid Spickett	.byte	0                       # EOM(1)
80*8a64d80aSDavid Spickett	.byte	0                       # EOM(2)
81*8a64d80aSDavid Spickett	.byte	6                       # Abbreviation Code
82*8a64d80aSDavid Spickett	.byte	46                      # DW_TAG_subprogram
83*8a64d80aSDavid Spickett	.byte	0                       # DW_CHILDREN_no
84*8a64d80aSDavid Spickett	.byte	71                      # DW_AT_specification
85*8a64d80aSDavid Spickett	.byte	19                      # DW_FORM_ref4
86*8a64d80aSDavid Spickett	.byte	32                      # DW_AT_inline
87*8a64d80aSDavid Spickett	.byte	11                      # DW_FORM_data1
88*8a64d80aSDavid Spickett	.byte	0                       # EOM(1)
89*8a64d80aSDavid Spickett	.byte	0                       # EOM(2)
90*8a64d80aSDavid Spickett	.byte	8                       # Abbreviation Code
91*8a64d80aSDavid Spickett	.byte	46                      # DW_TAG_subprogram
92*8a64d80aSDavid Spickett	.byte	1                       # DW_CHILDREN_yes
93*8a64d80aSDavid Spickett	.byte	17                      # DW_AT_low_pc
94*8a64d80aSDavid Spickett	.byte	1                       # DW_FORM_addr
95*8a64d80aSDavid Spickett	.byte	18                      # DW_AT_high_pc
96*8a64d80aSDavid Spickett	.byte	6                       # DW_FORM_data4
97*8a64d80aSDavid Spickett	.byte	110                     # DW_AT_linkage_name
98*8a64d80aSDavid Spickett	.byte	14                      # DW_FORM_strp
99*8a64d80aSDavid Spickett	.byte	3                       # DW_AT_name
100*8a64d80aSDavid Spickett	.byte	14                      # DW_FORM_strp
101*8a64d80aSDavid Spickett	.byte	0                       # EOM(1)
102*8a64d80aSDavid Spickett	.byte	0                       # EOM(2)
103*8a64d80aSDavid Spickett	.byte	10                      # Abbreviation Code
104*8a64d80aSDavid Spickett	.byte	29                      # DW_TAG_inlined_subroutine
105*8a64d80aSDavid Spickett	.byte	1                       # DW_CHILDREN_yes
106*8a64d80aSDavid Spickett	.byte	49                      # DW_AT_abstract_origin
107*8a64d80aSDavid Spickett	.byte	19                      # DW_FORM_ref4
108*8a64d80aSDavid Spickett	.byte	17                      # DW_AT_low_pc
109*8a64d80aSDavid Spickett	.byte	1                       # DW_FORM_addr
110*8a64d80aSDavid Spickett	.byte	18                      # DW_AT_high_pc
111*8a64d80aSDavid Spickett	.byte	6                       # DW_FORM_data4
112*8a64d80aSDavid Spickett	.byte	0                       # EOM(1)
113*8a64d80aSDavid Spickett	.byte	0                       # EOM(2)
114*8a64d80aSDavid Spickett	.byte	0                       # EOM(3)
115*8a64d80aSDavid Spickett	.section	.debug_info,"",@progbits
116*8a64d80aSDavid Spickett.Lcu_begin0:
117*8a64d80aSDavid Spickett	.long	.Lcu_end0-.Lcu_start0   # Length of Unit
118*8a64d80aSDavid Spickett.Lcu_start0:
119*8a64d80aSDavid Spickett	.short	4                       # DWARF version number
120*8a64d80aSDavid Spickett	.long	.debug_abbrev           # Offset Into Abbrev. Section
121*8a64d80aSDavid Spickett	.byte	8                       # Address Size (in bytes)
122*8a64d80aSDavid Spickett	.byte	1                       # Abbrev [1] 0xb:0x9e DW_TAG_compile_unit
123*8a64d80aSDavid Spickett	.long	.Linfo_string0          # DW_AT_producer
124*8a64d80aSDavid Spickett	.short	4                       # DW_AT_language
125*8a64d80aSDavid Spickett	.quad	.Lfunc_begin0           # DW_AT_low_pc
126*8a64d80aSDavid Spickett	.long	.Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc
127*8a64d80aSDavid Spickett	.byte	2                       # Abbrev [2] 0x2a:0x1f DW_TAG_structure_type
128*8a64d80aSDavid Spickett	.long	.Linfo_string6          # DW_AT_name
129*8a64d80aSDavid Spickett	.byte	1                       # DW_AT_byte_size
130*8a64d80aSDavid Spickett.Linl_spec:
131*8a64d80aSDavid Spickett	.byte	3                       # Abbrev [3] 0x33:0x15 DW_TAG_subprogram
132*8a64d80aSDavid Spickett	.long	.Linfo_string3          # DW_AT_linkage_name
133*8a64d80aSDavid Spickett	.long	.Linfo_string4          # DW_AT_name
134*8a64d80aSDavid Spickett	.byte	0                       # End Of Children Mark
135*8a64d80aSDavid Spickett.Linl_abstract:
136*8a64d80aSDavid Spickett	.byte	6                       # Abbrev [6] 0x50:0x12 DW_TAG_subprogram
137*8a64d80aSDavid Spickett	.long	.Linl_spec              # DW_AT_specification
138*8a64d80aSDavid Spickett	.byte	1                       # DW_AT_inline
139*8a64d80aSDavid Spickett.Linl_a_abstract:
140*8a64d80aSDavid Spickett	.byte	8                       # Abbrev [8] 0x62:0x46 DW_TAG_subprogram
141*8a64d80aSDavid Spickett	.quad	.Lfunc_begin0           # DW_AT_low_pc
142*8a64d80aSDavid Spickett	.long	.Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc
143*8a64d80aSDavid Spickett	.long	.Linfo_string8          # DW_AT_linkage_name
144*8a64d80aSDavid Spickett	.long	.Linfo_string9          # DW_AT_name
145*8a64d80aSDavid Spickett	.byte	10                      # Abbrev [10] 0x8c:0x1b DW_TAG_inlined_subroutine
146*8a64d80aSDavid Spickett	.long	.Linl_abstract          # DW_AT_abstract_origin
147*8a64d80aSDavid Spickett	.quad	.Lfunc_begin0           # DW_AT_low_pc
148*8a64d80aSDavid Spickett	.long	.Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc
149*8a64d80aSDavid Spickett	.byte	0                       # End Of Children Mark
150*8a64d80aSDavid Spickett	.byte	0                       # End Of Children Mark
151*8a64d80aSDavid Spickett	.byte	0                       # End Of Children Mark
152*8a64d80aSDavid Spickett.Lcu_end0:
153