You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1150 lines
44 KiB
1150 lines
44 KiB
#! /bin/sh
|
|
# Copyright (C) 2013, 2018 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
|
|
Address size: 4
|
|
Segment selector size: 0
|
|
Min instruction length: 1
|
|
Max 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
|
|
Address size: 4
|
|
Segment selector size: 0
|
|
Min instruction length: 1
|
|
Max 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
|
|
Address size: 4
|
|
Segment selector size: 0
|
|
Min instruction length: 1
|
|
Max 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
|
|
|
|
# A .debug_line table with minimum instruction length > 1.
|
|
#
|
|
# = hello.c
|
|
# #include <stdio.h>
|
|
#
|
|
# int
|
|
# main (int argc, char **argv)
|
|
# {
|
|
# printf ("Hello, %s\n", (argc > 0
|
|
# ? argv[1]: "World"));
|
|
# return 0;
|
|
# }
|
|
#
|
|
# clang version 5.0.1 (tags/RELEASE_501/final)
|
|
# Target: powerpc64-unknown-linux-gnu
|
|
# clang -g -O2 -o testfile-ppc64-min-instr hello.c
|
|
testfiles testfile-ppc64-min-instr
|
|
|
|
testrun_compare ${abs_top_builddir}/src/readelf --debug-dump=line testfile-ppc64-min-instr <<\EOF
|
|
|
|
DWARF section [29] '.debug_line' at offset 0xdf6:
|
|
|
|
Table at offset 0:
|
|
|
|
Length: 69
|
|
DWARF version: 2
|
|
Prologue length: 30
|
|
Address size: 8
|
|
Segment selector size: 0
|
|
Min instruction length: 4
|
|
Max 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 hello.c
|
|
|
|
Line number statements:
|
|
[ 28] extended opcode 2: set address to 0x100005a4 <main>
|
|
[ 33] special opcode 22: address+0 = 0x100005a4 <main>, line+4 = 5
|
|
[ 34] set column to 27
|
|
[ 36] set prologue end flag
|
|
[ 37] special opcode 19: address+0 = 0x100005a4 <main>, line+1 = 6
|
|
[ 38] set column to 8
|
|
[ 3a] special opcode 47: address+8 = 0x100005ac <main+0x8>, line+1 = 7
|
|
[ 3b] set 'is_stmt' to 0
|
|
[ 3c] advance line by constant -7 to 0
|
|
[ 3e] special opcode 32: address+4 = 0x100005b0 <main+0xc>, line+0 = 0
|
|
[ 3f] set column to 3
|
|
[ 41] set 'is_stmt' to 1
|
|
[ 42] special opcode 108: address+24 = 0x100005c8 <main+0x24>, line+6 = 6
|
|
[ 43] special opcode 76: address+16 = 0x100005d8 <main+0x34>, line+2 = 8
|
|
[ 44] advance address by 32 to 0x100005f8
|
|
[ 46] extended opcode 1: end of sequence
|
|
EOF
|
|
|
|
testrun_compare ${abs_top_builddir}/src/readelf --debug-dump=decodedline testfile-ppc64-min-instr <<\EOF
|
|
|
|
DWARF section [29] '.debug_line' at offset 0xdf6:
|
|
|
|
CU [b] hello.c
|
|
line:col SBPE* disc isa op address (Statement Block Prologue Epilogue *End)
|
|
/home/fedora/mjw/hello.c (mtime: 0, length: 0)
|
|
5:0 S 0 0 0 0x00000000100005a4 <main>
|
|
6:27 S P 0 0 0 0x00000000100005a4 <main>
|
|
7:8 S 0 0 0 0x00000000100005ac <main+0x8>
|
|
0:8 0 0 0 0x00000000100005b0 <main+0xc>
|
|
6:3 S 0 0 0 0x00000000100005c8 <main+0x24>
|
|
8:3 S 0 0 0 0x00000000100005d8 <main+0x34>
|
|
8:3 S * 0 0 0 0x00000000100005f7 <main+0x53>
|
|
|
|
EOF
|
|
|
|
# Two tests for the same code but encoded using DWARF4 or DWARF5.
|
|
# Output is identical except for the section offset and CU numbers.
|
|
# See tests/testfile-dwarf-45.source.
|
|
|
|
testfiles testfile-dwarf-4 testfile-dwarf-5
|
|
|
|
testrun_compare ${abs_top_builddir}/src/readelf --debug-dump=decodedline testfile-dwarf-4 << \EOF
|
|
|
|
DWARF section [29] '.debug_line' at offset 0x1734:
|
|
|
|
CU [b] hello.c
|
|
line:col SBPE* disc isa op address (Statement Block Prologue Epilogue *End)
|
|
/var/tmp/hello/hello.c (mtime: 0, length: 0)
|
|
21:0 S 0 0 0 0x0000000000400510 <foo>
|
|
22:1 S 0 0 0 0x0000000000400510 <foo>
|
|
22:3 0 0 0 0x0000000000400510 <foo>
|
|
25:6 0 0 0 0x0000000000400514 <foo+0x4>
|
|
25:34 S 0 0 0 0x000000000040051a <foo+0xa>
|
|
25:3 0 0 0 0x000000000040051a <foo+0xa>
|
|
26:34 0 0 0 0x000000000040051e <foo+0xe>
|
|
25:1 1 0 0 0x0000000000400528 <foo+0x18>
|
|
/var/tmp/hello/hello.h (mtime: 0, length: 0)
|
|
7:18 S 0 0 0 0x000000000040052b <foo+0x1b>
|
|
9:3 S 0 0 0 0x000000000040052b <foo+0x1b>
|
|
9:3 0 0 0 0x000000000040052b <foo+0x1b>
|
|
10:6 S 0 0 0 0x000000000040052f <foo+0x1f>
|
|
10:5 0 0 0 0x000000000040052f <foo+0x1f>
|
|
12:7 S 0 0 0 0x0000000000400531 <foo+0x21>
|
|
/var/tmp/hello/hello.c (mtime: 0, length: 0)
|
|
10:3 S 0 0 0 0x0000000000400531 <foo+0x21>
|
|
12:3 S 0 0 0 0x0000000000400531 <foo+0x21>
|
|
12:3 0 0 0 0x0000000000400531 <foo+0x21>
|
|
13:6 S 0 0 0 0x0000000000400535 <foo+0x25>
|
|
13:5 0 0 0 0x0000000000400535 <foo+0x25>
|
|
15:7 S 0 0 0 0x0000000000400539 <foo+0x29>
|
|
22:3 S 0 0 0 0x0000000000400539 <foo+0x29>
|
|
22:3 0 0 0 0x0000000000400539 <foo+0x29>
|
|
23:6 S 0 0 0 0x000000000040053d <foo+0x2d>
|
|
23:5 0 0 0 0x000000000040053d <foo+0x2d>
|
|
9:12 S 0 0 0 0x0000000000400550 <baz>
|
|
10:1 S 0 0 0 0x0000000000400550 <baz>
|
|
12:3 S 0 0 0 0x0000000000400550 <baz>
|
|
12:3 0 0 0 0x0000000000400550 <baz>
|
|
13:9 0 0 0 0x0000000000400556 <baz+0x6>
|
|
15:7 S 0 0 0 0x000000000040055f <baz+0xf>
|
|
15:3 0 0 0 0x000000000040055f <baz+0xf>
|
|
15:7 * 0 0 0 0x0000000000400560 <baz+0x10>
|
|
|
|
CU [21c] world.c
|
|
line:col SBPE* disc isa op address (Statement Block Prologue Epilogue *End)
|
|
/var/tmp/hello/world.c (mtime: 0, length: 0)
|
|
15:0 S 0 0 0 0x0000000000400410 <main>
|
|
16:1 S 0 0 0 0x0000000000400410 <main>
|
|
17:3 S 0 0 0 0x0000000000400410 <main>
|
|
15:3 0 0 0 0x0000000000400410 <main>
|
|
17:1 0 0 0 0x0000000000400419 <main+0x9>
|
|
18:6 S 0 0 0 0x000000000040041e <main+0xe>
|
|
18:5 0 0 0 0x000000000040041e <main+0xe>
|
|
22:7 S 0 0 0 0x0000000000400421 <main+0x11>
|
|
22:3 S * 0 0 0 0x000000000040042f <main+0x1f>
|
|
|
|
6:0 S 0 0 0 0x0000000000400570 <calc>
|
|
7:1 S 0 0 0 0x0000000000400570 <calc>
|
|
7:3 0 0 0 0x0000000000400570 <calc>
|
|
7:6 1 0 0 0x0000000000400575 <calc+0x5>
|
|
7:24 0 0 0 0x0000000000400578 <calc+0x8>
|
|
10:17 S 0 0 0 0x000000000040057d <calc+0xd>
|
|
10:3 0 0 0 0x000000000040057d <calc+0xd>
|
|
/var/tmp/hello/hello.h (mtime: 0, length: 0)
|
|
10:10 0 0 0 0x0000000000400583 <calc+0x13>
|
|
/var/tmp/hello/world.c (mtime: 0, length: 0)
|
|
10:7 0 0 0 0x0000000000400585 <calc+0x15>
|
|
/var/tmp/hello/hello.h (mtime: 0, length: 0)
|
|
7:10 S 0 0 0 0x0000000000400588 <calc+0x18>
|
|
9:3 S 0 0 0 0x0000000000400588 <calc+0x18>
|
|
10:3 0 0 0 0x0000000000400588 <calc+0x18>
|
|
12:7 S 0 0 0 0x000000000040058f <calc+0x1f>
|
|
12:3 0 0 0 0x000000000040058f <calc+0x1f>
|
|
/var/tmp/hello/world.c (mtime: 0, length: 0)
|
|
11:10 0 0 0 0x0000000000400598 <calc+0x28>
|
|
11:1 * 0 0 0 0x000000000040059a <calc+0x2a>
|
|
|
|
EOF
|
|
|
|
testrun_compare ${abs_top_builddir}/src/readelf --debug-dump=decodedline testfile-dwarf-5 << \EOF
|
|
|
|
DWARF section [29] '.debug_line' at offset 0x171f:
|
|
|
|
CU [c] hello.c
|
|
line:col SBPE* disc isa op address (Statement Block Prologue Epilogue *End)
|
|
/var/tmp/hello/hello.c (mtime: 0, length: 0)
|
|
21:0 S 0 0 0 0x0000000000400510 <foo>
|
|
22:1 S 0 0 0 0x0000000000400510 <foo>
|
|
22:3 0 0 0 0x0000000000400510 <foo>
|
|
25:6 0 0 0 0x0000000000400514 <foo+0x4>
|
|
25:34 S 0 0 0 0x000000000040051a <foo+0xa>
|
|
25:3 0 0 0 0x000000000040051a <foo+0xa>
|
|
26:34 0 0 0 0x000000000040051e <foo+0xe>
|
|
25:1 1 0 0 0x0000000000400528 <foo+0x18>
|
|
/var/tmp/hello/hello.h (mtime: 0, length: 0)
|
|
7:18 S 0 0 0 0x000000000040052b <foo+0x1b>
|
|
9:3 S 0 0 0 0x000000000040052b <foo+0x1b>
|
|
9:3 0 0 0 0x000000000040052b <foo+0x1b>
|
|
10:6 S 0 0 0 0x000000000040052f <foo+0x1f>
|
|
10:5 0 0 0 0x000000000040052f <foo+0x1f>
|
|
12:7 S 0 0 0 0x0000000000400531 <foo+0x21>
|
|
/var/tmp/hello/hello.c (mtime: 0, length: 0)
|
|
10:3 S 0 0 0 0x0000000000400531 <foo+0x21>
|
|
12:3 S 0 0 0 0x0000000000400531 <foo+0x21>
|
|
12:3 0 0 0 0x0000000000400531 <foo+0x21>
|
|
13:6 S 0 0 0 0x0000000000400535 <foo+0x25>
|
|
13:5 0 0 0 0x0000000000400535 <foo+0x25>
|
|
15:7 S 0 0 0 0x0000000000400539 <foo+0x29>
|
|
22:3 S 0 0 0 0x0000000000400539 <foo+0x29>
|
|
22:3 0 0 0 0x0000000000400539 <foo+0x29>
|
|
23:6 S 0 0 0 0x000000000040053d <foo+0x2d>
|
|
23:5 0 0 0 0x000000000040053d <foo+0x2d>
|
|
9:12 S 0 0 0 0x0000000000400550 <baz>
|
|
10:1 S 0 0 0 0x0000000000400550 <baz>
|
|
12:3 S 0 0 0 0x0000000000400550 <baz>
|
|
12:3 0 0 0 0x0000000000400550 <baz>
|
|
13:9 0 0 0 0x0000000000400556 <baz+0x6>
|
|
15:7 S 0 0 0 0x000000000040055f <baz+0xf>
|
|
15:3 0 0 0 0x000000000040055f <baz+0xf>
|
|
15:7 * 0 0 0 0x0000000000400560 <baz+0x10>
|
|
|
|
CU [218] world.c
|
|
line:col SBPE* disc isa op address (Statement Block Prologue Epilogue *End)
|
|
/var/tmp/hello/world.c (mtime: 0, length: 0)
|
|
15:0 S 0 0 0 0x0000000000400410 <main>
|
|
16:1 S 0 0 0 0x0000000000400410 <main>
|
|
17:3 S 0 0 0 0x0000000000400410 <main>
|
|
15:3 0 0 0 0x0000000000400410 <main>
|
|
17:1 0 0 0 0x0000000000400419 <main+0x9>
|
|
18:6 S 0 0 0 0x000000000040041e <main+0xe>
|
|
18:5 0 0 0 0x000000000040041e <main+0xe>
|
|
22:7 S 0 0 0 0x0000000000400421 <main+0x11>
|
|
22:3 S * 0 0 0 0x000000000040042f <main+0x1f>
|
|
|
|
6:0 S 0 0 0 0x0000000000400570 <calc>
|
|
7:1 S 0 0 0 0x0000000000400570 <calc>
|
|
7:3 0 0 0 0x0000000000400570 <calc>
|
|
7:6 1 0 0 0x0000000000400575 <calc+0x5>
|
|
7:24 0 0 0 0x0000000000400578 <calc+0x8>
|
|
10:17 S 0 0 0 0x000000000040057d <calc+0xd>
|
|
10:3 0 0 0 0x000000000040057d <calc+0xd>
|
|
/var/tmp/hello/hello.h (mtime: 0, length: 0)
|
|
10:10 0 0 0 0x0000000000400583 <calc+0x13>
|
|
/var/tmp/hello/world.c (mtime: 0, length: 0)
|
|
10:7 0 0 0 0x0000000000400585 <calc+0x15>
|
|
/var/tmp/hello/hello.h (mtime: 0, length: 0)
|
|
7:10 S 0 0 0 0x0000000000400588 <calc+0x18>
|
|
9:3 S 0 0 0 0x0000000000400588 <calc+0x18>
|
|
10:3 0 0 0 0x0000000000400588 <calc+0x18>
|
|
12:7 S 0 0 0 0x000000000040058f <calc+0x1f>
|
|
12:3 0 0 0 0x000000000040058f <calc+0x1f>
|
|
/var/tmp/hello/world.c (mtime: 0, length: 0)
|
|
11:10 0 0 0 0x0000000000400598 <calc+0x28>
|
|
11:1 * 0 0 0 0x000000000040059a <calc+0x2a>
|
|
|
|
EOF
|
|
|
|
# After discarding the different offsets in the line number statements,
|
|
# the remaining difference between 4 and 5 is (besides the header/length)
|
|
# Just the representation of the directory and line tables:
|
|
|
|
# Directory table:
|
|
# - /opt/local/install/gcc/lib/gcc/x86_64-pc-linux-gnu/9.0.0/include
|
|
# + [path(line_strp)]
|
|
# + 0 /var/tmp/hello (90)
|
|
# + 1 /opt/local/install/gcc/lib/gcc/x86_64-pc-linux-gnu/9.0.0/include (17)
|
|
#
|
|
# File name table:
|
|
# - Entry Dir Time Size Name
|
|
# - 1 0 0 0 hello.c
|
|
# - 2 0 0 0 hello.h
|
|
# - 3 1 0 0 stddef.h
|
|
# + [path(line_strp), directory_index(data1)]
|
|
# + 0 hello.c (9), 0
|
|
# + 1 hello.c (9), 0
|
|
# + 2 hello.h (82), 0
|
|
# + 3 stddef.h (0), 1
|
|
#
|
|
# Directory table:
|
|
# - /usr/include
|
|
# + [path(line_strp)]
|
|
# + 0 /var/tmp/hello (90)
|
|
# + 1 /usr/include (122)
|
|
#
|
|
# File name table:
|
|
# - Entry Dir Time Size Name
|
|
# - 1 0 0 0 world.c
|
|
# - 2 0 0 0 hello.h
|
|
# - 3 1 0 0 stdlib.h
|
|
# + [path(line_strp), directory_index(data1)]
|
|
# + 0 world.c (114), 0
|
|
# + 1 world.c (114), 0
|
|
# + 2 hello.h (82), 0
|
|
# + 3 stdlib.h (105), 1
|
|
|
|
testrun_compare ${abs_top_builddir}/src/readelf --debug-dump=line testfile-dwarf-4 << \EOF
|
|
|
|
DWARF section [29] '.debug_line' at offset 0x1734:
|
|
|
|
Table at offset 0:
|
|
|
|
Length: 608
|
|
DWARF version: 4
|
|
Prologue length: 119
|
|
Address size: 8
|
|
Segment selector size: 0
|
|
Min instruction length: 1
|
|
Max operations per instruction: 1
|
|
Initial value if 'is_stmt': 1
|
|
Line base: -10
|
|
Line range: 242
|
|
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:
|
|
/opt/local/install/gcc/lib/gcc/x86_64-pc-linux-gnu/9.0.0/include
|
|
|
|
File name table:
|
|
Entry Dir Time Size Name
|
|
1 0 0 0 hello.c
|
|
2 0 0 0 hello.h
|
|
3 1 0 0 stddef.h
|
|
|
|
Line number statements:
|
|
[ 81] extended opcode 2: set address to 0x400510 <foo>
|
|
[ 8c] special opcode 43: address+0 = 0x400510 <foo>, line+20 = 21
|
|
[ 8d] set column to 1
|
|
[ 8f] extended opcode 2: set address to 0x400510 <foo>
|
|
[ 9a] special opcode 24: address+0 = 0x400510 <foo>, line+1 = 22
|
|
[ 9b] set column to 3
|
|
[ 9d] extended opcode 2: set address to 0x400510 <foo>
|
|
[ a8] set 'is_stmt' to 0
|
|
[ a9] copy
|
|
[ aa] set column to 6
|
|
[ ac] extended opcode 2: set address to 0x400514 <foo+0x4>
|
|
[ b7] special opcode 26: address+0 = 0x400514 <foo+0x4>, line+3 = 25
|
|
[ b8] set column to 34
|
|
[ ba] extended opcode 2: set address to 0x40051a <foo+0xa>
|
|
[ c5] set 'is_stmt' to 1
|
|
[ c6] copy
|
|
[ c7] set column to 3
|
|
[ c9] extended opcode 2: set address to 0x40051a <foo+0xa>
|
|
[ d4] set 'is_stmt' to 0
|
|
[ d5] copy
|
|
[ d6] set column to 34
|
|
[ d8] extended opcode 2: set address to 0x40051e <foo+0xe>
|
|
[ e3] special opcode 24: address+0 = 0x40051e <foo+0xe>, line+1 = 26
|
|
[ e4] set column to 1
|
|
[ e6] extended opcode 2: set address to 0x400528 <foo+0x18>
|
|
[ f1] extended opcode 4: set discriminator to 1
|
|
[ f5] special opcode 22: address+0 = 0x400528 <foo+0x18>, line-1 = 25
|
|
[ f6] set column to 18
|
|
[ f8] extended opcode 2: set address to 0x40052b <foo+0x1b>
|
|
[ 103] set file to 2
|
|
[ 105] set 'is_stmt' to 1
|
|
[ 106] advance line by constant -18 to 7
|
|
[ 108] copy
|
|
[ 109] set column to 3
|
|
[ 10b] extended opcode 2: set address to 0x40052b <foo+0x1b>
|
|
[ 116] special opcode 25: address+0 = 0x40052b <foo+0x1b>, line+2 = 9
|
|
[ 117] set column to 3
|
|
[ 119] extended opcode 2: set address to 0x40052b <foo+0x1b>
|
|
[ 124] set 'is_stmt' to 0
|
|
[ 125] copy
|
|
[ 126] set column to 6
|
|
[ 128] extended opcode 2: set address to 0x40052f <foo+0x1f>
|
|
[ 133] extended opcode 4: set discriminator to 0
|
|
[ 137] set 'is_stmt' to 1
|
|
[ 138] special opcode 24: address+0 = 0x40052f <foo+0x1f>, line+1 = 10
|
|
[ 139] set column to 5
|
|
[ 13b] extended opcode 2: set address to 0x40052f <foo+0x1f>
|
|
[ 146] set 'is_stmt' to 0
|
|
[ 147] copy
|
|
[ 148] set column to 7
|
|
[ 14a] extended opcode 2: set address to 0x400531 <foo+0x21>
|
|
[ 155] set 'is_stmt' to 1
|
|
[ 156] special opcode 25: address+0 = 0x400531 <foo+0x21>, line+2 = 12
|
|
[ 157] set column to 3
|
|
[ 159] extended opcode 2: set address to 0x400531 <foo+0x21>
|
|
[ 164] set file to 1
|
|
[ 166] special opcode 21: address+0 = 0x400531 <foo+0x21>, line-2 = 10
|
|
[ 167] set column to 3
|
|
[ 169] extended opcode 2: set address to 0x400531 <foo+0x21>
|
|
[ 174] special opcode 25: address+0 = 0x400531 <foo+0x21>, line+2 = 12
|
|
[ 175] set column to 3
|
|
[ 177] extended opcode 2: set address to 0x400531 <foo+0x21>
|
|
[ 182] set 'is_stmt' to 0
|
|
[ 183] copy
|
|
[ 184] set column to 6
|
|
[ 186] extended opcode 2: set address to 0x400535 <foo+0x25>
|
|
[ 191] set 'is_stmt' to 1
|
|
[ 192] special opcode 24: address+0 = 0x400535 <foo+0x25>, line+1 = 13
|
|
[ 193] set column to 5
|
|
[ 195] extended opcode 2: set address to 0x400535 <foo+0x25>
|
|
[ 1a0] set 'is_stmt' to 0
|
|
[ 1a1] copy
|
|
[ 1a2] set column to 7
|
|
[ 1a4] extended opcode 2: set address to 0x400539 <foo+0x29>
|
|
[ 1af] set 'is_stmt' to 1
|
|
[ 1b0] special opcode 25: address+0 = 0x400539 <foo+0x29>, line+2 = 15
|
|
[ 1b1] set column to 3
|
|
[ 1b3] extended opcode 2: set address to 0x400539 <foo+0x29>
|
|
[ 1be] special opcode 30: address+0 = 0x400539 <foo+0x29>, line+7 = 22
|
|
[ 1bf] set column to 3
|
|
[ 1c1] extended opcode 2: set address to 0x400539 <foo+0x29>
|
|
[ 1cc] set 'is_stmt' to 0
|
|
[ 1cd] copy
|
|
[ 1ce] set column to 6
|
|
[ 1d0] extended opcode 2: set address to 0x40053d <foo+0x2d>
|
|
[ 1db] set 'is_stmt' to 1
|
|
[ 1dc] special opcode 24: address+0 = 0x40053d <foo+0x2d>, line+1 = 23
|
|
[ 1dd] set column to 5
|
|
[ 1df] extended opcode 2: set address to 0x40053d <foo+0x2d>
|
|
[ 1ea] set 'is_stmt' to 0
|
|
[ 1eb] copy
|
|
[ 1ec] set column to 12
|
|
[ 1ee] extended opcode 2: set address to 0x400550 <baz>
|
|
[ 1f9] set 'is_stmt' to 1
|
|
[ 1fa] advance line by constant -14 to 9
|
|
[ 1fc] copy
|
|
[ 1fd] set column to 1
|
|
[ 1ff] extended opcode 2: set address to 0x400550 <baz>
|
|
[ 20a] special opcode 24: address+0 = 0x400550 <baz>, line+1 = 10
|
|
[ 20b] set column to 3
|
|
[ 20d] extended opcode 2: set address to 0x400550 <baz>
|
|
[ 218] special opcode 25: address+0 = 0x400550 <baz>, line+2 = 12
|
|
[ 219] set column to 3
|
|
[ 21b] extended opcode 2: set address to 0x400550 <baz>
|
|
[ 226] set 'is_stmt' to 0
|
|
[ 227] copy
|
|
[ 228] set column to 9
|
|
[ 22a] extended opcode 2: set address to 0x400556 <baz+0x6>
|
|
[ 235] special opcode 24: address+0 = 0x400556 <baz+0x6>, line+1 = 13
|
|
[ 236] set column to 7
|
|
[ 238] extended opcode 2: set address to 0x40055f <baz+0xf>
|
|
[ 243] set 'is_stmt' to 1
|
|
[ 244] special opcode 25: address+0 = 0x40055f <baz+0xf>, line+2 = 15
|
|
[ 245] set column to 3
|
|
[ 247] extended opcode 2: set address to 0x40055f <baz+0xf>
|
|
[ 252] set 'is_stmt' to 0
|
|
[ 253] copy
|
|
[ 254] set column to 7
|
|
[ 256] extended opcode 2: set address to 0x400561
|
|
[ 261] extended opcode 1: end of sequence
|
|
|
|
Table at offset 612:
|
|
|
|
Length: 450
|
|
DWARF version: 4
|
|
Prologue length: 67
|
|
Address size: 8
|
|
Segment selector size: 0
|
|
Min instruction length: 1
|
|
Max operations per instruction: 1
|
|
Initial value if 'is_stmt': 1
|
|
Line base: -10
|
|
Line range: 242
|
|
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:
|
|
/usr/include
|
|
|
|
File name table:
|
|
Entry Dir Time Size Name
|
|
1 0 0 0 world.c
|
|
2 0 0 0 hello.h
|
|
3 1 0 0 stdlib.h
|
|
|
|
Line number statements:
|
|
[ 2b1] extended opcode 2: set address to 0x400410 <main>
|
|
[ 2bc] special opcode 37: address+0 = 0x400410 <main>, line+14 = 15
|
|
[ 2bd] set column to 1
|
|
[ 2bf] extended opcode 2: set address to 0x400410 <main>
|
|
[ 2ca] special opcode 24: address+0 = 0x400410 <main>, line+1 = 16
|
|
[ 2cb] set column to 3
|
|
[ 2cd] extended opcode 2: set address to 0x400410 <main>
|
|
[ 2d8] special opcode 24: address+0 = 0x400410 <main>, line+1 = 17
|
|
[ 2d9] set column to 3
|
|
[ 2db] extended opcode 2: set address to 0x400410 <main>
|
|
[ 2e6] set 'is_stmt' to 0
|
|
[ 2e7] special opcode 21: address+0 = 0x400410 <main>, line-2 = 15
|
|
[ 2e8] set column to 1
|
|
[ 2ea] extended opcode 2: set address to 0x400419 <main+0x9>
|
|
[ 2f5] special opcode 25: address+0 = 0x400419 <main+0x9>, line+2 = 17
|
|
[ 2f6] set column to 6
|
|
[ 2f8] extended opcode 2: set address to 0x40041e <main+0xe>
|
|
[ 303] set 'is_stmt' to 1
|
|
[ 304] special opcode 24: address+0 = 0x40041e <main+0xe>, line+1 = 18
|
|
[ 305] set column to 5
|
|
[ 307] extended opcode 2: set address to 0x40041e <main+0xe>
|
|
[ 312] set 'is_stmt' to 0
|
|
[ 313] copy
|
|
[ 314] set column to 7
|
|
[ 316] extended opcode 2: set address to 0x400421 <main+0x11>
|
|
[ 321] set 'is_stmt' to 1
|
|
[ 322] special opcode 27: address+0 = 0x400421 <main+0x11>, line+4 = 22
|
|
[ 323] set column to 3
|
|
[ 325] extended opcode 2: set address to 0x400430 <_start>
|
|
[ 330] extended opcode 1: end of sequence
|
|
[ 333] extended opcode 2: set address to 0x400570 <calc>
|
|
[ 33e] special opcode 28: address+0 = 0x400570 <calc>, line+5 = 6
|
|
[ 33f] set column to 1
|
|
[ 341] extended opcode 2: set address to 0x400570 <calc>
|
|
[ 34c] special opcode 24: address+0 = 0x400570 <calc>, line+1 = 7
|
|
[ 34d] set column to 3
|
|
[ 34f] extended opcode 2: set address to 0x400570 <calc>
|
|
[ 35a] set 'is_stmt' to 0
|
|
[ 35b] copy
|
|
[ 35c] set column to 6
|
|
[ 35e] extended opcode 2: set address to 0x400575 <calc+0x5>
|
|
[ 369] extended opcode 4: set discriminator to 1
|
|
[ 36d] copy
|
|
[ 36e] set column to 24
|
|
[ 370] extended opcode 2: set address to 0x400578 <calc+0x8>
|
|
[ 37b] copy
|
|
[ 37c] set column to 17
|
|
[ 37e] extended opcode 2: set address to 0x40057d <calc+0xd>
|
|
[ 389] extended opcode 4: set discriminator to 0
|
|
[ 38d] set 'is_stmt' to 1
|
|
[ 38e] special opcode 26: address+0 = 0x40057d <calc+0xd>, line+3 = 10
|
|
[ 38f] set column to 3
|
|
[ 391] extended opcode 2: set address to 0x40057d <calc+0xd>
|
|
[ 39c] set 'is_stmt' to 0
|
|
[ 39d] copy
|
|
[ 39e] set column to 10
|
|
[ 3a0] extended opcode 2: set address to 0x400583 <calc+0x13>
|
|
[ 3ab] set file to 2
|
|
[ 3ad] copy
|
|
[ 3ae] set column to 7
|
|
[ 3b0] extended opcode 2: set address to 0x400585 <calc+0x15>
|
|
[ 3bb] set file to 1
|
|
[ 3bd] copy
|
|
[ 3be] set column to 10
|
|
[ 3c0] extended opcode 2: set address to 0x400588 <calc+0x18>
|
|
[ 3cb] set file to 2
|
|
[ 3cd] set 'is_stmt' to 1
|
|
[ 3ce] special opcode 20: address+0 = 0x400588 <calc+0x18>, line-3 = 7
|
|
[ 3cf] set column to 3
|
|
[ 3d1] extended opcode 2: set address to 0x400588 <calc+0x18>
|
|
[ 3dc] special opcode 25: address+0 = 0x400588 <calc+0x18>, line+2 = 9
|
|
[ 3dd] set column to 3
|
|
[ 3df] extended opcode 2: set address to 0x400588 <calc+0x18>
|
|
[ 3ea] set 'is_stmt' to 0
|
|
[ 3eb] special opcode 24: address+0 = 0x400588 <calc+0x18>, line+1 = 10
|
|
[ 3ec] set column to 7
|
|
[ 3ee] extended opcode 2: set address to 0x40058f <calc+0x1f>
|
|
[ 3f9] set 'is_stmt' to 1
|
|
[ 3fa] special opcode 25: address+0 = 0x40058f <calc+0x1f>, line+2 = 12
|
|
[ 3fb] set column to 3
|
|
[ 3fd] extended opcode 2: set address to 0x40058f <calc+0x1f>
|
|
[ 408] set 'is_stmt' to 0
|
|
[ 409] copy
|
|
[ 40a] set column to 10
|
|
[ 40c] extended opcode 2: set address to 0x400598 <calc+0x28>
|
|
[ 417] set file to 1
|
|
[ 419] special opcode 22: address+0 = 0x400598 <calc+0x28>, line-1 = 11
|
|
[ 41a] set column to 1
|
|
[ 41c] extended opcode 2: set address to 0x40059b
|
|
[ 427] extended opcode 1: end of sequence
|
|
EOF
|
|
|
|
testrun_compare ${abs_top_builddir}/src/readelf --debug-dump=line testfile-dwarf-5 << \EOF
|
|
|
|
DWARF section [29] '.debug_line' at offset 0x171f:
|
|
|
|
Table at offset 0:
|
|
|
|
Length: 547
|
|
DWARF version: 5
|
|
Prologue length: 56
|
|
Address size: 8
|
|
Segment selector size: 0
|
|
Min instruction length: 1
|
|
Max operations per instruction: 1
|
|
Initial value if 'is_stmt': 1
|
|
Line base: -10
|
|
Line range: 242
|
|
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:
|
|
[path(line_strp)]
|
|
0 /var/tmp/hello (90)
|
|
1 /opt/local/install/gcc/lib/gcc/x86_64-pc-linux-gnu/9.0.0/include (17)
|
|
|
|
File name table:
|
|
[path(line_strp), directory_index(data1)]
|
|
0 hello.c (9), 0
|
|
1 hello.c (9), 0
|
|
2 hello.h (82), 0
|
|
3 stddef.h (0), 1
|
|
|
|
Line number statements:
|
|
[ 44] extended opcode 2: set address to 0x400510 <foo>
|
|
[ 4f] special opcode 43: address+0 = 0x400510 <foo>, line+20 = 21
|
|
[ 50] set column to 1
|
|
[ 52] extended opcode 2: set address to 0x400510 <foo>
|
|
[ 5d] special opcode 24: address+0 = 0x400510 <foo>, line+1 = 22
|
|
[ 5e] set column to 3
|
|
[ 60] extended opcode 2: set address to 0x400510 <foo>
|
|
[ 6b] set 'is_stmt' to 0
|
|
[ 6c] copy
|
|
[ 6d] set column to 6
|
|
[ 6f] extended opcode 2: set address to 0x400514 <foo+0x4>
|
|
[ 7a] special opcode 26: address+0 = 0x400514 <foo+0x4>, line+3 = 25
|
|
[ 7b] set column to 34
|
|
[ 7d] extended opcode 2: set address to 0x40051a <foo+0xa>
|
|
[ 88] set 'is_stmt' to 1
|
|
[ 89] copy
|
|
[ 8a] set column to 3
|
|
[ 8c] extended opcode 2: set address to 0x40051a <foo+0xa>
|
|
[ 97] set 'is_stmt' to 0
|
|
[ 98] copy
|
|
[ 99] set column to 34
|
|
[ 9b] extended opcode 2: set address to 0x40051e <foo+0xe>
|
|
[ a6] special opcode 24: address+0 = 0x40051e <foo+0xe>, line+1 = 26
|
|
[ a7] set column to 1
|
|
[ a9] extended opcode 2: set address to 0x400528 <foo+0x18>
|
|
[ b4] extended opcode 4: set discriminator to 1
|
|
[ b8] special opcode 22: address+0 = 0x400528 <foo+0x18>, line-1 = 25
|
|
[ b9] set column to 18
|
|
[ bb] extended opcode 2: set address to 0x40052b <foo+0x1b>
|
|
[ c6] set file to 2
|
|
[ c8] set 'is_stmt' to 1
|
|
[ c9] advance line by constant -18 to 7
|
|
[ cb] copy
|
|
[ cc] set column to 3
|
|
[ ce] extended opcode 2: set address to 0x40052b <foo+0x1b>
|
|
[ d9] special opcode 25: address+0 = 0x40052b <foo+0x1b>, line+2 = 9
|
|
[ da] set column to 3
|
|
[ dc] extended opcode 2: set address to 0x40052b <foo+0x1b>
|
|
[ e7] set 'is_stmt' to 0
|
|
[ e8] copy
|
|
[ e9] set column to 6
|
|
[ eb] extended opcode 2: set address to 0x40052f <foo+0x1f>
|
|
[ f6] extended opcode 4: set discriminator to 0
|
|
[ fa] set 'is_stmt' to 1
|
|
[ fb] special opcode 24: address+0 = 0x40052f <foo+0x1f>, line+1 = 10
|
|
[ fc] set column to 5
|
|
[ fe] extended opcode 2: set address to 0x40052f <foo+0x1f>
|
|
[ 109] set 'is_stmt' to 0
|
|
[ 10a] copy
|
|
[ 10b] set column to 7
|
|
[ 10d] extended opcode 2: set address to 0x400531 <foo+0x21>
|
|
[ 118] set 'is_stmt' to 1
|
|
[ 119] special opcode 25: address+0 = 0x400531 <foo+0x21>, line+2 = 12
|
|
[ 11a] set column to 3
|
|
[ 11c] extended opcode 2: set address to 0x400531 <foo+0x21>
|
|
[ 127] set file to 1
|
|
[ 129] special opcode 21: address+0 = 0x400531 <foo+0x21>, line-2 = 10
|
|
[ 12a] set column to 3
|
|
[ 12c] extended opcode 2: set address to 0x400531 <foo+0x21>
|
|
[ 137] special opcode 25: address+0 = 0x400531 <foo+0x21>, line+2 = 12
|
|
[ 138] set column to 3
|
|
[ 13a] extended opcode 2: set address to 0x400531 <foo+0x21>
|
|
[ 145] set 'is_stmt' to 0
|
|
[ 146] copy
|
|
[ 147] set column to 6
|
|
[ 149] extended opcode 2: set address to 0x400535 <foo+0x25>
|
|
[ 154] set 'is_stmt' to 1
|
|
[ 155] special opcode 24: address+0 = 0x400535 <foo+0x25>, line+1 = 13
|
|
[ 156] set column to 5
|
|
[ 158] extended opcode 2: set address to 0x400535 <foo+0x25>
|
|
[ 163] set 'is_stmt' to 0
|
|
[ 164] copy
|
|
[ 165] set column to 7
|
|
[ 167] extended opcode 2: set address to 0x400539 <foo+0x29>
|
|
[ 172] set 'is_stmt' to 1
|
|
[ 173] special opcode 25: address+0 = 0x400539 <foo+0x29>, line+2 = 15
|
|
[ 174] set column to 3
|
|
[ 176] extended opcode 2: set address to 0x400539 <foo+0x29>
|
|
[ 181] special opcode 30: address+0 = 0x400539 <foo+0x29>, line+7 = 22
|
|
[ 182] set column to 3
|
|
[ 184] extended opcode 2: set address to 0x400539 <foo+0x29>
|
|
[ 18f] set 'is_stmt' to 0
|
|
[ 190] copy
|
|
[ 191] set column to 6
|
|
[ 193] extended opcode 2: set address to 0x40053d <foo+0x2d>
|
|
[ 19e] set 'is_stmt' to 1
|
|
[ 19f] special opcode 24: address+0 = 0x40053d <foo+0x2d>, line+1 = 23
|
|
[ 1a0] set column to 5
|
|
[ 1a2] extended opcode 2: set address to 0x40053d <foo+0x2d>
|
|
[ 1ad] set 'is_stmt' to 0
|
|
[ 1ae] copy
|
|
[ 1af] set column to 12
|
|
[ 1b1] extended opcode 2: set address to 0x400550 <baz>
|
|
[ 1bc] set 'is_stmt' to 1
|
|
[ 1bd] advance line by constant -14 to 9
|
|
[ 1bf] copy
|
|
[ 1c0] set column to 1
|
|
[ 1c2] extended opcode 2: set address to 0x400550 <baz>
|
|
[ 1cd] special opcode 24: address+0 = 0x400550 <baz>, line+1 = 10
|
|
[ 1ce] set column to 3
|
|
[ 1d0] extended opcode 2: set address to 0x400550 <baz>
|
|
[ 1db] special opcode 25: address+0 = 0x400550 <baz>, line+2 = 12
|
|
[ 1dc] set column to 3
|
|
[ 1de] extended opcode 2: set address to 0x400550 <baz>
|
|
[ 1e9] set 'is_stmt' to 0
|
|
[ 1ea] copy
|
|
[ 1eb] set column to 9
|
|
[ 1ed] extended opcode 2: set address to 0x400556 <baz+0x6>
|
|
[ 1f8] special opcode 24: address+0 = 0x400556 <baz+0x6>, line+1 = 13
|
|
[ 1f9] set column to 7
|
|
[ 1fb] extended opcode 2: set address to 0x40055f <baz+0xf>
|
|
[ 206] set 'is_stmt' to 1
|
|
[ 207] special opcode 25: address+0 = 0x40055f <baz+0xf>, line+2 = 15
|
|
[ 208] set column to 3
|
|
[ 20a] extended opcode 2: set address to 0x40055f <baz+0xf>
|
|
[ 215] set 'is_stmt' to 0
|
|
[ 216] copy
|
|
[ 217] set column to 7
|
|
[ 219] extended opcode 2: set address to 0x400561
|
|
[ 224] extended opcode 1: end of sequence
|
|
|
|
Table at offset 551:
|
|
|
|
Length: 441
|
|
DWARF version: 5
|
|
Prologue length: 56
|
|
Address size: 8
|
|
Segment selector size: 0
|
|
Min instruction length: 1
|
|
Max operations per instruction: 1
|
|
Initial value if 'is_stmt': 1
|
|
Line base: -10
|
|
Line range: 242
|
|
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:
|
|
[path(line_strp)]
|
|
0 /var/tmp/hello (90)
|
|
1 /usr/include (122)
|
|
|
|
File name table:
|
|
[path(line_strp), directory_index(data1)]
|
|
0 world.c (114), 0
|
|
1 world.c (114), 0
|
|
2 hello.h (82), 0
|
|
3 stdlib.h (105), 1
|
|
|
|
Line number statements:
|
|
[ 26b] extended opcode 2: set address to 0x400410 <main>
|
|
[ 276] special opcode 37: address+0 = 0x400410 <main>, line+14 = 15
|
|
[ 277] set column to 1
|
|
[ 279] extended opcode 2: set address to 0x400410 <main>
|
|
[ 284] special opcode 24: address+0 = 0x400410 <main>, line+1 = 16
|
|
[ 285] set column to 3
|
|
[ 287] extended opcode 2: set address to 0x400410 <main>
|
|
[ 292] special opcode 24: address+0 = 0x400410 <main>, line+1 = 17
|
|
[ 293] set column to 3
|
|
[ 295] extended opcode 2: set address to 0x400410 <main>
|
|
[ 2a0] set 'is_stmt' to 0
|
|
[ 2a1] special opcode 21: address+0 = 0x400410 <main>, line-2 = 15
|
|
[ 2a2] set column to 1
|
|
[ 2a4] extended opcode 2: set address to 0x400419 <main+0x9>
|
|
[ 2af] special opcode 25: address+0 = 0x400419 <main+0x9>, line+2 = 17
|
|
[ 2b0] set column to 6
|
|
[ 2b2] extended opcode 2: set address to 0x40041e <main+0xe>
|
|
[ 2bd] set 'is_stmt' to 1
|
|
[ 2be] special opcode 24: address+0 = 0x40041e <main+0xe>, line+1 = 18
|
|
[ 2bf] set column to 5
|
|
[ 2c1] extended opcode 2: set address to 0x40041e <main+0xe>
|
|
[ 2cc] set 'is_stmt' to 0
|
|
[ 2cd] copy
|
|
[ 2ce] set column to 7
|
|
[ 2d0] extended opcode 2: set address to 0x400421 <main+0x11>
|
|
[ 2db] set 'is_stmt' to 1
|
|
[ 2dc] special opcode 27: address+0 = 0x400421 <main+0x11>, line+4 = 22
|
|
[ 2dd] set column to 3
|
|
[ 2df] extended opcode 2: set address to 0x400430 <_start>
|
|
[ 2ea] extended opcode 1: end of sequence
|
|
[ 2ed] extended opcode 2: set address to 0x400570 <calc>
|
|
[ 2f8] special opcode 28: address+0 = 0x400570 <calc>, line+5 = 6
|
|
[ 2f9] set column to 1
|
|
[ 2fb] extended opcode 2: set address to 0x400570 <calc>
|
|
[ 306] special opcode 24: address+0 = 0x400570 <calc>, line+1 = 7
|
|
[ 307] set column to 3
|
|
[ 309] extended opcode 2: set address to 0x400570 <calc>
|
|
[ 314] set 'is_stmt' to 0
|
|
[ 315] copy
|
|
[ 316] set column to 6
|
|
[ 318] extended opcode 2: set address to 0x400575 <calc+0x5>
|
|
[ 323] extended opcode 4: set discriminator to 1
|
|
[ 327] copy
|
|
[ 328] set column to 24
|
|
[ 32a] extended opcode 2: set address to 0x400578 <calc+0x8>
|
|
[ 335] copy
|
|
[ 336] set column to 17
|
|
[ 338] extended opcode 2: set address to 0x40057d <calc+0xd>
|
|
[ 343] extended opcode 4: set discriminator to 0
|
|
[ 347] set 'is_stmt' to 1
|
|
[ 348] special opcode 26: address+0 = 0x40057d <calc+0xd>, line+3 = 10
|
|
[ 349] set column to 3
|
|
[ 34b] extended opcode 2: set address to 0x40057d <calc+0xd>
|
|
[ 356] set 'is_stmt' to 0
|
|
[ 357] copy
|
|
[ 358] set column to 10
|
|
[ 35a] extended opcode 2: set address to 0x400583 <calc+0x13>
|
|
[ 365] set file to 2
|
|
[ 367] copy
|
|
[ 368] set column to 7
|
|
[ 36a] extended opcode 2: set address to 0x400585 <calc+0x15>
|
|
[ 375] set file to 1
|
|
[ 377] copy
|
|
[ 378] set column to 10
|
|
[ 37a] extended opcode 2: set address to 0x400588 <calc+0x18>
|
|
[ 385] set file to 2
|
|
[ 387] set 'is_stmt' to 1
|
|
[ 388] special opcode 20: address+0 = 0x400588 <calc+0x18>, line-3 = 7
|
|
[ 389] set column to 3
|
|
[ 38b] extended opcode 2: set address to 0x400588 <calc+0x18>
|
|
[ 396] special opcode 25: address+0 = 0x400588 <calc+0x18>, line+2 = 9
|
|
[ 397] set column to 3
|
|
[ 399] extended opcode 2: set address to 0x400588 <calc+0x18>
|
|
[ 3a4] set 'is_stmt' to 0
|
|
[ 3a5] special opcode 24: address+0 = 0x400588 <calc+0x18>, line+1 = 10
|
|
[ 3a6] set column to 7
|
|
[ 3a8] extended opcode 2: set address to 0x40058f <calc+0x1f>
|
|
[ 3b3] set 'is_stmt' to 1
|
|
[ 3b4] special opcode 25: address+0 = 0x40058f <calc+0x1f>, line+2 = 12
|
|
[ 3b5] set column to 3
|
|
[ 3b7] extended opcode 2: set address to 0x40058f <calc+0x1f>
|
|
[ 3c2] set 'is_stmt' to 0
|
|
[ 3c3] copy
|
|
[ 3c4] set column to 10
|
|
[ 3c6] extended opcode 2: set address to 0x400598 <calc+0x28>
|
|
[ 3d1] set file to 1
|
|
[ 3d3] special opcode 22: address+0 = 0x400598 <calc+0x28>, line-1 = 11
|
|
[ 3d4] set column to 1
|
|
[ 3d6] extended opcode 2: set address to 0x40059b
|
|
[ 3e1] extended opcode 1: end of sequence
|
|
EOF
|
|
|
|
exit 0
|