diff options
author | Tom de Vries <tdevries@suse.de> | 2020-07-10 11:25:44 +0100 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2020-07-10 11:25:44 +0100 |
commit | af2b31864802e6ca75b2c98ce4a4a7deb9d5c608 (patch) | |
tree | 1a7e44415b65182dba2884bd8e9c9c93ef6e074d /binutils | |
parent | d882c9889312591a8bfdbc1740938780cd4032bd (diff) | |
download | gdb-af2b31864802e6ca75b2c98ce4a4a7deb9d5c608.zip gdb-af2b31864802e6ca75b2c98ce4a4a7deb9d5c608.tar.gz gdb-af2b31864802e6ca75b2c98ce4a4a7deb9d5c608.tar.bz2 |
[readelf] Fix end_seq entry in -wL. Specifically stop the display of a line number and is_statement/has-view fields for the End of Sequence operator, as these have no meaning.
binutils* dwarf.c (display_debug_lines_decoded): Don't emit meaningless
information in the end_sequence row.
* testsuite/binutils-all/dw5.W: Update.
* testsuite/binutils-all/objdump.WL: Update.
gas * testsuite/gas/elf/dwarf2-11.d: Update expected output from
readelf's line table decoding.
* testsuite/gas/elf/dwarf2-12.d: Likewise.
* testsuite/gas/elf/dwarf2-13.d: Likewise.
* testsuite/gas/elf/dwarf2-14.d: Likewise.
* testsuite/gas/elf/dwarf2-15.d: Likewise.
* testsuite/gas/elf/dwarf2-16.d: Likewise.
* testsuite/gas/elf/dwarf2-17.d: Likewise.
* testsuite/gas/elf/dwarf2-18.d: Likewise.
* testsuite/gas/elf/dwarf2-19.d: Likewise.
* testsuite/gas/elf/dwarf2-5.d: Likewise.
* testsuite/gas/elf/dwarf2-6.d: Likewise.
* testsuite/gas/elf/dwarf2-7.d: Likewise.
Diffstat (limited to 'binutils')
-rw-r--r-- | binutils/ChangeLog | 7 | ||||
-rw-r--r-- | binutils/dwarf.c | 77 | ||||
-rw-r--r-- | binutils/testsuite/binutils-all/dw5.W | 4 | ||||
-rw-r--r-- | binutils/testsuite/binutils-all/objdump.WL | 2 |
4 files changed, 67 insertions, 23 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog index 9bb68e6..df8b90e 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,10 @@ +2020-07-10 Tom de Vries <tdevries@suse.de> + + * dwarf.c (display_debug_lines_decoded): Don't emit meaningless + information in the end_sequence row. + * testsuite/binutils-all/dw5.W: Update. + * testsuite/binutils-all/objdump.WL: Update. + 2020-07-09 Alan Modra <amodra@gmail.com> * dlltool.c: Remove powerpc PE support and comments. diff --git a/binutils/dwarf.c b/binutils/dwarf.c index bdabd9c..d739230 100644 --- a/binutils/dwarf.c +++ b/binutils/dwarf.c @@ -4988,38 +4988,75 @@ display_debug_lines_decoded (struct dwarf_section * section, strncpy (newFileName, fileName, fileNameLength + 1); } + /* A row with end_seq set to true has a meaningful address, but + the other information in the same row is not significant. + In such a row, print line as "-", and don't print + view/is_stmt. */ if (!do_wide || (fileNameLength <= MAX_FILENAME_LENGTH)) { if (linfo.li_max_ops_per_insn == 1) - printf ("%-35s %11d %#18" DWARF_VMA_FMT "x", - newFileName, state_machine_regs.line, - state_machine_regs.address); + { + if (xop == -DW_LNE_end_sequence) + printf ("%-35s %11s %#18" DWARF_VMA_FMT "x", + newFileName, "-", + state_machine_regs.address); + else + printf ("%-35s %11d %#18" DWARF_VMA_FMT "x", + newFileName, state_machine_regs.line, + state_machine_regs.address); + } else - printf ("%-35s %11d %#18" DWARF_VMA_FMT "x[%d]", - newFileName, state_machine_regs.line, - state_machine_regs.address, - state_machine_regs.op_index); + { + if (xop == -DW_LNE_end_sequence) + printf ("%-35s %11s %#18" DWARF_VMA_FMT "x[%d]", + newFileName, "-", + state_machine_regs.address, + state_machine_regs.op_index); + else + printf ("%-35s %11d %#18" DWARF_VMA_FMT "x[%d]", + newFileName, state_machine_regs.line, + state_machine_regs.address, + state_machine_regs.op_index); + } } else { if (linfo.li_max_ops_per_insn == 1) - printf ("%s %11d %#18" DWARF_VMA_FMT "x", - newFileName, state_machine_regs.line, - state_machine_regs.address); + { + if (xop == -DW_LNE_end_sequence) + printf ("%s %11s %#18" DWARF_VMA_FMT "x", + newFileName, "-", + state_machine_regs.address); + else + printf ("%s %11d %#18" DWARF_VMA_FMT "x", + newFileName, state_machine_regs.line, + state_machine_regs.address); + } else - printf ("%s %11d %#18" DWARF_VMA_FMT "x[%d]", - newFileName, state_machine_regs.line, - state_machine_regs.address, - state_machine_regs.op_index); + { + if (xop == -DW_LNE_end_sequence) + printf ("%s %11s %#18" DWARF_VMA_FMT "x[%d]", + newFileName, "-", + state_machine_regs.address, + state_machine_regs.op_index); + else + printf ("%s %11d %#18" DWARF_VMA_FMT "x[%d]", + newFileName, state_machine_regs.line, + state_machine_regs.address, + state_machine_regs.op_index); + } } - if (state_machine_regs.view) - printf (" %6u", state_machine_regs.view); - else - printf (" "); + if (xop != -DW_LNE_end_sequence) + { + if (state_machine_regs.view) + printf (" %6u", state_machine_regs.view); + else + printf (" "); - if (state_machine_regs.is_stmt) - printf (" x"); + if (state_machine_regs.is_stmt) + printf (" x"); + } putchar ('\n'); state_machine_regs.view++; diff --git a/binutils/testsuite/binutils-all/dw5.W b/binutils/testsuite/binutils-all/dw5.W index 2eccb03..ebeda65 100644 --- a/binutils/testsuite/binutils-all/dw5.W +++ b/binutils/testsuite/binutils-all/dw5.W @@ -350,10 +350,10 @@ CU: ./main.c: File name Line number Starting address View Stmt main.c 6 0x1234 x main.c 6 0x12346 x -main.c 6 0x1234 x +main.c - 0x1234 main.c 5 0x1234 x main.c 5 0x1234 x -main.c 5 0x1234 x +main.c - 0x1234 diff --git a/binutils/testsuite/binutils-all/objdump.WL b/binutils/testsuite/binutils-all/objdump.WL index 954fb3e..e16d5ba 100644 --- a/binutils/testsuite/binutils-all/objdump.WL +++ b/binutils/testsuite/binutils-all/objdump.WL @@ -12,5 +12,5 @@ file1\.c 1 .* \./dw2-decodedline\.c:\[\+\+\] dw2-decodedline\.c 2 .* -dw2-decodedline\.c 2 .* +dw2-decodedline\.c - .* |