| #! /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 mininum 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 |