diff options
author | Nick Clifton <nickc@redhat.com> | 2020-05-04 13:50:05 +0100 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2020-05-04 13:50:05 +0100 |
commit | 070b775f03ebdab6d0d007787fe19b916af4439c (patch) | |
tree | 92c9989fde303f3bfc75f68cc049f9535a3c2e8f /gas | |
parent | fe05f369f0df7cad0a6500b79879addaad2e364d (diff) | |
download | gdb-070b775f03ebdab6d0d007787fe19b916af4439c.zip gdb-070b775f03ebdab6d0d007787fe19b916af4439c.tar.gz gdb-070b775f03ebdab6d0d007787fe19b916af4439c.tar.bz2 |
GAS: Do not create an entry for the default directory if the directory table is empty. Improve readelf's decoding of empty directory and file name tables.
PR 25917
* dwarf.c (display_debug_lines_decoded): Warn if encountering a
supicious number of entries for DWARF-5 format directory and file
name tables. Do not display file name table header if the table
is empty. Do not allocate space for empty tables.
Diffstat (limited to 'gas')
-rw-r--r-- | gas/ChangeLog | 5 | ||||
-rw-r--r-- | gas/dwarf2dbg.c | 5 |
2 files changed, 6 insertions, 4 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index 20ae817..8d664f5 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,5 @@ +2020-05-04 Nick Clifton <nickc@redhat.com> + 2020-05-04 Andre Vieira <andre.simoesdiasvieira@arm.com> PR gas/25863 @@ -10,6 +12,9 @@ PR 25917 * dwarf2dbg.c (out_dir_and_file_list): Check for the directory table's existence before looking at its entries. + Also do not emit a default directory entry if there are no + directories in use. + * testsuite/gas/elf/pr25917.s: New test source file. * testsuite/gas/elf/pr25917.d: New test driver. * testsuite/gas/elf/elf.exp (run_elf_list_test): Run the new test. diff --git a/gas/dwarf2dbg.c b/gas/dwarf2dbg.c index 213f382..071450e 100644 --- a/gas/dwarf2dbg.c +++ b/gas/dwarf2dbg.c @@ -1981,7 +1981,6 @@ out_dir_and_file_list (void) bfd_boolean emit_filesize = TRUE; /* Output the Directory Table. */ - if (DWARF2_LINE_VERSION >= 5) { out_byte (1); @@ -1993,7 +1992,7 @@ out_dir_and_file_list (void) } /* Emit directory list. */ - if (DWARF2_LINE_VERSION >= 5) + if (DWARF2_LINE_VERSION >= 5 && dirs_in_use > 0) { if (dirs == NULL || dirs[0] == NULL) dir = remap_debug_filename ("."); @@ -2017,7 +2016,6 @@ out_dir_and_file_list (void) out_byte ('\0'); /* Output the File Name Table. */ - if (DWARF2_LINE_VERSION >= 5) { unsigned int columns = 4; @@ -2045,7 +2043,6 @@ out_dir_and_file_list (void) /* The number of format entries to follow. */ out_byte (columns); - /* The format of the file name. */ out_uleb128 (DW_LNCT_path); /* FIXME: it would be better to store these strings in |