[PATCH] [gas] Fix file 0 dir with -gdwarf-5
Tom de Vries
tdevries@suse.de
Fri Nov 26 07:33:07 GMT 2021
In out_dir_and_file_list, if file 0 is copied from file 1, only the filename
is copied, and the dir and md5 fields are left to their default values.
Fix this by adding the copy of the dir and md5 fields.
gas/ChangeLog:
2021-11-26 Tom de Vries <tdevries@suse.de>
PR 28629
* dwarf2dbg.c (out_dir_and_file_list): When copying file 1 to file 0,
also copy dir and md5 fields.
* testsuite/gas/i386/dwarf5-line-4.d: Adjust expected output.
---
gas/dwarf2dbg.c | 10 ++++++++--
gas/testsuite/gas/i386/dwarf5-line-4.d | 2 +-
2 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/gas/dwarf2dbg.c b/gas/dwarf2dbg.c
index 256412f9c79..7300bfe2648 100644
--- a/gas/dwarf2dbg.c
+++ b/gas/dwarf2dbg.c
@@ -2123,7 +2123,7 @@ out_dir_and_file_list (segT line_seg, int sizeof_offset)
size_t size;
const char *dir;
char *cp;
- unsigned int i;
+ unsigned int i, j;
bool emit_md5 = false;
bool emit_timestamps = true;
bool emit_filesize = true;
@@ -2275,7 +2275,13 @@ out_dir_and_file_list (segT line_seg, int sizeof_offset)
.file 0 directive. If that isn't used, but file 1 is,
then use that as main file name. */
if (DWARF2_LINE_VERSION >= 5 && i == 0 && files_in_use >= 1 && files[0].filename == NULL)
- files[0].filename = files[1].filename;
+ {
+ files[0].filename = files[1].filename;
+ files[0].dir = files[1].dir;
+ if (emit_md5)
+ for (j = 0; i < NUM_MD5_BYTES; ++j)
+ files[0].md5[j] = files[1].md5[j];
+ }
else
files[i].filename = "";
if (DWARF2_LINE_VERSION < 5 || i != 0)
diff --git a/gas/testsuite/gas/i386/dwarf5-line-4.d b/gas/testsuite/gas/i386/dwarf5-line-4.d
index 30e1bb2bb89..a3af48eda8c 100644
--- a/gas/testsuite/gas/i386/dwarf5-line-4.d
+++ b/gas/testsuite/gas/i386/dwarf5-line-4.d
@@ -38,7 +38,7 @@ Raw dump of debug contents of section \.z?debug_line:
The File Name Table \(offset 0x.*, lines 2, columns 2\):
Entry Dir Name
- 0 0 \(indirect line string, offset: 0x.*\): dwarf5-line-4.s
+ 0 1 \(indirect line string, offset: 0x.*\): dwarf5-line-4.s
1 1 \(indirect line string, offset: 0x.*\): dwarf5-line-4.s
Line Number Statements:
base-commit: c0f9d658279d4d352672e283df53c1072925fc97
--
2.31.1
More information about the Binutils
mailing list