|
Mark Wielaard |
800b32 |
commit 67363912e9cdba83869a72ff8c4084e7a7e4ab85
|
|
Mark Wielaard |
800b32 |
Author: Mark Wielaard <mark@klomp.org>
|
|
Mark Wielaard |
800b32 |
Date: Sun Feb 21 22:45:51 2021 +0100
|
|
Mark Wielaard |
800b32 |
|
|
Mark Wielaard |
800b32 |
Fix typo in DWARF 5 line table readers
|
|
Mark Wielaard |
800b32 |
|
|
Mark Wielaard |
800b32 |
This typo meant the directory entry was most often zero, which
|
|
Mark Wielaard |
800b32 |
happened to be sometimes correct anyway (since zero is the compdir).
|
|
Mark Wielaard |
800b32 |
So for simple testcases it looked correct. But it would be wrong for
|
|
Mark Wielaard |
800b32 |
compilation units not in the current compdir. Like files compiled with
|
|
Mark Wielaard |
800b32 |
a relative of absolute path.
|
|
Mark Wielaard |
800b32 |
|
|
Mark Wielaard |
800b32 |
The same typo was in both readdwarf.c (read_dwarf2_lineblock) and
|
|
Mark Wielaard |
800b32 |
readdwarf3.c (read_filename_table). read_dwarf2_lineblock also had
|
|
Mark Wielaard |
800b32 |
an extra "dwarf" string in the debug-line output.
|
|
Mark Wielaard |
800b32 |
|
|
Mark Wielaard |
800b32 |
https://bugzilla.redhat.com/show_bug.cgi?id=1927153
|
|
Mark Wielaard |
800b32 |
|
|
Mark Wielaard |
800b32 |
diff --git a/coregrind/m_debuginfo/readdwarf.c b/coregrind/m_debuginfo/readdwarf.c
|
|
Mark Wielaard |
800b32 |
index 88d5d99f1..3996623ed 100644
|
|
Mark Wielaard |
800b32 |
--- a/coregrind/m_debuginfo/readdwarf.c
|
|
Mark Wielaard |
800b32 |
+++ b/coregrind/m_debuginfo/readdwarf.c
|
|
Mark Wielaard |
800b32 |
@@ -683,7 +683,7 @@ void read_dwarf2_lineblock ( struct _DebugInfo* di,
|
|
Mark Wielaard |
800b32 |
directories_count = step_leb128U(&data);
|
|
Mark Wielaard |
800b32 |
/* Read the contents of the Directory table. */
|
|
Mark Wielaard |
800b32 |
if (di->ddump_line)
|
|
Mark Wielaard |
800b32 |
- VG_(printf)(" dwarf The Directory Table%s\n",
|
|
Mark Wielaard |
800b32 |
+ VG_(printf)(" The Directory Table%s\n",
|
|
Mark Wielaard |
800b32 |
directories_count == 0 ? " is empty." : ":" );
|
|
Mark Wielaard |
800b32 |
|
|
Mark Wielaard |
800b32 |
for (n = 0; n < directories_count; n++) {
|
|
Mark Wielaard |
800b32 |
@@ -796,7 +796,7 @@ void read_dwarf2_lineblock ( struct _DebugInfo* di,
|
|
Mark Wielaard |
800b32 |
if (f == p_ndx)
|
|
Mark Wielaard |
800b32 |
name = get_line_str (di, ui, &data, form,
|
|
Mark Wielaard |
800b32 |
debugstr_img, debuglinestr_img);
|
|
Mark Wielaard |
800b32 |
- else if (n == d_ndx)
|
|
Mark Wielaard |
800b32 |
+ else if (f == d_ndx)
|
|
Mark Wielaard |
800b32 |
diridx = get_line_ndx (di, &data, form);
|
|
Mark Wielaard |
800b32 |
else
|
|
Mark Wielaard |
800b32 |
data = skip_line_form (di, ui, data, form);
|
|
Mark Wielaard |
800b32 |
diff --git a/coregrind/m_debuginfo/readdwarf3.c b/coregrind/m_debuginfo/readdwarf3.c
|
|
Mark Wielaard |
800b32 |
index 82bc8f241..60fc40244 100644
|
|
Mark Wielaard |
800b32 |
--- a/coregrind/m_debuginfo/readdwarf3.c
|
|
Mark Wielaard |
800b32 |
+++ b/coregrind/m_debuginfo/readdwarf3.c
|
|
Mark Wielaard |
800b32 |
@@ -2323,7 +2323,7 @@ void read_filename_table( /*MOD*/XArray* /* of UInt* */ fndn_ix_Table,
|
|
Mark Wielaard |
800b32 |
if (f == p_ndx)
|
|
Mark Wielaard |
800b32 |
str = get_line_str (cc->di, cc->is_dw64, &c, form,
|
|
Mark Wielaard |
800b32 |
debugstr_img, debuglinestr_img);
|
|
Mark Wielaard |
800b32 |
- else if (n == d_ndx)
|
|
Mark Wielaard |
800b32 |
+ else if (f == d_ndx)
|
|
Mark Wielaard |
800b32 |
dir_xa_ix = get_line_ndx (cc->di, &c, form);
|
|
Mark Wielaard |
800b32 |
else
|
|
Mark Wielaard |
800b32 |
skip_line_form (cc->di, cc->is_dw64, &c, form);
|