xref: /aosp_15_r20/external/elfutils/tests/run-readelf-multi-noline.sh (revision 7304104da70ce23c86437a01be71edd1a2d7f37e)
1*7304104dSAndroid Build Coastguard Worker#! /bin/sh
2*7304104dSAndroid Build Coastguard Worker# Copyright (C) 2021 Red Hat, Inc.
3*7304104dSAndroid Build Coastguard Worker# This file is part of elfutils.
4*7304104dSAndroid Build Coastguard Worker#
5*7304104dSAndroid Build Coastguard Worker# This file is free software; you can redistribute it and/or modify
6*7304104dSAndroid Build Coastguard Worker# it under the terms of the GNU General Public License as published by
7*7304104dSAndroid Build Coastguard Worker# the Free Software Foundation; either version 3 of the License, or
8*7304104dSAndroid Build Coastguard Worker# (at your option) any later version.
9*7304104dSAndroid Build Coastguard Worker#
10*7304104dSAndroid Build Coastguard Worker# elfutils is distributed in the hope that it will be useful, but
11*7304104dSAndroid Build Coastguard Worker# WITHOUT ANY WARRANTY; without even the implied warranty of
12*7304104dSAndroid Build Coastguard Worker# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13*7304104dSAndroid Build Coastguard Worker# GNU General Public License for more details.
14*7304104dSAndroid Build Coastguard Worker#
15*7304104dSAndroid Build Coastguard Worker# You should have received a copy of the GNU General Public License
16*7304104dSAndroid Build Coastguard Worker# along with this program.  If not, see <http://www.gnu.org/licenses/>.
17*7304104dSAndroid Build Coastguard Worker
18*7304104dSAndroid Build Coastguard Worker. $srcdir/test-subr.sh
19*7304104dSAndroid Build Coastguard Worker
20*7304104dSAndroid Build Coastguard Worker# = a.c =
21*7304104dSAndroid Build Coastguard Worker# int a;
22*7304104dSAndroid Build Coastguard Worker
23*7304104dSAndroid Build Coastguard Worker# = b.c =
24*7304104dSAndroid Build Coastguard Worker# int b;
25*7304104dSAndroid Build Coastguard Worker
26*7304104dSAndroid Build Coastguard Worker# = m.c =
27*7304104dSAndroid Build Coastguard Worker# int main () { }
28*7304104dSAndroid Build Coastguard Worker
29*7304104dSAndroid Build Coastguard Worker# gcc -g -o testfile_multi_noline a.c b.c m.c
30*7304104dSAndroid Build Coastguard Worker
31*7304104dSAndroid Build Coastguard Workertestfiles testfile_multi_noline
32*7304104dSAndroid Build Coastguard Worker
33*7304104dSAndroid Build Coastguard Workertestrun_compare ${abs_top_builddir}/src/readelf --debug-dump=line testfile_multi_noline <<\EOF
34*7304104dSAndroid Build Coastguard Worker
35*7304104dSAndroid Build Coastguard WorkerDWARF section [29] '.debug_line' at offset 0x1221:
36*7304104dSAndroid Build Coastguard Worker
37*7304104dSAndroid Build Coastguard WorkerTable at offset 0:
38*7304104dSAndroid Build Coastguard Worker
39*7304104dSAndroid Build Coastguard Worker Length:                         32
40*7304104dSAndroid Build Coastguard Worker DWARF version:                  3
41*7304104dSAndroid Build Coastguard Worker Prologue length:                26
42*7304104dSAndroid Build Coastguard Worker Address size:                   8
43*7304104dSAndroid Build Coastguard Worker Segment selector size:          0
44*7304104dSAndroid Build Coastguard Worker Min instruction length:         4
45*7304104dSAndroid Build Coastguard Worker Max operations per instruction: 1
46*7304104dSAndroid Build Coastguard Worker Initial value if 'is_stmt':     1
47*7304104dSAndroid Build Coastguard Worker Line base:                      -5
48*7304104dSAndroid Build Coastguard Worker Line range:                     14
49*7304104dSAndroid Build Coastguard Worker Opcode base:                    13
50*7304104dSAndroid Build Coastguard Worker
51*7304104dSAndroid Build Coastguard WorkerOpcodes:
52*7304104dSAndroid Build Coastguard Worker  [ 1]  0 arguments
53*7304104dSAndroid Build Coastguard Worker  [ 2]  1 argument
54*7304104dSAndroid Build Coastguard Worker  [ 3]  1 argument
55*7304104dSAndroid Build Coastguard Worker  [ 4]  1 argument
56*7304104dSAndroid Build Coastguard Worker  [ 5]  1 argument
57*7304104dSAndroid Build Coastguard Worker  [ 6]  0 arguments
58*7304104dSAndroid Build Coastguard Worker  [ 7]  0 arguments
59*7304104dSAndroid Build Coastguard Worker  [ 8]  0 arguments
60*7304104dSAndroid Build Coastguard Worker  [ 9]  1 argument
61*7304104dSAndroid Build Coastguard Worker  [10]  0 arguments
62*7304104dSAndroid Build Coastguard Worker  [11]  0 arguments
63*7304104dSAndroid Build Coastguard Worker  [12]  1 argument
64*7304104dSAndroid Build Coastguard Worker
65*7304104dSAndroid Build Coastguard WorkerDirectory table:
66*7304104dSAndroid Build Coastguard Worker
67*7304104dSAndroid Build Coastguard WorkerFile name table:
68*7304104dSAndroid Build Coastguard Worker Entry Dir   Time      Size      Name
69*7304104dSAndroid Build Coastguard Worker 1     0     0         0         a.c
70*7304104dSAndroid Build Coastguard Worker
71*7304104dSAndroid Build Coastguard WorkerNo line number statements.
72*7304104dSAndroid Build Coastguard Worker
73*7304104dSAndroid Build Coastguard WorkerTable at offset 36:
74*7304104dSAndroid Build Coastguard Worker
75*7304104dSAndroid Build Coastguard Worker Length:                         32
76*7304104dSAndroid Build Coastguard Worker DWARF version:                  3
77*7304104dSAndroid Build Coastguard Worker Prologue length:                26
78*7304104dSAndroid Build Coastguard Worker Address size:                   8
79*7304104dSAndroid Build Coastguard Worker Segment selector size:          0
80*7304104dSAndroid Build Coastguard Worker Min instruction length:         4
81*7304104dSAndroid Build Coastguard Worker Max operations per instruction: 1
82*7304104dSAndroid Build Coastguard Worker Initial value if 'is_stmt':     1
83*7304104dSAndroid Build Coastguard Worker Line base:                      -5
84*7304104dSAndroid Build Coastguard Worker Line range:                     14
85*7304104dSAndroid Build Coastguard Worker Opcode base:                    13
86*7304104dSAndroid Build Coastguard Worker
87*7304104dSAndroid Build Coastguard WorkerOpcodes:
88*7304104dSAndroid Build Coastguard Worker  [ 1]  0 arguments
89*7304104dSAndroid Build Coastguard Worker  [ 2]  1 argument
90*7304104dSAndroid Build Coastguard Worker  [ 3]  1 argument
91*7304104dSAndroid Build Coastguard Worker  [ 4]  1 argument
92*7304104dSAndroid Build Coastguard Worker  [ 5]  1 argument
93*7304104dSAndroid Build Coastguard Worker  [ 6]  0 arguments
94*7304104dSAndroid Build Coastguard Worker  [ 7]  0 arguments
95*7304104dSAndroid Build Coastguard Worker  [ 8]  0 arguments
96*7304104dSAndroid Build Coastguard Worker  [ 9]  1 argument
97*7304104dSAndroid Build Coastguard Worker  [10]  0 arguments
98*7304104dSAndroid Build Coastguard Worker  [11]  0 arguments
99*7304104dSAndroid Build Coastguard Worker  [12]  1 argument
100*7304104dSAndroid Build Coastguard Worker
101*7304104dSAndroid Build Coastguard WorkerDirectory table:
102*7304104dSAndroid Build Coastguard Worker
103*7304104dSAndroid Build Coastguard WorkerFile name table:
104*7304104dSAndroid Build Coastguard Worker Entry Dir   Time      Size      Name
105*7304104dSAndroid Build Coastguard Worker 1     0     0         0         b.c
106*7304104dSAndroid Build Coastguard Worker
107*7304104dSAndroid Build Coastguard WorkerNo line number statements.
108*7304104dSAndroid Build Coastguard Worker
109*7304104dSAndroid Build Coastguard WorkerTable at offset 72:
110*7304104dSAndroid Build Coastguard Worker
111*7304104dSAndroid Build Coastguard Worker Length:                         54
112*7304104dSAndroid Build Coastguard Worker DWARF version:                  3
113*7304104dSAndroid Build Coastguard Worker Prologue length:                26
114*7304104dSAndroid Build Coastguard Worker Address size:                   8
115*7304104dSAndroid Build Coastguard Worker Segment selector size:          0
116*7304104dSAndroid Build Coastguard Worker Min instruction length:         4
117*7304104dSAndroid Build Coastguard Worker Max operations per instruction: 1
118*7304104dSAndroid Build Coastguard Worker Initial value if 'is_stmt':     1
119*7304104dSAndroid Build Coastguard Worker Line base:                      -5
120*7304104dSAndroid Build Coastguard Worker Line range:                     14
121*7304104dSAndroid Build Coastguard Worker Opcode base:                    13
122*7304104dSAndroid Build Coastguard Worker
123*7304104dSAndroid Build Coastguard WorkerOpcodes:
124*7304104dSAndroid Build Coastguard Worker  [ 1]  0 arguments
125*7304104dSAndroid Build Coastguard Worker  [ 2]  1 argument
126*7304104dSAndroid Build Coastguard Worker  [ 3]  1 argument
127*7304104dSAndroid Build Coastguard Worker  [ 4]  1 argument
128*7304104dSAndroid Build Coastguard Worker  [ 5]  1 argument
129*7304104dSAndroid Build Coastguard Worker  [ 6]  0 arguments
130*7304104dSAndroid Build Coastguard Worker  [ 7]  0 arguments
131*7304104dSAndroid Build Coastguard Worker  [ 8]  0 arguments
132*7304104dSAndroid Build Coastguard Worker  [ 9]  1 argument
133*7304104dSAndroid Build Coastguard Worker  [10]  0 arguments
134*7304104dSAndroid Build Coastguard Worker  [11]  0 arguments
135*7304104dSAndroid Build Coastguard Worker  [12]  1 argument
136*7304104dSAndroid Build Coastguard Worker
137*7304104dSAndroid Build Coastguard WorkerDirectory table:
138*7304104dSAndroid Build Coastguard Worker
139*7304104dSAndroid Build Coastguard WorkerFile name table:
140*7304104dSAndroid Build Coastguard Worker Entry Dir   Time      Size      Name
141*7304104dSAndroid Build Coastguard Worker 1     0     0         0         m.c
142*7304104dSAndroid Build Coastguard Worker
143*7304104dSAndroid Build Coastguard WorkerLine number statements:
144*7304104dSAndroid Build Coastguard Worker [    6c] set column to 13
145*7304104dSAndroid Build Coastguard Worker [    6e] extended opcode 2:  set address to +0x724 <main>
146*7304104dSAndroid Build Coastguard Worker [    79] copy
147*7304104dSAndroid Build Coastguard Worker [    7a] set column to 15
148*7304104dSAndroid Build Coastguard Worker [    7c] special opcode 32: address+4 = +0x728 <main+0x4>, line+0 = 1
149*7304104dSAndroid Build Coastguard Worker [    7d] advance address by 4 to +0x72c
150*7304104dSAndroid Build Coastguard Worker [    7f] extended opcode 1:  end of sequence
151*7304104dSAndroid Build Coastguard WorkerEOF
152*7304104dSAndroid Build Coastguard Worker
153*7304104dSAndroid Build Coastguard Workertestrun_compare ${abs_top_builddir}/src/readelf --debug-dump=decodedline testfile_multi_noline <<\EOF
154*7304104dSAndroid Build Coastguard Worker
155*7304104dSAndroid Build Coastguard WorkerDWARF section [29] '.debug_line' at offset 0x1221:
156*7304104dSAndroid Build Coastguard Worker
157*7304104dSAndroid Build Coastguard Worker CU [b] a.c
158*7304104dSAndroid Build Coastguard Worker  line:col SBPE* disc isa op address (Statement Block Prologue Epilogue *End)
159*7304104dSAndroid Build Coastguard Worker CU [44] b.c
160*7304104dSAndroid Build Coastguard Worker  line:col SBPE* disc isa op address (Statement Block Prologue Epilogue *End)
161*7304104dSAndroid Build Coastguard Worker CU [7d] m.c
162*7304104dSAndroid Build Coastguard Worker  line:col SBPE* disc isa op address (Statement Block Prologue Epilogue *End)
163*7304104dSAndroid Build Coastguard Worker  /tmp/m.c (mtime: 0, length: 0)
164*7304104dSAndroid Build Coastguard Worker     1:13  S        0   0  0 +0x0000000000000724 <main>
165*7304104dSAndroid Build Coastguard Worker     1:15  S        0   0  0 +0x0000000000000728 <main+0x4>
166*7304104dSAndroid Build Coastguard Worker     1:15  S   *    0   0  0 +0x000000000000072b <main+0x7>
167*7304104dSAndroid Build Coastguard Worker
168*7304104dSAndroid Build Coastguard WorkerEOF
169*7304104dSAndroid Build Coastguard Worker
170*7304104dSAndroid Build Coastguard Workerexit 0
171