aboutsummaryrefslogtreecommitdiff
path: root/binutils
diff options
context:
space:
mode:
authorTom de Vries <tdevries@suse.de>2020-07-10 11:25:44 +0100
committerNick Clifton <nickc@redhat.com>2020-07-10 11:25:44 +0100
commitaf2b31864802e6ca75b2c98ce4a4a7deb9d5c608 (patch)
tree1a7e44415b65182dba2884bd8e9c9c93ef6e074d /binutils
parentd882c9889312591a8bfdbc1740938780cd4032bd (diff)
downloadgdb-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/ChangeLog7
-rw-r--r--binutils/dwarf.c77
-rw-r--r--binutils/testsuite/binutils-all/dw5.W4
-rw-r--r--binutils/testsuite/binutils-all/objdump.WL2
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 - .*