#! /bin/sh # Copyright (C) 2013 Red Hat, Inc. # This file is part of elfutils. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # elfutils is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . . $srcdir/test-subr.sh # Tests readelf --debug-dump=line and --debug-dump=decodedline # See run-readelf-aranges for testfiles. testfiles testfilefoobarbaz testrun_compare ${abs_top_builddir}/src/readelf --debug-dump=line testfilefoobarbaz < [ 3c] advance line by constant 15 to 16 [ 3e] copy [ 3f] special opcode 159: address+10 = 0x80482fa , line+1 = 17 [ 40] special opcode 117: address+7 = 0x8048301 , line+1 = 18 [ 41] advance line by constant -9 to 9 [ 43] special opcode 200: address+13 = 0x804830e , line+0 = 9 [ 44] special opcode 48: address+2 = 0x8048310 , line+2 = 11 [ 45] special opcode 58: address+3 = 0x8048313 , line-2 = 9 [ 46] special opcode 48: address+2 = 0x8048315 , line+2 = 11 [ 47] special opcode 44: address+2 = 0x8048317 , line-2 = 9 [ 48] advance line by constant 13 to 22 [ 4a] special opcode 46: address+2 = 0x8048319 , line+0 = 22 [ 4b] advance line by constant -13 to 9 [ 4d] special opcode 60: address+3 = 0x804831c , line+0 = 9 [ 4e] advance line by constant 12 to 21 [ 50] special opcode 60: address+3 = 0x804831f , line+0 = 21 [ 51] special opcode 61: address+3 = 0x8048322 , line+1 = 22 [ 52] advance address by 2 to 0x8048324 [ 54] extended opcode 1: end of sequence Table at offset 87: Length: 72 DWARF version: 2 Prologue length: 28 Minimum instruction length: 1 Maximum operations per instruction: 1 Initial value if 'is_stmt': 1 Line base: -5 Line range: 14 Opcode base: 13 Opcodes: [ 1] 0 arguments [ 2] 1 argument [ 3] 1 argument [ 4] 1 argument [ 5] 1 argument [ 6] 0 arguments [ 7] 0 arguments [ 8] 0 arguments [ 9] 1 argument [10] 0 arguments [11] 0 arguments [12] 1 argument Directory table: File name table: Entry Dir Time Size Name 1 0 0 0 bar.c Line number statements: [ 7d] extended opcode 2: set address to 0x8048330 [ 84] advance line by constant 12 to 13 [ 86] copy [ 87] special opcode 19: address+0 = 0x8048330 , line+1 = 14 [ 88] advance address by 11 to 0x804833b [ 8a] extended opcode 1: end of sequence [ 8d] extended opcode 2: set address to 0x8048440 [ 94] advance line by constant 18 to 19 [ 96] copy [ 97] special opcode 19: address+0 = 0x8048440 , line+1 = 20 [ 98] advance line by constant -12 to 8 [ 9a] special opcode 200: address+13 = 0x804844d , line+0 = 8 [ 9b] advance line by constant 14 to 22 [ 9d] special opcode 74: address+4 = 0x8048451 , line+0 = 22 [ 9e] advance address by 1 to 0x8048452 [ a0] extended opcode 1: end of sequence Table at offset 163: Length: 106 DWARF version: 2 Prologue length: 43 Minimum instruction length: 1 Maximum operations per instruction: 1 Initial value if 'is_stmt': 1 Line base: -5 Line range: 14 Opcode base: 13 Opcodes: [ 1] 0 arguments [ 2] 1 argument [ 3] 1 argument [ 4] 1 argument [ 5] 1 argument [ 6] 0 arguments [ 7] 0 arguments [ 8] 0 arguments [ 9] 1 argument [10] 0 arguments [11] 0 arguments [12] 1 argument Directory table: File name table: Entry Dir Time Size Name 1 0 0 0 baz.c 2 0 0 0 foobarbaz.h Line number statements: [ d8] extended opcode 2: set address to 0x8048340 [ df] advance line by constant 12 to 13 [ e1] copy [ e2] special opcode 19: address+0 = 0x8048340 , line+1 = 14 [ e3] advance address by 11 to 0x804834b [ e5] extended opcode 1: end of sequence [ e8] extended opcode 2: set address to 0x8048460 [ ef] advance line by constant 18 to 19 [ f1] copy [ f2] special opcode 74: address+4 = 0x8048464 , line+0 = 19 [ f3] special opcode 75: address+4 = 0x8048468 , line+1 = 20 [ f4] extended opcode 4: set discriminator to 1 [ f8] special opcode 78: address+4 = 0x804846c , line+4 = 24 [ f9] special opcode 187: address+12 = 0x8048478 , line+1 = 25 [ fa] special opcode 87: address+5 = 0x804847d , line-1 = 24 [ fb] special opcode 61: address+3 = 0x8048480 , line+1 = 25 [ fc] special opcode 101: address+6 = 0x8048486 , line-1 = 24 [ fd] special opcode 61: address+3 = 0x8048489 , line+1 = 25 [ fe] special opcode 87: address+5 = 0x804848e , line-1 = 24 [ ff] advance line by constant -16 to 8 [ 101] special opcode 46: address+2 = 0x8048490 , line+0 = 8 [ 102] advance line by constant 20 to 28 [ 104] special opcode 186: address+12 = 0x804849c , line+0 = 28 [ 105] advance line by constant -20 to 8 [ 107] special opcode 88: address+5 = 0x80484a1 , line+0 = 8 [ 108] advance line by constant 13 to 21 [ 10a] advance address by constant 17 to 0x80484b2 [ 10b] special opcode 32: address+1 = 0x80484b3 , line+0 = 21 [ 10c] advance address by 9 to 0x80484bc [ 10e] extended opcode 1: end of sequence EOF testrun_compare ${abs_top_builddir}/src/readelf --debug-dump=decodedline testfilefoobarbaz <<\EOF DWARF section [30] '.debug_line' at offset 0x15f6: CU [b] foo.c line:col SBPE* disc isa op address (Statement Block Prologue Epilogue *End) /home/mark/src/tests/foobarbaz/foo.c (mtime: 0, length: 0) 16:0 S 0 0 0 0x080482f0
17:0 S 0 0 0 0x080482fa 18:0 S 0 0 0 0x08048301 9:0 S 0 0 0 0x0804830e 11:0 S 0 0 0 0x08048310 9:0 S 0 0 0 0x08048313 11:0 S 0 0 0 0x08048315 9:0 S 0 0 0 0x08048317 22:0 S 0 0 0 0x08048319 9:0 S 0 0 0 0x0804831c 21:0 S 0 0 0 0x0804831f 22:0 S 0 0 0 0x08048322 22:0 S * 0 0 0 0x08048323 CU [141] bar.c line:col SBPE* disc isa op address (Statement Block Prologue Epilogue *End) /home/mark/src/tests/foobarbaz/bar.c (mtime: 0, length: 0) 13:0 S 0 0 0 0x08048330 14:0 S 0 0 0 0x08048330 14:0 S * 0 0 0 0x0804833a 19:0 S 0 0 0 0x08048440 20:0 S 0 0 0 0x08048440 8:0 S 0 0 0 0x0804844d 22:0 S 0 0 0 0x08048451 22:0 S * 0 0 0 0x08048451 CU [1dc] baz.c line:col SBPE* disc isa op address (Statement Block Prologue Epilogue *End) /home/mark/src/tests/foobarbaz/baz.c (mtime: 0, length: 0) 13:0 S 0 0 0 0x08048340 14:0 S 0 0 0 0x08048340 14:0 S * 0 0 0 0x0804834a 19:0 S 0 0 0 0x08048460 19:0 S 0 0 0 0x08048464 20:0 S 0 0 0 0x08048468 24:0 S 1 0 0 0x0804846c 25:0 S 0 0 0 0x08048478 24:0 S 0 0 0 0x0804847d 25:0 S 0 0 0 0x08048480 24:0 S 0 0 0 0x08048486 25:0 S 0 0 0 0x08048489 24:0 S 0 0 0 0x0804848e 8:0 S 0 0 0 0x08048490 28:0 S 0 0 0 0x0804849c 8:0 S 0 0 0 0x080484a1 21:0 S 0 0 0 0x080484b3 21:0 S * 0 0 0 0x080484bb EOF exit 0