diff options
| author | Mark Wielaard <[email protected]> | 2018-04-26 11:53:49 +0200 |
|---|---|---|
| committer | Mark Wielaard <[email protected]> | 2018-05-15 11:25:27 +0200 |
| commit | 6ed8b94952ddf155960c799ef76f3048f033e873 (patch) | |
| tree | b9270241542b3575e08f3639829137dee8caaa67 /tests | |
| parent | b9c76ded0f07d270bbb9314fb970bb0afcb71d58 (diff) | |
readelf: Add DWARF5 .debug_line support.
This only changes the parsing of the directory and file name tables.
It does this by sharing the printing of (non-CU based) from data from
the .debug_macro code. Adding support for printing strx[1234] form data
by sharing the code that detects the correct str_offsets_base in libdw.
The header format is also cleaned up a bit so that it better lines out.
Testcases adjusted and new ones added.
Signed-off-by: Mark Wielaard <[email protected]>
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/ChangeLog | 6 | ||||
| -rwxr-xr-x | tests/run-readelf-line.sh | 712 | ||||
| -rwxr-xr-x | tests/run-readelf-zdebug.sh | 20 |
3 files changed, 692 insertions, 46 deletions
diff --git a/tests/ChangeLog b/tests/ChangeLog index b236ee79..16011c80 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,9 @@ +2018-05-09 Mark Wielaard <[email protected]> + + * run-readelf-zdebug.sh: Adjust test output for new header layout. + * run-readelf-line.sh: Likewise. Add new tests for testfile-dwarf-4 + and testfile-dwarf-5. + 2018-05-11 Mark Wielaard <[email protected]> * Makefile.am (check_PROGRAMS): Add get-units-invalid. diff --git a/tests/run-readelf-line.sh b/tests/run-readelf-line.sh index b08752ee..a95e6aa9 100755 --- a/tests/run-readelf-line.sh +++ b/tests/run-readelf-line.sh @@ -1,5 +1,5 @@ #! /bin/sh -# Copyright (C) 2013 Red Hat, Inc. +# 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 @@ -28,15 +28,17 @@ DWARF section [30] '.debug_line' at offset 0x15f6: Table at offset 0: - Length: 83 - DWARF version: 2 - Prologue length: 43 - Minimum instruction length: 1 - Maximum operations per instruction: 1 - Initial value if 'is_stmt': 1 - Line base: -5 - Line range: 14 - Opcode base: 13 + 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 @@ -83,15 +85,17 @@ Line number statements: Table at offset 87: - Length: 72 - DWARF version: 2 - Prologue length: 28 - Minimum instruction length: 1 - Maximum operations per instruction: 1 - Initial value if 'is_stmt': 1 - Line base: -5 - Line range: 14 - Opcode base: 13 + 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 @@ -133,15 +137,17 @@ Line number statements: Table at offset 163: - Length: 106 - DWARF version: 2 - Prologue length: 43 - Minimum instruction length: 1 - Maximum operations per instruction: 1 - Initial value if 'is_stmt': 1 - Line base: -5 - Line range: 14 - Opcode base: 13 + 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 @@ -280,15 +286,17 @@ DWARF section [29] '.debug_line' at offset 0xdf6: Table at offset 0: - Length: 69 - DWARF version: 2 - Prologue length: 30 - Minimum instruction length: 4 - Maximum operations per instruction: 1 - Initial value if 'is_stmt': 1 - Line base: -5 - Line range: 14 - Opcode base: 13 + 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 @@ -508,4 +516,634 @@ DWARF section [29] '.debug_line' at offset 0x171f: 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 diff --git a/tests/run-readelf-zdebug.sh b/tests/run-readelf-zdebug.sh index 28128ad9..878e0ba8 100755 --- a/tests/run-readelf-zdebug.sh +++ b/tests/run-readelf-zdebug.sh @@ -361,15 +361,17 @@ DWARF section [34] '.debug_line' at offset 0x104c: Table at offset 0: - Length: 70 - DWARF version: 2 - Prologue length: 40 - Minimum instruction length: 1 - Maximum operations per instruction: 1 - Initial value if 'is_stmt': 1 - Line base: -5 - Line range: 14 - Opcode base: 13 + Length: 70 + DWARF version: 2 + Prologue length: 40 + Address size: 8 + 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 |
