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