mirror of
https://github.com/autc04/Retro68.git
synced 2025-02-17 11:31:00 +00:00
260 lines
9.4 KiB
Bash
Executable File
260 lines
9.4 KiB
Bash
Executable File
#! /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 <http://www.gnu.org/licenses/>.
|
|
|
|
. $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 <<EOF
|
|
|
|
DWARF section [30] '.debug_line' at offset 0x15f6:
|
|
|
|
Table at offset 0:
|
|
|
|
Length: 83
|
|
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 foo.c
|
|
2 0 0 0 foobarbaz.h
|
|
|
|
Line number statements:
|
|
[ 35] extended opcode 2: set address to 0x80482f0 <main>
|
|
[ 3c] advance line by constant 15 to 16
|
|
[ 3e] copy
|
|
[ 3f] special opcode 159: address+10 = 0x80482fa <main+0xa>, line+1 = 17
|
|
[ 40] special opcode 117: address+7 = 0x8048301 <main+0x11>, line+1 = 18
|
|
[ 41] advance line by constant -9 to 9
|
|
[ 43] special opcode 200: address+13 = 0x804830e <main+0x1e>, line+0 = 9
|
|
[ 44] special opcode 48: address+2 = 0x8048310 <main+0x20>, line+2 = 11
|
|
[ 45] special opcode 58: address+3 = 0x8048313 <main+0x23>, line-2 = 9
|
|
[ 46] special opcode 48: address+2 = 0x8048315 <main+0x25>, line+2 = 11
|
|
[ 47] special opcode 44: address+2 = 0x8048317 <main+0x27>, line-2 = 9
|
|
[ 48] advance line by constant 13 to 22
|
|
[ 4a] special opcode 46: address+2 = 0x8048319 <main+0x29>, line+0 = 22
|
|
[ 4b] advance line by constant -13 to 9
|
|
[ 4d] special opcode 60: address+3 = 0x804831c <main+0x2c>, line+0 = 9
|
|
[ 4e] advance line by constant 12 to 21
|
|
[ 50] special opcode 60: address+3 = 0x804831f <main+0x2f>, line+0 = 21
|
|
[ 51] special opcode 61: address+3 = 0x8048322 <main+0x32>, 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 <nobar>
|
|
[ 84] advance line by constant 12 to 13
|
|
[ 86] copy
|
|
[ 87] special opcode 19: address+0 = 0x8048330 <nobar>, 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 <bar>
|
|
[ 94] advance line by constant 18 to 19
|
|
[ 96] copy
|
|
[ 97] special opcode 19: address+0 = 0x8048440 <bar>, line+1 = 20
|
|
[ 98] advance line by constant -12 to 8
|
|
[ 9a] special opcode 200: address+13 = 0x804844d <bar+0xd>, line+0 = 8
|
|
[ 9b] advance line by constant 14 to 22
|
|
[ 9d] special opcode 74: address+4 = 0x8048451 <bar+0x11>, 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 <nobaz>
|
|
[ df] advance line by constant 12 to 13
|
|
[ e1] copy
|
|
[ e2] special opcode 19: address+0 = 0x8048340 <nobaz>, 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 <baz>
|
|
[ ef] advance line by constant 18 to 19
|
|
[ f1] copy
|
|
[ f2] special opcode 74: address+4 = 0x8048464 <baz+0x4>, line+0 = 19
|
|
[ f3] special opcode 75: address+4 = 0x8048468 <baz+0x8>, line+1 = 20
|
|
[ f4] extended opcode 4: set discriminator to 1
|
|
[ f8] special opcode 78: address+4 = 0x804846c <baz+0xc>, line+4 = 24
|
|
[ f9] special opcode 187: address+12 = 0x8048478 <baz+0x18>, line+1 = 25
|
|
[ fa] special opcode 87: address+5 = 0x804847d <baz+0x1d>, line-1 = 24
|
|
[ fb] special opcode 61: address+3 = 0x8048480 <baz+0x20>, line+1 = 25
|
|
[ fc] special opcode 101: address+6 = 0x8048486 <baz+0x26>, line-1 = 24
|
|
[ fd] special opcode 61: address+3 = 0x8048489 <baz+0x29>, line+1 = 25
|
|
[ fe] special opcode 87: address+5 = 0x804848e <baz+0x2e>, line-1 = 24
|
|
[ ff] advance line by constant -16 to 8
|
|
[ 101] special opcode 46: address+2 = 0x8048490 <baz+0x30>, line+0 = 8
|
|
[ 102] advance line by constant 20 to 28
|
|
[ 104] special opcode 186: address+12 = 0x804849c <baz+0x3c>, line+0 = 28
|
|
[ 105] advance line by constant -20 to 8
|
|
[ 107] special opcode 88: address+5 = 0x80484a1 <baz+0x41>, line+0 = 8
|
|
[ 108] advance line by constant 13 to 21
|
|
[ 10a] advance address by constant 17 to 0x80484b2 <baz+0x52>
|
|
[ 10b] special opcode 32: address+1 = 0x80484b3 <baz+0x53>, 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 <main>
|
|
17:0 S 0 0 0 0x080482fa <main+0xa>
|
|
18:0 S 0 0 0 0x08048301 <main+0x11>
|
|
9:0 S 0 0 0 0x0804830e <main+0x1e>
|
|
11:0 S 0 0 0 0x08048310 <main+0x20>
|
|
9:0 S 0 0 0 0x08048313 <main+0x23>
|
|
11:0 S 0 0 0 0x08048315 <main+0x25>
|
|
9:0 S 0 0 0 0x08048317 <main+0x27>
|
|
22:0 S 0 0 0 0x08048319 <main+0x29>
|
|
9:0 S 0 0 0 0x0804831c <main+0x2c>
|
|
21:0 S 0 0 0 0x0804831f <main+0x2f>
|
|
22:0 S 0 0 0 0x08048322 <main+0x32>
|
|
22:0 S * 0 0 0 0x08048323 <main+0x33>
|
|
|
|
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 <nobar>
|
|
14:0 S 0 0 0 0x08048330 <nobar>
|
|
14:0 S * 0 0 0 0x0804833a <nobar+0xa>
|
|
|
|
19:0 S 0 0 0 0x08048440 <bar>
|
|
20:0 S 0 0 0 0x08048440 <bar>
|
|
8:0 S 0 0 0 0x0804844d <bar+0xd>
|
|
22:0 S 0 0 0 0x08048451 <bar+0x11>
|
|
22:0 S * 0 0 0 0x08048451 <bar+0x11>
|
|
|
|
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 <nobaz>
|
|
14:0 S 0 0 0 0x08048340 <nobaz>
|
|
14:0 S * 0 0 0 0x0804834a <nobaz+0xa>
|
|
|
|
19:0 S 0 0 0 0x08048460 <baz>
|
|
19:0 S 0 0 0 0x08048464 <baz+0x4>
|
|
20:0 S 0 0 0 0x08048468 <baz+0x8>
|
|
24:0 S 1 0 0 0x0804846c <baz+0xc>
|
|
25:0 S 0 0 0 0x08048478 <baz+0x18>
|
|
24:0 S 0 0 0 0x0804847d <baz+0x1d>
|
|
25:0 S 0 0 0 0x08048480 <baz+0x20>
|
|
24:0 S 0 0 0 0x08048486 <baz+0x26>
|
|
25:0 S 0 0 0 0x08048489 <baz+0x29>
|
|
24:0 S 0 0 0 0x0804848e <baz+0x2e>
|
|
8:0 S 0 0 0 0x08048490 <baz+0x30>
|
|
28:0 S 0 0 0 0x0804849c <baz+0x3c>
|
|
8:0 S 0 0 0 0x080484a1 <baz+0x41>
|
|
21:0 S 0 0 0 0x080484b3 <baz+0x53>
|
|
21:0 S * 0 0 0 0x080484bb <baz+0x5b>
|
|
|
|
EOF
|
|
|
|
exit 0
|