#! /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 .
. $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
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
[ 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
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
[ 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
# A .debug_line table with minimum instruction length > 1.
#
# = hello.c
# #include
#
# 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
[ 33] special opcode 22: address+0 = 0x100005a4 , line+4 = 5
[ 34] set column to 27
[ 36] set prologue end flag
[ 37] special opcode 19: address+0 = 0x100005a4 , line+1 = 6
[ 38] set column to 8
[ 3a] special opcode 47: address+8 = 0x100005ac , line+1 = 7
[ 3b] set 'is_stmt' to 0
[ 3c] advance line by constant -7 to 0
[ 3e] special opcode 32: address+4 = 0x100005b0 , line+0 = 0
[ 3f] set column to 3
[ 41] set 'is_stmt' to 1
[ 42] special opcode 108: address+24 = 0x100005c8 , line+6 = 6
[ 43] special opcode 76: address+16 = 0x100005d8 , 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
6:27 S P 0 0 0 0x00000000100005a4
7:8 S 0 0 0 0x00000000100005ac
0:8 0 0 0 0x00000000100005b0
6:3 S 0 0 0 0x00000000100005c8
8:3 S 0 0 0 0x00000000100005d8
8:3 S * 0 0 0 0x00000000100005f7
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
22:1 S 0 0 0 0x0000000000400510
22:3 0 0 0 0x0000000000400510
25:6 0 0 0 0x0000000000400514
25:34 S 0 0 0 0x000000000040051a
25:3 0 0 0 0x000000000040051a
26:34 0 0 0 0x000000000040051e
25:1 1 0 0 0x0000000000400528
/var/tmp/hello/hello.h (mtime: 0, length: 0)
7:18 S 0 0 0 0x000000000040052b
9:3 S 0 0 0 0x000000000040052b
9:3 0 0 0 0x000000000040052b
10:6 S 0 0 0 0x000000000040052f
10:5 0 0 0 0x000000000040052f
12:7 S 0 0 0 0x0000000000400531
/var/tmp/hello/hello.c (mtime: 0, length: 0)
10:3 S 0 0 0 0x0000000000400531
12:3 S 0 0 0 0x0000000000400531
12:3 0 0 0 0x0000000000400531
13:6 S 0 0 0 0x0000000000400535
13:5 0 0 0 0x0000000000400535
15:7 S 0 0 0 0x0000000000400539
22:3 S 0 0 0 0x0000000000400539
22:3 0 0 0 0x0000000000400539
23:6 S 0 0 0 0x000000000040053d
23:5 0 0 0 0x000000000040053d
9:12 S 0 0 0 0x0000000000400550
10:1 S 0 0 0 0x0000000000400550
12:3 S 0 0 0 0x0000000000400550
12:3 0 0 0 0x0000000000400550
13:9 0 0 0 0x0000000000400556
15:7 S 0 0 0 0x000000000040055f
15:3 0 0 0 0x000000000040055f
15:7 * 0 0 0 0x0000000000400560
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
16:1 S 0 0 0 0x0000000000400410
17:3 S 0 0 0 0x0000000000400410
15:3 0 0 0 0x0000000000400410
17:1 0 0 0 0x0000000000400419
18:6 S 0 0 0 0x000000000040041e
18:5 0 0 0 0x000000000040041e
22:7 S 0 0 0 0x0000000000400421
22:3 S * 0 0 0 0x000000000040042f
6:0 S 0 0 0 0x0000000000400570
7:1 S 0 0 0 0x0000000000400570
7:3 0 0 0 0x0000000000400570
7:6 1 0 0 0x0000000000400575
7:24 0 0 0 0x0000000000400578
10:17 S 0 0 0 0x000000000040057d
10:3 0 0 0 0x000000000040057d
/var/tmp/hello/hello.h (mtime: 0, length: 0)
10:10 0 0 0 0x0000000000400583
/var/tmp/hello/world.c (mtime: 0, length: 0)
10:7 0 0 0 0x0000000000400585
/var/tmp/hello/hello.h (mtime: 0, length: 0)
7:10 S 0 0 0 0x0000000000400588
9:3 S 0 0 0 0x0000000000400588
10:3 0 0 0 0x0000000000400588
12:7 S 0 0 0 0x000000000040058f
12:3 0 0 0 0x000000000040058f
/var/tmp/hello/world.c (mtime: 0, length: 0)
11:10 0 0 0 0x0000000000400598
11:1 * 0 0 0 0x000000000040059a
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
22:1 S 0 0 0 0x0000000000400510
22:3 0 0 0 0x0000000000400510
25:6 0 0 0 0x0000000000400514
25:34 S 0 0 0 0x000000000040051a
25:3 0 0 0 0x000000000040051a
26:34 0 0 0 0x000000000040051e
25:1 1 0 0 0x0000000000400528
/var/tmp/hello/hello.h (mtime: 0, length: 0)
7:18 S 0 0 0 0x000000000040052b
9:3 S 0 0 0 0x000000000040052b
9:3 0 0 0 0x000000000040052b
10:6 S 0 0 0 0x000000000040052f
10:5 0 0 0 0x000000000040052f
12:7 S 0 0 0 0x0000000000400531
/var/tmp/hello/hello.c (mtime: 0, length: 0)
10:3 S 0 0 0 0x0000000000400531
12:3 S 0 0 0 0x0000000000400531
12:3 0 0 0 0x0000000000400531
13:6 S 0 0 0 0x0000000000400535
13:5 0 0 0 0x0000000000400535
15:7 S 0 0 0 0x0000000000400539
22:3 S 0 0 0 0x0000000000400539
22:3 0 0 0 0x0000000000400539
23:6 S 0 0 0 0x000000000040053d
23:5 0 0 0 0x000000000040053d
9:12 S 0 0 0 0x0000000000400550
10:1 S 0 0 0 0x0000000000400550
12:3 S 0 0 0 0x0000000000400550
12:3 0 0 0 0x0000000000400550
13:9 0 0 0 0x0000000000400556
15:7 S 0 0 0 0x000000000040055f
15:3 0 0 0 0x000000000040055f
15:7 * 0 0 0 0x0000000000400560
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
16:1 S 0 0 0 0x0000000000400410
17:3 S 0 0 0 0x0000000000400410
15:3 0 0 0 0x0000000000400410
17:1 0 0 0 0x0000000000400419
18:6 S 0 0 0 0x000000000040041e
18:5 0 0 0 0x000000000040041e
22:7 S 0 0 0 0x0000000000400421
22:3 S * 0 0 0 0x000000000040042f
6:0 S 0 0 0 0x0000000000400570
7:1 S 0 0 0 0x0000000000400570
7:3 0 0 0 0x0000000000400570
7:6 1 0 0 0x0000000000400575
7:24 0 0 0 0x0000000000400578
10:17 S 0 0 0 0x000000000040057d
10:3 0 0 0 0x000000000040057d
/var/tmp/hello/hello.h (mtime: 0, length: 0)
10:10 0 0 0 0x0000000000400583
/var/tmp/hello/world.c (mtime: 0, length: 0)
10:7 0 0 0 0x0000000000400585
/var/tmp/hello/hello.h (mtime: 0, length: 0)
7:10 S 0 0 0 0x0000000000400588
9:3 S 0 0 0 0x0000000000400588
10:3 0 0 0 0x0000000000400588
12:7 S 0 0 0 0x000000000040058f
12:3 0 0 0 0x000000000040058f
/var/tmp/hello/world.c (mtime: 0, length: 0)
11:10 0 0 0 0x0000000000400598
11:1 * 0 0 0 0x000000000040059a
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
[ 8c] special opcode 43: address+0 = 0x400510 , line+20 = 21
[ 8d] set column to 1
[ 8f] extended opcode 2: set address to 0x400510
[ 9a] special opcode 24: address+0 = 0x400510 , line+1 = 22
[ 9b] set column to 3
[ 9d] extended opcode 2: set address to 0x400510
[ a8] set 'is_stmt' to 0
[ a9] copy
[ aa] set column to 6
[ ac] extended opcode 2: set address to 0x400514
[ b7] special opcode 26: address+0 = 0x400514 , line+3 = 25
[ b8] set column to 34
[ ba] extended opcode 2: set address to 0x40051a
[ c5] set 'is_stmt' to 1
[ c6] copy
[ c7] set column to 3
[ c9] extended opcode 2: set address to 0x40051a
[ d4] set 'is_stmt' to 0
[ d5] copy
[ d6] set column to 34
[ d8] extended opcode 2: set address to 0x40051e
[ e3] special opcode 24: address+0 = 0x40051e , line+1 = 26
[ e4] set column to 1
[ e6] extended opcode 2: set address to 0x400528
[ f1] extended opcode 4: set discriminator to 1
[ f5] special opcode 22: address+0 = 0x400528 , line-1 = 25
[ f6] set column to 18
[ f8] extended opcode 2: set address to 0x40052b
[ 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
[ 116] special opcode 25: address+0 = 0x40052b , line+2 = 9
[ 117] set column to 3
[ 119] extended opcode 2: set address to 0x40052b
[ 124] set 'is_stmt' to 0
[ 125] copy
[ 126] set column to 6
[ 128] extended opcode 2: set address to 0x40052f
[ 133] extended opcode 4: set discriminator to 0
[ 137] set 'is_stmt' to 1
[ 138] special opcode 24: address+0 = 0x40052f , line+1 = 10
[ 139] set column to 5
[ 13b] extended opcode 2: set address to 0x40052f
[ 146] set 'is_stmt' to 0
[ 147] copy
[ 148] set column to 7
[ 14a] extended opcode 2: set address to 0x400531
[ 155] set 'is_stmt' to 1
[ 156] special opcode 25: address+0 = 0x400531 , line+2 = 12
[ 157] set column to 3
[ 159] extended opcode 2: set address to 0x400531
[ 164] set file to 1
[ 166] special opcode 21: address+0 = 0x400531 , line-2 = 10
[ 167] set column to 3
[ 169] extended opcode 2: set address to 0x400531
[ 174] special opcode 25: address+0 = 0x400531 , line+2 = 12
[ 175] set column to 3
[ 177] extended opcode 2: set address to 0x400531
[ 182] set 'is_stmt' to 0
[ 183] copy
[ 184] set column to 6
[ 186] extended opcode 2: set address to 0x400535
[ 191] set 'is_stmt' to 1
[ 192] special opcode 24: address+0 = 0x400535 , line+1 = 13
[ 193] set column to 5
[ 195] extended opcode 2: set address to 0x400535
[ 1a0] set 'is_stmt' to 0
[ 1a1] copy
[ 1a2] set column to 7
[ 1a4] extended opcode 2: set address to 0x400539
[ 1af] set 'is_stmt' to 1
[ 1b0] special opcode 25: address+0 = 0x400539 , line+2 = 15
[ 1b1] set column to 3
[ 1b3] extended opcode 2: set address to 0x400539
[ 1be] special opcode 30: address+0 = 0x400539 , line+7 = 22
[ 1bf] set column to 3
[ 1c1] extended opcode 2: set address to 0x400539
[ 1cc] set 'is_stmt' to 0
[ 1cd] copy
[ 1ce] set column to 6
[ 1d0] extended opcode 2: set address to 0x40053d
[ 1db] set 'is_stmt' to 1
[ 1dc] special opcode 24: address+0 = 0x40053d , line+1 = 23
[ 1dd] set column to 5
[ 1df] extended opcode 2: set address to 0x40053d
[ 1ea] set 'is_stmt' to 0
[ 1eb] copy
[ 1ec] set column to 12
[ 1ee] extended opcode 2: set address to 0x400550
[ 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
[ 20a] special opcode 24: address+0 = 0x400550 , line+1 = 10
[ 20b] set column to 3
[ 20d] extended opcode 2: set address to 0x400550
[ 218] special opcode 25: address+0 = 0x400550 , line+2 = 12
[ 219] set column to 3
[ 21b] extended opcode 2: set address to 0x400550
[ 226] set 'is_stmt' to 0
[ 227] copy
[ 228] set column to 9
[ 22a] extended opcode 2: set address to 0x400556
[ 235] special opcode 24: address+0 = 0x400556 , line+1 = 13
[ 236] set column to 7
[ 238] extended opcode 2: set address to 0x40055f
[ 243] set 'is_stmt' to 1
[ 244] special opcode 25: address+0 = 0x40055f , line+2 = 15
[ 245] set column to 3
[ 247] extended opcode 2: set address to 0x40055f
[ 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
[ 2bc] special opcode 37: address+0 = 0x400410 , line+14 = 15
[ 2bd] set column to 1
[ 2bf] extended opcode 2: set address to 0x400410